Android開發(fā)中一些被冷落但卻很有用的類和方法

本文摘自同行說用戶“學(xué)文”分享的文章,原文鏈接:http://luckyandyzhang.github.io,如涉及版權(quán)問題請(qǐng)及時(shí)聯(lián)系小編!

MediaMetadataRetriever

顧名思義,就是用來獲取媒體文件一些相關(guān)信息的類。包括一首歌的標(biāo)題,作者,專輯封面和名稱,時(shí)長,比特率等等。如果是視頻的話,可以獲取視頻的長寬,預(yù)覽圖。

http://developer.android.com/intl/zh-cn/reference/android/media/MediaMetadataRetriever.html


TouchDelegate

用于更改View的觸摸區(qū)域。場景:比如在RecyclerView的ItemView里包含了CheckBox組件, 然后想實(shí)現(xiàn)點(diǎn)擊ItemView的時(shí)候,也可以觸發(fā)CheckBox,就可以使用此類。

http://developer.android.com/intl/zh-cn/training/gestures/viewgroup.html#delegate


ArgbEvaluator

用于計(jì)算不同顏色值之間的插值,配合ValueAnimator.ofObject或者ViewPager.PageTransformer使用,可以實(shí)現(xiàn)不同顏色之間的平滑過渡。

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的童鞋都應(yīng)該知道這個(gè)東西吧,用來處理觸摸事件的神器,媽媽再也不用擔(dān)心我自定義控件了。

http://developer.android.com/intl/zh-cn/reference/android/support/v4/widget/ViewDragHelper.html

http://www.cnblogs.com/lqstayreal/p/4500219.html


PageTransformer

用于定義ViewPager頁面切換時(shí)的動(dòng)畫效果(淡入淡出,放大縮小神馬的…)官方有例子,直接看吧。

http://developer.android.com/intl/zh-cn/training/animation/screen-slide.html


ViewFlipper

可以實(shí)現(xiàn)簡單輪播效果的一個(gè)組件。

http://developer.android.com/intl/zh-cn/reference/android/widget/ViewFlipper.html


LocalBroadcastManager

用于在APP內(nèi)部使用的,效率和安全性更好的廣播工具類。

http://developer.android.com/intl/zh-cn/reference/android/support/v4/content/LocalBroadcastManager.html


Messenger

進(jìn)程間通信的一個(gè)工具類。內(nèi)部也是由AIDL實(shí)現(xiàn)的,但是用起來超級(jí)方便。

http://developer.android.com/intl/zh-cn/reference/android/os/Messenger.html

http://blog.csdn.net/lmj623565791/article/details/47017485


Formatter.formatFileSize

根據(jù)文件大小自動(dòng)轉(zhuǎn)為以KB, MB, GB為單位的工具類。想想以前都是自己計(jì)算的…

http://developer.android.com/intl/zh-cn/reference/android/text/format/Formatter.html


Activity.recreate

重新創(chuàng)建Activity。有什么用呢?可以在程序更換主題后,立馬刷新當(dāng)前Activity,而不會(huì)有明顯的重啟Activity的動(dòng)畫。

http://developer.android.com/intl/zh-cn/reference/android/app/Activity.html#recreate%28%29


View.getContext

顧名思義,就不用解釋了吧…以前在寫RecyclerView的Adapter的時(shí)候,為了使用LayoutInflater,經(jīng)常傻乎乎地在構(gòu)造函數(shù)中傳入一個(gè)外部的context….是不是只有我不知道而已(笑cry臉)

http://developer.android.com/intl/zh-cn/reference/android/view/View.html#getContext()


View.post

方便在非UI線程對(duì)界面進(jìn)行修改,與Handler的作用類似。并且由于post的Runnable會(huì)保證在該View繪制完成的前提下才調(diào)用,所以一般也可以用于獲取View的寬高。

http://developer.android.com/intl/zh-cn/reference/android/view/View.html#post(java.lang.Runnable)


Activity.runOnUiThread

與View.post類似,方便在非UI線程中對(duì)界面進(jìn)行修改。

http://developer.android.com/intl/zh-cn/reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable)


Fragment.setUserVisibleHint

Fragment可以重寫此方法,然后根據(jù)參數(shù)的布爾值(true的話表示當(dāng)前Fragment對(duì)用戶可見),來執(zhí)行一些邏輯。

http://developer.android.com/intl/zh-cn/reference/android/support/v4/app/Fragment.html#setUserVisibleHint(boolean)


android:animateLayoutChanges

這是一個(gè)非??犰诺膶傩浴T诟覆季旨由蟖ndroid:animateLayoutChanges="true"后,如果觸發(fā)了layout方法(比如它的子View設(shè)置為GONE),系統(tǒng)就會(huì)自動(dòng)幫你加上布局改變時(shí)的動(dòng)畫特效!!

http://developer.android.com/intl/zh-cn/training/animation/layout.html


android:clipToPadding

設(shè)置父view是否允許其子view在它的padding(這里指的是父View的padding)中繪制。是不是有點(diǎn)繞?舉個(gè)實(shí)際場景吧:假如有個(gè)ListView,我們想要在初始位置時(shí),第一項(xiàng)Item離頂部有10dp的距離,就可以在ListView的布局中加入android:clipToPadding="false"android:paddingTop="10dp"即可。是不是很方便呢?

http://developer.android.com/intl/zh-cn/reference/android/view/ViewGroup.html#attr_android:clipToPadding


團(tuán)隊(duì)開發(fā)了一款工程師、產(chǎn)品經(jīng)理必備神器【同行說】APP,找大牛、看最新最熱干貨,勾搭妹紙,快來同行說吧!

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容