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

轉(zhuǎn)自:http://andydev.me/2016/04/11/android-tips-2/

MediaMetadataRetriever

顧名思義图柏,就是用來獲取媒體文件一些相關(guān)信息的類瘸恼。包括一首歌的標題自娩,作者鞭呕,專輯封面和名稱赏淌,時長靶擦,比特率等等醉旦。如果是視頻的話,可以獲取視頻的長寬恒界,預覽圖睦刃。

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

TouchDelegate

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

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

ArgbEvaluator

用于計算不同顏色值之間的插值耸采,配合ValueAnimator.ofObject或者ViewPager.PageTransformer使用兴泥,可以實現(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)該知道這個東西吧搓彻,用來處理觸摸事件的神器,媽媽再也不用擔心我自定義控件了嘱朽。

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

可以實現(xiàn)簡單輪播效果的一個組件稀轨。

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

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

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

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

Formatter.formatFileSize

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

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

Activity.recreate

重新創(chuàng)建Activity脏榆。有什么用呢?可以在程序更換主題后台谍,立馬刷新當前Activity须喂,而不會有明顯的重啟Activity的動畫。

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

View.getContext

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

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

View.post

方便在非UI線程對界面進行修改掷伙,與Handler的作用類似是己。并且由于post的Runnable會保證在該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線程中對界面進行修改。

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

Fragment.setUserVisibleHint

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

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

android:animateLayoutChanges

這是一個非痴啵酷炫的屬性参袱。在父布局加上 android:animateLayoutChanges="true" 后,如果觸發(fā)了layout方法(比如它的子View設(shè)置為GONE)秽梅,系統(tǒng)就會自動幫你加上布局改變時的動畫特效Dㄊ础!

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

android:clipToPadding

設(shè)置父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包中,可以輕易地實現(xiàn)給Drawable著色竹习。輕松實現(xiàn)類似網(wǎng)易云音樂自定義主題時誊抛,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

用來實現(xiàn)RecyclerView滑動刪除整陌,拖動排序等效果的工具類拗窃,重要的是瞎领,實現(xiàn)起來超級簡單啊随夸!可以不用引入開源庫啦~

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引入的一個新的數(shù)據(jù)結(jié)構(gòu)。配合RecyclerView使用宾毒,可以輕松地對Adapter的數(shù)據(jù)進行排序驼修,并且在數(shù)據(jù)變化時(添加,刪除,移動,改變)提供相應(yīng)的動畫效果。

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的生命周期乙各,在橫豎屏切換的時候,會保存相應(yīng)狀態(tài)并恢復幢竹。以后就不要直接用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焕毫。乍一看好像沒什么卵用… 舉個例子吧: 假設(shè)服務(wù)端的API規(guī)定了一系列的錯誤碼妇萄,當客戶端收到錯誤碼時,需要轉(zhuǎn)化為對用戶友好的提示語咬荷。那么我們可以在strings.xml中先定義好一系列的錯誤提示冠句,然后在代碼中根據(jù)相應(yīng)的資源名稱來獲取到相應(yīng)的錯誤提示。

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(內(nèi)部已經(jīng)做了!null處理), 文本拼接TextUtils.concat, 統(tǒng)計字符串除去空格的長度TextUtils.getTrimmedLength(trim之后的長度)

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

android:enterFadeDuration/android:exitFadeDuration

覺得Button的selector效果很生硬?試試在selector節(jié)點加上這兩個屬性吧罕扎,馬上就優(yōu)雅很多了~

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以下是普通的點擊效果(簡言之腔召,跟系統(tǒng)默認點擊效果一致)

http://developer.android.com/intl/zh-cn/reference/android/R.attr.html#selectableItemBackground

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末杆查,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子臀蛛,更是在濱河造成了極大的恐慌亲桦,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浊仆,死亡現(xiàn)場離奇詭異客峭,居然都是意外死亡,警方通過查閱死者的電腦和手機抡柿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進店門舔琅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人洲劣,你說我怎么就攤上這事备蚓】问撸” “怎么了?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵郊尝,是天一觀的道長购笆。 經(jīng)常有香客問我,道長虚循,這世上最難降的妖魔是什么同欠? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮横缔,結(jié)果婚禮上铺遂,老公的妹妹穿的比我還像新娘。我一直安慰自己茎刚,他們只是感情好襟锐,可當我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著膛锭,像睡著了一般粮坞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上初狰,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天莫杈,我揣著相機與錄音,去河邊找鬼奢入。 笑死筝闹,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的腥光。 我是一名探鬼主播关顷,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼武福!你這毒婦竟也來了议双?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤捉片,失蹤者是張志新(化名)和其女友劉穎平痰,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體界睁,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡觉增,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了翻斟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡说铃,死狀恐怖访惜,靈堂內(nèi)的尸體忽然破棺而出嘹履,到底是詐尸還是另有隱情,我是刑警寧澤债热,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布砾嫉,位于F島的核電站,受9級特大地震影響窒篱,放射性物質(zhì)發(fā)生泄漏焕刮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一墙杯、第九天 我趴在偏房一處隱蔽的房頂上張望配并。 院中可真熱鬧,春花似錦高镐、人聲如沸溉旋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽观腊。三九已至,卻和暖如春算行,著一層夾襖步出監(jiān)牢的瞬間梧油,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工州邢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留婶溯,地道東北人。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓偷霉,卻偏偏與公主長得像迄委,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子类少,可洞房花燭夜當晚...
    茶點故事閱讀 43,576評論 2 349

推薦閱讀更多精彩內(nèi)容