轉自:http://andydev.me/2016/04/11/android-tips-2/
MediaMetadataRetriever
顧名思義,就是用來獲取媒體文件一些相關信息的類。包括一首歌的標題,作者,專輯封面和名稱,時長,比特率等等。如果是視頻的話,可以獲取視頻的長寬,預覽圖。
http://developer.android.com/intl/zh-cn/reference/android/media/MediaMetadataRetriever.html
TouchDelegate
用于更改View的觸摸區域。場景:比如在RecyclerView的ItemView里包含了CheckBox組件, 然后想實現點擊ItemView的時候,也可以觸發CheckBox,就可以使用此類。
http://developer.android.com/intl/zh-cn/training/gestures/viewgroup.html#delegate
ArgbEvaluator
用于計算不同顏色值之間的插值,配合ValueAnimator.ofObject或者ViewPager.PageTransformer使用,可以實現不同顏色之間的平滑過渡。
http://developer.android.com/intl/zh-cn/reference/android/animation/ArgbEvaluator.html
Palette
用于提取一張圖片的顏色。
http://developer.android.com/intl/zh-cn/reference/android/support/v7/graphics/Palette.html
ViewDragHelper
做過自定義ViewGroup的童鞋都應該知道這個東西吧,用來處理觸摸事件的神器,媽媽再也不用擔心我自定義控件了。
http://developer.android.com/intl/zh-cn/reference/android/support/v4/widget/ViewDragHelper.html
http://www.cnblogs.com/lqstayreal/p/4500219.html
PageTransformer
用于定義ViewPager頁面切換時的動畫效果(淡入淡出,放大縮小神馬的…)官方有例子,直接看吧。
http://developer.android.com/intl/zh-cn/training/animation/screen-slide.html
ViewFlipper
可以實現簡單輪播效果的一個組件。
http://developer.android.com/intl/zh-cn/reference/android/widget/ViewFlipper.html
LocalBroadcastManager
用于在APP內部使用的,效率和安全性更好的廣播工具類。
http://developer.android.com/intl/zh-cn/reference/android/support/v4/content/LocalBroadcastManager.html
Messenger
進程間通信的一個工具類。內部也是由AIDL實現的,但是用起來超級方便。
http://developer.android.com/intl/zh-cn/reference/android/os/Messenger.html
http://blog.csdn.net/lmj623565791/article/details/47017485
Formatter.formatFileSize
根據文件大小自動轉為以KB, MB, GB為單位的工具類。想想以前都是自己計算的…
http://developer.android.com/intl/zh-cn/reference/android/text/format/Formatter.html
Activity.recreate
重新創建Activity。有什么用呢?可以在程序更換主題后,立馬刷新當前Activity,而不會有明顯的重啟Activity的動畫。
http://developer.android.com/intl/zh-cn/reference/android/app/Activity.html#recreate%28%29
View.getContext
顧名思義,就不用解釋了吧…以前在寫RecyclerView的Adapter的時候,為了使用LayoutInflater,經常傻乎乎地在構造函數中傳入一個外部的context….是不是只有我不知道而已(笑cry臉)
http://developer.android.com/intl/zh-cn/reference/android/view/View.html#getContext()
View.post
方便在非UI線程對界面進行修改,與Handler的作用類似。并且由于post的Runnable會保證在該View繪制完成的前提下才調用,所以一般也可以用于獲取View的寬高。
http://developer.android.com/intl/zh-cn/reference/android/view/View.html#post(java.lang.Runnable)
Activity.runOnUiThread
與View.post類似,方便在非UI線程中對界面進行修改。
http://developer.android.com/intl/zh-cn/reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable)
Fragment.setUserVisibleHint
Fragment可以重寫此方法,然后根據參數的布爾值(true的話表示當前Fragment對用戶可見),來執行一些邏輯。
http://developer.android.com/intl/zh-cn/reference/android/support/v4/app/Fragment.html#setUserVisibleHint(boolean)
android:animateLayoutChanges
這是一個非常酷炫的屬性。在父布局加上 android:animateLayoutChanges="true" 后,如果觸發了layout方法(比如它的子View設置為GONE),系統就會自動幫你加上布局改變時的動畫特效!!
http://developer.android.com/intl/zh-cn/training/animation/layout.html
android:clipToPadding
設置父view是否允許其子view在它的padding(這里指的是父View的padding)中繪制。是不是有點繞?舉個實際場景吧:假如有個ListView,我們想要在初始位置時,第一項Item離頂部有10dp的距離,就可以在ListView的布局中加入android:clipToPadding="false" android:paddingTop="10dp"即可。是不是很方便呢?
http://developer.android.com/intl/zh-cn/reference/android/view/ViewGroup.html#attr_android:clipToPadding
DrawableCompat.setTint
位于support-v4包中,可以輕易地實現給Drawable著色。輕松實現類似網易云音樂自定義主題時,icon也會變色的效果。
http://developer.android.com/intl/zh-cn/reference/android/support/v4/graphics/drawable/DrawableCompat.html#setTint(android.graphics.drawable.Drawable,%20int)
http://www.race604.com/tint-drawable/
ItemTouchHelper
用來實現RecyclerView滑動刪除,拖動排序等效果的工具類,重要的是,實現起來超級簡單啊!可以不用引入開源庫啦~
http://developer.android.com/intl/zh-cn/reference/android/support/v7/widget/helper/ItemTouchHelper.html
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0630/3123.html
SortedList
排序列表,support-v7引入的一個新的數據結構。配合RecyclerView使用,可以輕松地對Adapter的數據進行排序,并且在數據變化時(添加,刪除,移動,改變)提供相應的動畫效果。
http://developer.android.com/intl/zh-cn/reference/android/support/v7/util/SortedList.html?utm_campaign=ASL221-415&utm_source=dac&utm_medium=blog
DialogFragment
與直接使用Dialog不同的是,DialogFragment能夠幫你管理Dialog的生命周期,在橫豎屏切換的時候,會保存相應狀態并恢復。以后就不要直接用Dialog了,使用DialogFragment可以幫你省很多事。
http://developer.android.com/intl/zh-cn/reference/android/support/v4/app/DialogFragment.html
http://blog.csdn.net/lmj623565791/article/details/37815413
Resources.getIdentifier
可以通過資源名稱來獲取資源的id。乍一看好像沒什么卵用… 舉個例子吧: 假設服務端的API規定了一系列的錯誤碼,當客戶端收到錯誤碼時,需要轉化為對用戶友好的提示語。那么我們可以在strings.xml中先定義好一系列的錯誤提示,然后在代碼中根據相應的資源名稱來獲取到相應的錯誤提示。
http://developer.android.com/intl/zh-cn/reference/android/content/res/Resources.html#getIdentifier(java.lang.String,%20java.lang.String,%20java.lang.String)
DateUtils
一個用來格式化日期的超級方便的工具類,快點試試吧~
http://developer.android.com/intl/zh-cn/reference/android/text/format/DateUtils.html
TextUtils
一個字符串處理的工具類。比如空判斷TextUtils.isEmpty(內部已經做了!null處理), 文本拼接TextUtils.concat, 統計字符串除去空格的長度TextUtils.getTrimmedLength(trim之后的長度)
http://developer.android.com/intl/zh-cn/reference/android/text/TextUtils.html
android:enterFadeDuration/android:exitFadeDuration
覺得Button的selector效果很生硬?試試在selector節點加上這兩個屬性吧,馬上就優雅很多了~
http://developer.android.com/intl/zh-cn/reference/android/R.attr.html#enterFadeDuration
?android:selectableItemBackground
想要最快速度地給view加上點擊效果?試試在xml中加上 android:background="?android:selectableItemBackground"Android 5.0以上是波紋效果,5.0以下是普通的點擊效果(簡言之,跟系統默認點擊效果一致)
http://developer.android.com/intl/zh-cn/reference/android/R.attr.html#selectableItemBackground