Android 一些好用的接口和屬性

1、getParent().requestDisallowInterceptTouchEvent(true);剝奪父view對touch事件的處理權,誰用誰知道。

2、ArgbEvaluator.evaluate(float fraction, Object startValue, Object endValue) 用于根據一個起始顏色值和一個結束顏色值以及一個偏移量生成一個新的顏色,分分鐘實現(xiàn)類似于微信底部欄滑動顏色漸變。

3、Canvas中clipRect、clipPath和clipRegion剪切區(qū)域的API。

4、Bitmap.extractAlpha ();返回一個新的Bitmap,capture原始圖片的alpha值。有的時候我們需要動態(tài)的修改一個元素的背景圖片又不希望使用多張圖片的時候,通過這個方法,結合Canvas和Paint可以動態(tài)的修改一個純色Bitmap的顏色。

5、HandlerThread,代替不停new Thread開子線程的重復體力寫法。

6、IntentService,一個可以干完活后自己去死且不需要我們去管理子線程的Service。

7、Palette,5.0加入的可以提取一個Bitmap中突出顏色的類,結合上面的Bitmap.extractAlpha,你懂的。

8、Executors.newSingleThreadExecutor();這個是java的,之前不知道它,自己花很大功夫去研究了單線程順序執(zhí)行的任務隊列。。

9、android:animateLayoutChanges="true",LinearLayout中添加View的動畫的辦法,支持通過setLayoutTransition()自定義動畫。

10、ViewDragHelper,自定義ViewGroup處理各種事件很累吧,嗯? what the fuck!!

11、GradientDrawable,之前接手公司的項目,發(fā)現(xiàn)有個陰影效果還不錯,以為是切的圖片,一看代碼,什么鬼= =!

12、AsyncQueryHandler,如果做系統(tǒng)工具類的開發(fā),比如聯(lián)系人短信輔助工具等,肯定免不了和ContentProvider打交道,如果數據量不是很大的情況下,隨便搞,如果數據量大的情況下,了解下這個類是很有必要的,需要注意的是,這玩意兒吃異常..

13、ViewFlipper,實現(xiàn)多個view的切換(循環(huán)),可自定義動畫效果,且可針對單個切換指定動畫。

14、有朋友提到了在自定義View時有些方法在開啟硬件加速的時候沒有效果的問題,在API16之后確實有很多方法不支持硬件加速,通常我們關閉硬件加速都是在清單文件中通過<application android:hardwareAccelerated="false" ...>,其實android也提供了針對特定View關閉硬件加速的方法,調用View.setLayerType(View.LAYER_TYPE_SOFTWARE, null);即可。

15、android util包中的Pair類,可以方便的用來存儲一"組"數據。注意不是key value。

16、PointF,graphics包中的一個類,我們經常見到在處理Touch事件的時候分別定義一個downX,一個downY用來存儲一個坐標,如果坐標少還好,如果要記錄的坐標過多那代碼就不好看了。用PointF(float x, float y);來描述一個坐標點會清楚很多
。
17、StateListDrawable,定義Selector通常的辦法都是xml文件,但是有的時候我們的圖片資源可能是從服務器動態(tài)獲取的,比如很多app所謂的皮膚,這種時候就只能通StateListDrawable來完成了,各種addState即可。

18、android:descendantFocusability,ListView的item中CheckBox等元素搶焦點導致item點擊事件無法響應時,除了給對應的元素設置 focusable,更簡單的是在item根布局加上android:descendantFocusability=”blocksDescendants”

19 、android:duplicateParentState="true",讓子View跟隨其Parent的狀態(tài),如pressed等。常見的使用場景是某些時候一個按鈕很小,我們想要擴大其點擊區(qū)域的時候通常會再給其包裹一層布局,將點擊事件寫到Parent上,這時候如果希望被包裹按鈕的點擊效果對應的Selector繼續(xù)生效的話,這時候 duplicateParentState 就派上用場了。

20、includeFontPadding="false",TextView默認上下是有一定的padding的,有時候我們可能不需要上下這部分留白,加上它即可。

21、Messenger,面試的時候通常都會被問到進程間通信,一般情況下大家都是開始背書,AIDL巴拉巴拉。。有一天在鴻神的博客看到這個,嗯,如他所說,又可以裝一下了。

22、TextView.setError();用于驗證用戶輸入。

23、ViewConfiguration.getScaledTouchSlop();觸發(fā)移動事件的最小距離,自定義View處理touch事件的時候,有的時候需要判斷用戶是否真的存在movie,系統(tǒng)提供了這樣的方法。

24、ValueAnimator.reverse(); 順暢的取消動畫效果。

25、ViewStub,有的時候一塊區(qū)域需要根據情況顯示不同的布局,通常我們都會通過setVisibility的方法來顯示和隱藏不同的布局,但是這樣默認是全部加載的,用ViewStub可以更好的提升性能。

26、onTrimMemory,在Activity中重寫此方法,會在內存緊張的時候回調(支持多個級別),便于我們主動的進行資源釋放,避免OOM。

27、EditTxt.setImeOptions, 使用EditText彈出軟鍵盤時,修改回車鍵的顯示內容(一直很討厭用回車鍵來交互,所以之前一直不知道這玩意兒)

28、TextView.setCompoundDrawablePadding,代碼設置TextView的drawable padding。

29、ImageSwitcher,可以用來做圖片切換的一個類,類似于幻燈片。

30、java8中新增的LocalDate和LocalTime接口,Date雖然是個萬能接口,但是它真的不好用,有了這倆,終于可以愉快的處理日期時間了。

31、WeakHashMap,直接使用HashMap有時候會帶來內存溢出的風險,使用WaekHashMap實例化Map。當使用者不再有對象引用的時候,WeakHashMap將自動被移除對應Key值的對象。

32、Canvas.rotate,當你需要進行繪制環(huán)形的刻度時,可以通過旋轉畫布來繪制刻度。Android的角度順時針為正,逆時針為負。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,324評論 25 708
  • 內容抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標下拉刷新...
    皇小弟閱讀 47,183評論 22 665
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,384評論 0 17
  • 第四章 友情的定義 “柳舒,今天有時間嗎?我想跟你聊聊……嗯……好……一會兒見?!?掛了電話,林婉抬頭看了看表,才...
    漓江a閱讀 337評論 0 1
  • 一天早上,剛上班,老板就開始給大家線上開會。內容還是公司前景好,當前的任務重,同學們還不夠努力云云。這次的語氣更重...
    樂行樂知閱讀 343評論 0 0

友情鏈接更多精彩內容