1.在listview中添加頭部時要在listview添加數據以前添加,不然會把添加的頭部當場第一個item。從而報錯。html
2.ImageView中使用android:scaleType="centerCrop"表示按比例擴大圖片的size居中顯示,使得圖片長(寬)等於或大於View的長(寬)。如下是其包含的類型: CENTER /center 按圖片的原來size居中顯示,當圖片長/寬超過View的長/寬,則截取圖片的居中部分顯示android
CENTER_CROP / centerCrop 按比例擴大圖片的size居中顯示,使得圖片長(寬)等於或大於View的長(寬)緩存
CENTER_INSIDE / centerInside 將圖片的內容完整居中顯示,經過按比例縮小或原來的size使得圖片長/寬等於或小於View的長/寬異步
FIT_CENTER / fitCenter 把圖片按比例擴大/縮小到View的寬度,居中顯示ide
FIT_END / fitEnd 把圖片按比例擴大/縮小到View的寬度,顯示在View的下部分位置佈局
FIT_START / fitStart 把圖片按比例擴大/縮小到View的寬度,顯示在View的上部分位置post
FIT_XY / fitXY 把圖片不按比例擴大/縮小到View的大小顯示字體
MATRIX / matrix 用矩陣來繪製,動態縮小放大圖片來顯示。動畫
佈局裏添加android:scaleType="fitXY"能夠將圖片按照指定的大小在View中顯示,拉伸顯示圖片,不保持原比例,填滿Viewui
3.在Dialog中監聽返回鍵時須要判斷按下仍是彈起,不然會運行兩次。
/* * 對Dialog物理返回鍵的監聽 */ OnKeyListener backListener = new OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0 && event.getAction() == KeyEvent.ACTION_DOWN) { deleteActivity();// 執行關閉時的動畫效果 return true; } return false; } };
固然須要添加進Dialog中
dialog.setOnKeyListener(backListener);
4.動態改變字體顏色 通常使用html改變,可是這種方法改變的固定的字體
Html.fromHtml("<font color=\"#ff0000\">紅色</font>其它顏色")
動態的字體使用SpannableStringBuilder,以下:
/** * 更改字體大小和顏色 * size是像素大小 * start字符串開始改變的位置 */ public static SpannableString changStr(String str, int size, int color, int start){ SpannableString spanString = new SpannableString(str); //改變其顏色 ForegroundColorSpan span = new ForegroundColorSpan(color); spanString.setSpan(span, start, str.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); //改變其大小 AbsoluteSizeSpan abspan = new AbsoluteSizeSpan(size, false); spanString.setSpan(abspan, start, spanString.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); return spanString; }
5.setClickable 設置爲true時,代表控件能夠點擊,若是爲false,就不能點擊;「點擊」適用於鼠標、鍵盤按鍵、遙控器等; 注意,setOnClickListener方法會默認把控件的setClickable設置爲true。這就是爲何會出現設置爲true了,可是沒有效果
setEnabled 使能控件,若是設置爲false,該控件永遠不會活動,無論設置爲何屬性,都無效; 設置爲true,代表激活該控件,控件處於活動狀態,處於活動狀態,就能響應事件了,好比觸摸、點擊、按鍵事件等; setEnabled就至關於總開關同樣,只有總開關打開了,才能使用其餘事件。
setFocusable 使能控件得到焦點,設置爲true時,並非說馬上得到焦點,要想馬上得到焦點,得用requestFocus; 使能得到焦點,就是說具有得到焦點的機會、能力,當有焦點在控件之間移動時,控件就有這個機會、能力獲得焦點。
6.滑動裏面加判斷條件時不能加的太多(如ontouch監聽裏面判斷點擊仍是滑動時),不然沒有效果反而形成阻擋,同一個if裏能夠用||不要用&&
7.在引用res/目錄下的文件的時候最好是經過getResource()引用,若是getResource打不出來能夠經過Context.getResource()的方式。
8.安卓定時器
// 等待500ms在執行動畫 Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { startAnima(true);// 開始動畫 } }, 500);
/**計算商品詳情頁面主圖的高度*/ int ww = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int hh = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); detail_list_img.measure(ww, hh); detail_main_pic_height = detail_list_img.getMeasuredHeight();
經過這種方式能夠直接計算控件的高度,detail_list_img是ImageView控件。\
10.通常在異步加載大量數據時,須要添加一個緩存的list集合,這樣能夠避免其adapter刷新時listview沒有刷新的問題出現,那麼在請求數據時緩存是要刪掉的,可是真實的list集合是在請求成功時,根據必定的條件再清空,而後把緩存的新數據添加進真實的list集合.
11.在使用setResult()方法時,要在finish()當前頁面以前寫.
12.在Fragment中應當使用getActivity()方法獲取當前Activity對象. getContext()表示的是獲取當前View所在的對象.
13.在父佈局中(如LinearLayout)使用
android:focusable="true" android:focusableInTouchMode="true"
這兩個屬性,能夠避免在首次進入頁面時彈出軟鍵盤和EditText默認獲取焦點
14.在使用listview監聽setOnItemLongClickListener時若是沒有反應,檢查item裏面是否含有imagview,button等相似控件獲取焦點的寫法,如focusable="true"的寫法,其實也就是item裏面焦點的操做被控制了,不會再傳到listview了。若是這些都不行,那就在item裏面添加android:longClickable="false"這個。