android 知識雜記

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"這個。

相關文章
相關標籤/搜索