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