《Android第一行代碼》筆記

來源:互聯網
上載者:User

標籤:android   第一行代碼   心得   技巧   超低空   

學習Android開發差不多有兩年時間了,期間也做了大大小小的一些項目。近來抽出閑暇想把Android基礎強化一下,之前在網上看到了郭霖郭大神的幾篇部落格,從中受益不少。於是花了近一周時間看完了郭神的一本Android教材——《Android第一行代碼》。這本書相比其他教材個人感覺更為基礎,內容很實用。看完之後我也有一些收穫,學到了一些可以很好的運用到實際中的Android小技巧,下面從中選出我認為很有價值的地方做個記錄。同時歡迎各位指正補充~~

1、查看當前介面處於哪個Activity。

很多時候當我們接手一個較為複雜的原始碼的時候,裡面會有很多個Acvitity。此時我們往往很難從中找出哪個介面對應哪個源碼,這無疑會降低我們的開發效率。下面介紹書中一個小技巧:
1. 編寫一個新Activity如BaseActivity去繼承Activity,代碼如下:

public  class  BaseActivity extends Activity{           @Override           protected void onCreate(Bundle savedInstanceState)           {                        super.onCreate(savedInstanceState);                        Log.d("BaseActivity", getClass().getSimpleName());           }}
  1. 讓工程裡所有的Activity都繼承自BaseActivity;
  2. 點擊進入你想查看代碼的介面,同時觀察LogCat中的輸出,列印出的資訊就是相應的Activity的類名了。
個人心得:看到這裡,也許你會覺得,如果拿到一個源碼工程,然後進去一個個的改還是會很麻煩。我認為作者在這裡主要是想介紹這樣一種方法,我們在編程的時候可以考慮加入這樣一種技巧,這樣可以更好的與人合作一個項目。2、當啟動一個需要傳遞資料的Activity時,避免參數混淆。

大家對Intent的都很熟悉,他是Android系統的搬運工。當我們啟動一個Acivity並希望向它傳遞一些資料,這時候通常都會用到intent。
一個項目中可能會有很多個Activity都需要傳遞資料,而開發人員完全有可能不確定這些Activity分別要傳遞什麼資料,這時候我們可以用一個技巧來規範這樣一種“通訊協定”。

public class AnotherActivity extends BaseActivity{        public static void actionStart(Context context,String val1,String val2)        {                  Intent intent = new Intent(context, AnotherActivity.class);                  intent.putExtra("val1", val1);                  intent.putExtra("val2", val2);                  context.startActivity(intent);        }}

這樣一來,在使用的過程中,當需要跳轉的時候可以用以下代碼

AnotherActivity.actionStart(FirstActivity.this, "val1", "val2");
個人心得:個人覺得這是一個很不錯的習慣,如果系統中帶參數的跳轉比較多就應該將跳轉全部換成統一規範,這樣可以減少合作開發中不必要的麻煩。3、TableLayout的使用

TableLayout是在開發中很少用到的一個布局。當然對於這個控制項有幾個地方我覺得也需要注意。
- TableRow標籤(TableLayout的一行)中的控制項是不能指定寬度的。
- 正由於TableRow不能設定寬度當需要布局自動展開寬度時,可以通過在TableLayout標籤下設定

android:stretchColunms="1"

屬性來指定某一列被展開解決(以上是指定展開第二列)。
- 當某一行少一列資料的時候,最後會多出一列的空白。如果希望系統自動展開空間佔滿這一行,可以在當前行的某個控制項標籤下設定:

android:layout_span="2"

這樣一來該控制項就會佔2個位置。

個人心得:在我所做過的項目中,尚未用過TableLayout,不過作為一個Android開發人員,應該對其有一定的瞭解,在恰當的時候能夠很好的使用之。4、自訂繼承ArrayAdapter的適配器

我們在用listview的時候都會用到適配器,Android為我們做了兩個常用的適配器:SimpleAdapter和ArrayAdapter等,當我們有特殊要求的時候需要自訂一個適配器繼承自BaseAdapter,這樣可以更加靈活的完成我們需要的特殊功能。但其實大多時候我們可以編寫一個繼承自ArrayAdapter的適配器,這樣更加簡單:

public class MCAdapter extends ArrayAdapter<Fruit> {    private int resourceId;    public FruitAdapter(Context context, int textViewResourceId,            List<Fruit> objects) {        super(context, textViewResourceId, objects);        resourceId = textViewResourceId;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ... ...        return view;    }

這樣一來,我們只需要重寫getView這樣一個方法,而如果是繼承自BaseAdapter,我們需要至少重寫4個方法。可以是我們的代碼更加簡化。

個人心得:也許這個大家都知道吧, 反正我以前都是自訂配接器繼承自BaseAdapter,然後重寫4個方法,其中3個都是用不上的。。5、Fragment回退棧

這裡只是想記錄一個Fragment的方法:transaction.addToBackStack(null);

6、Broadcast Receiver
  • 廣播接收器類中不允許開啟線程
  • 發送有序廣播:sendOrderedBroadcast
  • 在廣播接收器中註冊有序廣播優先順序:
              <intent-filter **android:priority="50">              ... ...              <intent/>      <receive/>
  • 阻止廣播:abortBroadcast();
  • 本地廣播:LocalBroadcastManager.sendBroadcast(intent);(無法用靜態註冊方式)
個人心得:廣播接收器是很常用的。其中有序廣播的優先順序由應用自己來定這一點讓我很詫異,那豈不是又給了應用程式漏洞可鑽?在以前應用程式要攔截簡訊都是通過設定更高的廣播優先順序,然後阻斷廣播來實現,但是在Android4.4之後,加入了預設簡訊管理功能,這使得使用者來決定誰來管理簡訊、電話本等等。看來Google也發現了這個潛在的問題。7、調用系統相機

在使用系統相機的過程中,我們可以通過startActivityForResult啟動相機,從而接收拍照成功與否的傳回值。並且可以對拍照後的圖片進行裁剪。
-啟動相機拍照:

Intent intent = new intent("android.media.action.IMAGE_CAPTURE");intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);startActivityForResult(intent, TAKE_PHOTO);
  • 拍照完成後裁剪:
Intent intent = new intent("android.media.action.CROP");intent.setDataAndType(imageUri, "image/*");intent.putExtra("scale", true);intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);startActivityForResult(intent, CROP_PHOTO);
個人心得:這裡主要是對系統中的action的瞭解程度以及對action的參數的熟悉。詳見Android action大全

好了,以上是我在讀這本書中所收穫的一些東西,坐著提供的一些小技巧如果可以運用得當,可以很好的協助我們開發項目,提高我們的效率。今後我也會不斷加入所學的實用技巧。也歡迎大家對內容進行指正、補充。謝謝!

                                                                                                                 ——超低空

《Android第一行代碼》筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.