Android 開發技巧總結

來源:互聯網
上載者:User

標籤:android   des   style   java   color   strong   

1.項目中設定每個activity的啟動模式(如果堆棧中存在此activity就會重用,並提到棧頂,不會建立新的activity) 

android:launchMode="singleTask"

2.如果介面中的布局被彈出的軟鍵盤改變,則在對應的activity中加入如下代碼即可。

android:windowSoftInputMode="adjustPan|stateHidden"

3.去掉ScrollView拉倒邊緣時的效果:

scrollView.setOverScrollMode(View.OVER_SCROLL_NEVER);

去掉listview和viewpager拉倒邊緣時的效果

android:overScrollMode="never"

4.去掉gridview的item點擊效果

android:listSelector="@android:color/transparent"

或者在代碼中實現:

gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));

5.在ScrollView放入完整顯示的listview和gridview,在重寫完預設的三個方法以後,再重寫onMeasure()方法。重寫listview和gridview

public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)  

    {

       int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);  

       super.onMeasure(widthMeasureSpec, expandSpec);  

}

6.用Afinal向資料庫中存取資料時,定義的類如果有id屬性不要設定id的值,afinal預設的資料庫中有id屬性。

7.匹配資料時,認真看好參數,不要浪費不必要的時間。

8. onActivityResult()發生在onResume()之前。

9.擷取gridview或listview的item項

因為在適配器中已經配置了如下內容

private List<SortModel> list;ride

public Object getItem(int position) {

return list.get(position);

}

擷取每一項時的方法如下:

gridView.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

// TODO Auto-generated method stub

SortModel model = (SortModel) arg0.getItemAtPosition(arg2);

}

});

10.如果以某個時間點判斷第一次下載並儲存到資料庫中的某些內容是否需要更新的時候,一定要確保需要資料下載成功以後再將這個時間點進行儲存,而且要放到每次啟動一定會執行的地方去執行。

12.Alt+Shift+J javadoc的快捷產生方式,但是游標要放在類中。

13.如果布局中很多地方都長一樣,可以抽取成一個style
14.如果嵌套太多,導致閱讀性降低,可以用include 包含一個布局

  1. <!-- include標籤內設定id屬性後(android:id),其引用的布局layout內的id屬性就不起作用了,懷疑是其引用的layout外層包裹了一層include標籤   
  2. 或者是覆蓋了其內的屬性id-->  
  3. <!-- 如果沒有include標籤,所有布局代碼都寫在一個xml檔案中,介面會顯得很冗餘,可讀性很差。而且介面載入的時候是按照順序載入的,前面的布局不能  
  4. 調用其後面的布局id。而採用include後,一個include中可以引用其後的include中的布局id屬性 -->  
  5. <include android:id="@id/titleLayout" layout="@layout/app_title" />  


15.如果在activity中 共性太多,可以抽取出一個父類,一般叫baseActivity
16.如果要做適配,根據當前手機螢幕的大小(高在前,寬在後)建立一個values 檔案夾,同時在dimens 檔案夾中配置好大小。
17.如果想在按下手機的後退鍵,無效,可以在繼承activity類 中  重寫 onKeyDown  然後返回將傳回值設定為true。

18.如果一進入activity就彈出鍵盤的解決方案:

阻止一進入Activity,editText就獲得焦點彈出IME對話方塊,只需要在AndroidManifest.xml相應的activity標籤中加入下面這句話即可實現。

android:windowSoftInputMode="stateHidden|adjustResize"

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);//預設不彈出軟鍵盤

19.關於visibility的設定,invisivible是不可見但佔據著位置,gone不僅不可見而且完全消失,不佔據位置。

20.在eclipse中匯入github的項目,基本就是samples和library。

1)先將samples和library匯入到androidSDK的samples的列表下(如android-17中)

2)右鍵newèothers,然後選擇如下

 

如果放到了android-17中就在對應的地方打鉤。

 

然後找到相應的資料匯入即可。

21.設定沒有標題列

requestWindowFeature(Window.FEATURE_NO_TITLE);

22.表徵圖

hdpi 72*72

ldpi 32*32

mdpi 48*48

xhdpi 96*96

xxhdpi 144*144

23.寫Edittext的時候,有的手機沒有游標的問題的解決,這句話寫上就行了。

android:textCursorDrawable="@null"

24. 去掉ImageView的歎號

android:contentDescription="@string/Image"

去掉LinearLayout的異常

android:baselineAligned="false"

25.progressbar可以設定通過返回鍵消失。

dialog = ProgressDialog.show(context, str1, str2, false, true);

最後一個boolean值設定為true即可。

取消的時候用dialog.cancel();

26.從網路載入資料的時候,顯示到頁面,一定要等資料載入成功以後再顯示相應的控制項。

27.如果定義了一個類,以後要用到這個類的屬性的時候,即使初始化了沒有值的情況下也會報null 指標的,用之前一定要保證有值。

 

People people = new People();

這樣寫people就不為空白。

 

People peoplea = new People();

peoplea.setName("123");//如果設定了name屬性,則下面不報錯,否則會報null 指標異常,因為沒有給name賦值,peoplea.getName()預設的值為null;

if(peoplea.getName().equals("123")){

Log.e("", "沒有報錯,類為空白!");

}else{

Log.e("", "沒有報錯,類不為空白!"+peoplea.getAge());

}

 

類用的時候:

People people = null ;

if(people == null){//people此時為null,null是不能與任何字串進行equals判斷的,否則會報null 指標異常。

Log.e("", "沒有報錯,類為空白!");

}

28.百度地圖的安全碼是eclipse的shal值,擷取key值的時候的操作

擷取方法:Window èPreferencesèAndroidèBuild

然後在後面+;+包名,即可申請成功。

29.在fragment中用afinal架構的時候,在失敗的時候彈出的toast不要用getActivity()有時候會報null 指標。

30.程式中只要有需要耗時的操作,就加一個可以取消的dialog。

31.類未賦值的時候就是null,如:private String str;

賦值了就不是null了,private String str = "";

此時就是長度為0的字串。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.