當前位置:
首頁 > 知識 > Android開發中,那些讓你相見恨晚的方法、類或介面

Android開發中,那些讓你相見恨晚的方法、類或介面

Android開發中,那些讓你相見恨晚的方法、類或介面



來自:liukun的個人博客

已獲轉載授權


PS:本文類容來自我在知乎上對Android開發中,有哪些讓你覺得相見恨晚的方法、類或介面?這一問題的回答,目前就總結這些,日後若有新的發現,隨時補充。歡淫點贊。


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值的對象。


本文編號2254,以後想閱讀這篇文章直接輸入2254即可。

您的贊是小編持續努力的最大動力,動動手指贊一下吧!


本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序猿 的精彩文章:

都談基礎,到底什麼是編程基礎?
編輯器聖戰!
為什麼文件名要小寫?
Linux進程管理之「四大名捕」
對,廣東億迅要招JAVA!

TAG:程序猿 |

您可能感興趣

6 種簡易方法,輕鬆清潔你的Beauty Blender!
Steam打不開wallpaper engine怎麼辦 不能用解決方法圖文教程
又冷又霾的冬天來了,我們推薦這 10 個方法驅散心情陰霾 | Hack Your Life
明星們常用的瘦臉方法解開V-line的秘訣
用瑜伽磚練好神猴式 (?hanumanasana)的4種方法
圖解Meterpreter實現網路穿透的方法
angelababy教你一招養生好方法:陳式太極拳!
Bioinformatics:新型軟體或可使CRISPR方法變得更加簡單
男性要變得「strong」不在虛,這個方法能走近道?
老花農的扦插方法,告訴你要想生根發芽so easy
回答英國人「How are you」的正確方法!
Steam平台怎麼安裝使用Wallpaper Engine?設置使用方法教程
十萬個虐待iPhone的方法,那些年我們一起虐的「瘋」!
去黑頭最有效的方法 跟黑頭說say baybay
FBI拒將iPhone破解方法告訴蘋果:不知道也沒必要
Plant Cell Physiol:新方法讓CRISPR/Cas9高效地敲除擬南芥中的靶基因
傳授中國人可以玩超火遊戲Pokemon Go的最好方法
Science:科學家找到讓傷口癒合不留疤的方法
Science:能對抗負面壓力的最有效學習方法居然是考試!