原文出處: liukun (@TheFresher ) html
PS:本文類容來自我在知乎上對Android開發中,有哪些讓你以爲相見恨晚的方法、類或接口?這一問題的回答,目前就總結這些,往後如有新的發現,隨時補充。歡淫點贊。java
- getParent().requestDisallowInterceptTouchEvent(true);剝奪父view 對touch 事件的處理權,誰用誰知道。
- ArgbEvaluator.evaluate(float fraction, Object startValue, Object endValue); 用於根據一個起始顏色值和一個結束顏色值以及一個偏移量生成一個新的顏色,分分鐘實現相似於微信底部欄滑動顏色漸變。
- Canvas中clipRect、clipPath和clipRegion 剪切區域的API。
- Bitmap.extractAlpha ();返回一個新的Bitmap,capture原始圖片的alpha 值。有的時候咱們須要動態的修改一個元素的背景圖片又不但願使用多張圖片的時候,經過這個方法,結合Canvas 和Paint 能夠動態的修改一個純色Bitmap的顏色。
- HandlerThread,代替不停new Thread 開子線程的重複體力寫法。
- IntentService,一個能夠幹完活後本身去死且不須要咱們去管理子線程的Service。
- Palette,5.0加入的能夠提取一個Bitmap 中突出顏色的類,結合上面的Bitmap.extractAlpha,你懂的。
- Executors. newSingleThreadExecutor();這個是java 的,以前不知道它,本身花很大功夫去研究了單線程順序執行的任務隊列。。
- android:animateLayoutChanges=」true」,LinearLayout中添加View 的動畫的辦法,支持經過setLayoutTransition()自定義動畫。
- ViewDragHelper,自定義一個子View可拖拽的ViewGroup 時,處理各類事件很累吧,嗯? what the fuck!!
- GradientDrawable,以前接手公司的項目,發現有個陰影效果還不錯,覺得是切的圖片,一看代碼,什麼鬼= =!
- AsyncQueryHandler,若是作系統工具類的開發,好比聯繫人短信輔助工具等,確定免不了和ContentProvider打交道,若是數據量不是很大的狀況下,隨便搞,若是數據量大的狀況下,瞭解下這個類是頗有必要的,須要注意的是,這玩意兒吃異常..
- ViewFlipper,實現多個view的切換(循環),可自定義動畫效果,且可針對單個切換指定動畫。
- 有朋友提到了在自定義View時有些方法在開啓硬件加速的時候沒有效果的問題,在API16以後確實有不少方法不支持硬件加速,一般咱們關閉硬件加速都是在清單文件中經過,其實android也提供了針對特定View關閉硬件加速的方法,調用View.setLayerType(View.LAYER_TYPE_SOFTWARE, null);便可。
- android util包中的Pair類,能夠方便的用來存儲一」組」數據。注意不是key value。
- PointF,graphics包中的一個類,咱們常常見到在處理Touch事件的時候分別定義一個downX,一個downY用來存儲一個座標,若是座標少還好,若是要記錄的座標過多那代碼就很差看了。用PointF(float x, float y);來描述一個座標點會清楚不少。
- StateListDrawable,定義Selector一般的辦法都是xml文件,可是有的時候咱們的圖片資源多是從服務器動態獲取的,好比不少app所謂的皮膚,這種時候就只能通StateListDrawable
來完成了,各類addState便可。
- android:descendantFocusability,ListView的item中CheckBox等元素搶焦點致使item點擊事件沒法響應時,除了給對應的元素設置 focusable,更簡單的是在item根佈局加上android:descendantFocusability=」blocksDescendants」
- android:duplicateParentState=」true」,讓子View跟隨其Parent的狀態,如pressed等。常見的使用場景是某些時候一個按鈕很小,咱們想要擴大其點擊區域的時候一般會再給其包裹一層佈局,將點擊事件寫到Parent上,這時候若是但願被包裹按鈕的點擊效果對應的Selector繼續生效的話,這時候duplicateParentState就派上用場了。
- includeFontPadding=」false」,TextView默認上下是有必定的padding的,有時候咱們可能不須要上下這部分留白,加上它便可。
- Messenger,面試的時候一般都會被問到進程間通訊,通常狀況下你們都是開始背書,AIDL巴拉巴拉。。有一天在鴻神的博客看到這個,嗯,如他所說,又能夠裝一下了。
- TextView.setError();用於驗證用戶輸入。
- ViewConfiguration.getScaledTouchSlop();觸發移動事件的最小距離,自定義View處理touch事件的時候,有的時候須要判斷用戶是否真的存在movie,系統提供了這樣的方法。
- ValueAnimator.reverse(); 順暢的取消動畫效果。
- ViewStub,有的時候一塊區域須要根據狀況顯示不一樣的佈局,一般咱們都會經過setVisibility的方法來顯示和隱藏不一樣的佈局,可是這樣默認是所有加載的,用ViewStub能夠更好的提高性能。
- onTrimMemory,在Activity中重寫此方法,會在內存緊張的時候回調(支持多個級別),便於咱們主動的進行資源釋放,避免OOM。
- EditTxt.setImeOptions, 使用EditText彈出軟鍵盤時,修改回車鍵的顯示內容(一直很討厭用回車鍵來交互,因此以前一直不知道這玩意兒)
- TextView.setCompoundDrawablePadding,代碼設置TextView的drawable padding。
- ImageSwitcher,能夠用來作圖片切換的一個類,相似於幻燈片。
- WeakHashMap,直接使用HashMap有時候會帶來內存溢出的風險,使用WaekHashMap實例化Map。當使用者再也不有對象引用的時候,WeakHashMap將自動被移除對應Key值的對象。
- QQ技術交流羣290551701 http://cxy.liuzhihengseo.com/548.html