英文原文:The 30 Coolest Android Libraries from Spring 2017
這里是 30 個(gè)我最喜歡的在 2017 年 3 月前新出現(xiàn)的 Android 庫(kù)毙驯。其中一些并沒(méi)有用于實(shí)際產(chǎn)品,但你使用它們可能會(huì)得到很多的樂(lè)趣忿墅。我希望你們喜歡這些庫(kù)宇植。
下面的順序不代表排名:
1.Matisse
這是一個(gè)漂亮的本地圖片鹤耍、視頻選擇器乃秀。其主要功能有:
選擇包括JPEG、PNG煌恢、GIF格式的圖片和 MPEG骗卜、MP4 格式的視頻
支持自定義主題宠页,包括兩個(gè)內(nèi)置的主題
不同的圖片加載器
定義自定義過(guò)濾規(guī)則
在 Activities 和 Fragments 中操作良好
你可以在代碼庫(kù)的 wiki 中發(fā)現(xiàn)更多。
2. Spruce Android Animation Library (安卓動(dòng)畫(huà)庫(kù))
Spruce 是一個(gè)輕量級(jí)的動(dòng)畫(huà)庫(kù)寇仓,可以幫助排版屏幕上的動(dòng)畫(huà)举户。使用有很多不同的動(dòng)畫(huà)庫(kù)時(shí),開(kāi)發(fā)人員需要確保每個(gè)視圖都能夠在適當(dāng)?shù)臅r(shí)間活動(dòng)遍烦。 Spruce 可以幫助設(shè)計(jì)師獲得復(fù)雜的多視圖動(dòng)畫(huà)俭嘁,而不是讓開(kāi)發(fā)人員在原型階段就感到畏懼。
3. MaterialChipsInput
Chips 是 Material Design 中組件服猪,他們被描述為
小卻相對(duì)復(fù)雜的個(gè)體供填,比如聯(lián)系人。Chip 可以包含一些獨(dú)立的東西罢猪,比如照片近她、文本、條款膳帕、圖標(biāo)或者聯(lián)系人粘捎。
MaterialChipsInput 是在 Android 中實(shí)現(xiàn)的那個(gè)組件。這個(gè)庫(kù)提供了兩個(gè)視圖:ChipsInput 和 ChipView.
4. Grav
該庫(kù)允許基于點(diǎn)創(chuàng)建多個(gè)動(dòng)畫(huà)危彩。 你可以很容易地制作出光滑美麗的動(dòng)畫(huà)攒磨。 README 包含很多示例,因此您可以在此處查看恬砂。
5. Litho
Litho 不是庫(kù)咧纠,而是一個(gè)框架。它是一個(gè)非常強(qiáng)大的框架泻骤,以聲明的方式構(gòu)建 UI漆羔。它由 Facebook 的開(kāi)發(fā)者開(kāi)發(fā),所以就算你不想使用它狱掂,它仍然值得你去關(guān)注它的開(kāi)發(fā)過(guò)程演痒。
主要特性包括:
使用申明式 API 來(lái)定義 UI 組件。你只需要基于一套固定的輸入來(lái)描述布局就好趋惨,其它事情框架會(huì)搞定鸟顺。
異步布局:Litho 可以在不阻礙 UI 線(xiàn)程的情況下計(jì)算并對(duì) UI 布局。
扁平化視圖:Litho 使用 Yoga 來(lái)布局器虾,并自動(dòng)縮減 UI中 ViewGroups 的數(shù)量讯嫂。
細(xì)粒度回收:UI 中任何像 text 或 image 之類(lèi)的組件都能被回收再利用。
6. Adaptable Bottom Navigation(自適應(yīng)的底部導(dǎo)航)
不久前 Google 更新了 Material Design 的計(jì)劃兆沙,介紹了底部導(dǎo)航欄欧芽,這是個(gè)在應(yīng)用中讓 UI 跟隨內(nèi)容變化的不錯(cuò)的方式。設(shè)計(jì)支持庫(kù)(Design Support Library) 中也添加了實(shí)現(xiàn)葛圃。
用自適應(yīng)底層導(dǎo)航替換支持庫(kù)中的 BottomNavigationView 非常簡(jiǎn)單千扔。它以 ViewPager 和 TabLayout 的工作方式來(lái)實(shí)現(xiàn)。這里有來(lái)自開(kāi)發(fā)團(tuán)隊(duì)的一個(gè)簡(jiǎn)短說(shuō)明:
如前所述库正,使用 Android 支持庫(kù)中的底部導(dǎo)航視圖需要寫(xiě)很多無(wú)聊的的代碼切換視圖曲楚。因此,我們根據(jù) TabLayout 的 setupWithViewPater() 方法褥符,創(chuàng)建了獨(dú)有特色的 ViewSwapper 組件連接到底層導(dǎo)航視圖來(lái)以一個(gè)簡(jiǎn)單的方式對(duì)視圖的顯示進(jìn)行管理龙誊。
你可以在 Github 中找到更多相關(guān)信息。對(duì)于為什么要實(shí)現(xiàn)這個(gè)東西喷楣,那里有詳盡的資料和說(shuō)明(提示:結(jié)構(gòu)清晰)趟大。
7. PatternLockView(圖形鎖視圖)
這個(gè)庫(kù)讓你可以在應(yīng)用中簡(jiǎn)單快速的實(shí)現(xiàn)圖形鎖機(jī)制。這個(gè)視圖真的是非常易用抡蛙,它有大量的個(gè)性化選項(xiàng)可以用于改變功能和外觀(guān)护昧,以此滿(mǎn)足你的需求。
它還支持 RxJava 2 視圖綁定粗截,所以如果你喜歡響應(yīng)式編程(就像我一樣)惋耙,你可以得到用戶(hù)繪制圖形的更新流。
*README *中充滿(mǎn)了示例熊昌,所以入門(mén)很容易绽榛。
8. Isometric
這是一個(gè)有助于繪制等軸形狀的庫(kù)。在我看來(lái)婿屹,它是本列表中最炫的庫(kù)之一灭美,因?yàn)樗屛蚁肫鹆?Monument Valley 游戲。該庫(kù)支持繪制多個(gè)形狀昂利、路徑和復(fù)雜結(jié)構(gòu)届腐,如下面的示例:
9. UltraViewPager
UltraViewPager 是一個(gè)封裝多種特性的 ViewPager 铁坎,主要是為多頁(yè)面切換場(chǎng)景提供統(tǒng)一解決方案。
主要功能
支持橫向滑動(dòng)/縱向滑動(dòng)
支持一屏內(nèi)顯示多頁(yè)
支持循環(huán)滾動(dòng)
支持定時(shí)滾動(dòng)犁苏,計(jì)時(shí)器使用 Handler 實(shí)現(xiàn)
支持設(shè)置 ViewPager 的最大寬高
setRatio 按比例顯示 UltraviewPager
內(nèi)置 indicator 硬萍,只需簡(jiǎn)單設(shè)置幾個(gè)屬性就可以完成展示,支持圓點(diǎn)和 Icon围详;
內(nèi)置兩種頁(yè)面切換動(dòng)效
該庫(kù)有一個(gè)非常良好的文檔朴乖。
10. InfiniteCards
可自定義動(dòng)效的卡片切換視圖,該庫(kù)有助于實(shí)現(xiàn)卡片 UI 助赞,然后用一個(gè)漂亮的動(dòng)畫(huà)切換它們买羞。
參數(shù)
animType : 動(dòng)效展示類(lèi)型front : 將點(diǎn)擊的卡片切換到第一個(gè)
switchPosition : 將點(diǎn)擊的卡片和第一張卡片互換位置
frontToLast : 將第一張卡片移到最后,后面的卡片往前移動(dòng)一個(gè)
cardRatio : 卡片寬高比
animDuration : 卡片動(dòng)效時(shí)間
animAddRemoveDelay : 卡片組切換時(shí)雹食,添加與移出時(shí)畜普,相鄰卡片展示動(dòng)效的間隔時(shí)間
animAddRemoveDuration : 卡片組切換時(shí),添加與移出時(shí)婉徘,卡片動(dòng)效時(shí)間
11. SlidingRootNav
我們可以認(rèn)為這個(gè)庫(kù)是像 DrawerLayout 的 ViewGroup漠嵌,*drawer(抽屜) 隱藏在內(nèi)容視圖之下,可以通過(guò)改變它們來(lái)顯示 drawer盖呼。REAMDE *很全面儒鹿,值得一看。
12. PasscodeView
這就是一個(gè)你可以鍵入密碼的 view几晤。但非常棒约炎!
13. MusicWave
該庫(kù)允許將聲音表示為彩色梯度變化。
14. ShadowImageView
該庫(kù)可幫助你為圖片添加更有意義的陰影蟹瘾。根據(jù) README 圾浅,它的作用是:
可以根據(jù)圖片內(nèi)容變陰影顏色,更加細(xì)膩的陰影效果憾朴。
此外狸捕,它也非常易于使用。
15. PolygonDrawingUtil
這是一個(gè)高效的 Android 實(shí)用程序類(lèi)众雷,用于在 Canvas 上繪制常規(guī)的多邊形灸拍。 我們可以指定:
邊數(shù)(≥3)
中心點(diǎn)坐標(biāo)
外接圓半徑(從中心到頂點(diǎn)的距離)
圓角半徑
多邊形旋轉(zhuǎn)度
填充/描邊顏色
16. Tiny
這是本列表中的第二個(gè)框架。它負(fù)責(zé)圖像壓縮砾省,功能相當(dāng)強(qiáng)大的鸡岗。還支持
使用異步線(xiàn)程池來(lái)壓縮圖像,并且當(dāng)壓縮完成時(shí)编兄,會(huì)將結(jié)果發(fā)送到主線(xiàn)程中轩性。
17. ParticleTextView
該庫(kù)提供了一個(gè)自定義的 view 組件,可以用彩色粒子組成指定的文字狠鸳,并配合多種動(dòng)畫(huà)效果和配置屬性揣苏,呈現(xiàn)出豐富的視覺(jué)效果悯嗓。
18. CropIwa
這是一個(gè)高可配置的圖像裁剪部件。該庫(kù)基于模塊化結(jié)構(gòu)舒岸,因此它的可配置性非常強(qiáng)绅作。你可以從 Github 上的 WiKi 了解如何進(jìn)行配置芦圾。
19. Project Condom
『保險(xiǎn)套』是一個(gè)超輕超薄的 Android 工具庫(kù)蛾派,將它套在 Android 應(yīng)用工程里裸露的 Context 上,再傳入第三方 SDK(通常是其初始化方法)个少,即可防止三方 SDK 中常見(jiàn)的損害用戶(hù)體驗(yàn)的行為:****
在后臺(tái)啟動(dòng)大量其它應(yīng)用的進(jìn)程(在三方推送 SDK 中較為常見(jiàn))洪乍,導(dǎo)致應(yīng)用啟動(dòng)非常緩慢,啟動(dòng)后一段時(shí)間內(nèi)出現(xiàn)嚴(yán)重的卡頓(在中低端機(jī)型上尤其明顯)夜焦。 這是由于在這些 SDK 初始化階段啟動(dòng)的其它應(yīng)用中往往也存在三方 SDK 的類(lèi)似行為壳澳,造成了進(jìn)程啟動(dòng)的『鏈?zhǔn)椒磻?yīng)』,在短時(shí)間內(nèi)消耗大量的 CPU茫经、文件 IO 及內(nèi)存資源巷波,使得當(dāng)前應(yīng)用所能得到的資源被大量擠占(甚至耗盡)。
20. AppMethodOrder
一個(gè)能讓你了解所有函數(shù)調(diào)用順序以及函數(shù)耗時(shí)的 Android 庫(kù)(無(wú)需侵入式代碼)卸伞。
當(dāng)項(xiàng)目代碼量很大的時(shí)候抹镊,或者你作為一名新人要快速掌握代碼的時(shí)候,給函數(shù)打上 log 荤傲,來(lái)了解代碼執(zhí)行邏輯垮耳,這種方式會(huì)顯然成本太大,要改動(dòng)項(xiàng)目編譯運(yùn)行遂黍,NO终佛!太耗時(shí);或者你想 debug 的方式來(lái)給你想關(guān)注的幾個(gè)函數(shù)雾家,來(lái)了解代碼執(zhí)行邏輯铃彰,NO!因?yàn)槟憧隙〞?huì)漏掉函數(shù)芯咧;也許你可以固執(zhí)的給你寫(xiě)的項(xiàng)目打滿(mǎn) log 說(shuō)這樣也行牙捉,但是你要知道你方法所調(diào)用的 jdk 的函數(shù)或者第三方 aar 或者 jar 再或者 android sdk 中的函數(shù)調(diào)用順序你怎么辦,還能打 log 嗎唬党?顯然不行吧鹃共,來(lái)~這個(gè)項(xiàng)目給讓可以讓你以包名為過(guò)濾點(diǎn)過(guò)濾你想要知道所有函數(shù)調(diào)用順序。
項(xiàng)目有詳細(xì)的文件驶拱,你可以找到詳細(xì)的手冊(cè)了解如何使用它霜浴。
21. Android DebugKit
這是一個(gè)有趣的庫(kù)。它允許你創(chuàng)建和使用特殊的懸停調(diào)試工具蓝纲,以觸發(fā)你在應(yīng)用程序中定義的操作阴孟。這些操作可以在運(yùn)行時(shí)明顯的觸發(fā)晌纫,因此可以在編寫(xiě)或測(cè)試手機(jī)屏幕反饋時(shí)間時(shí)使用。
該庫(kù)使用 Builder 模式永丝。 它很容易使用锹漱,在 README 中有一個(gè)其用法的示例。
22. Aesthetic
這是一個(gè)新的庫(kù)慕嚷,仍處于測(cè)試版哥牍,但它做了一件非常酷的事情 - 它通過(guò) Rx 支持動(dòng)態(tài)改變系統(tǒng)主題喝检! 作者是這么描述的:
一個(gè)快速和易于使用的即插即用的動(dòng)態(tài)主題引擎嗅辣。由 Rx 支持,適用于 Android 應(yīng)用挠说。
該庫(kù)文檔非常不錯(cuò)澡谭、內(nèi)容全面,值得一讀损俭。
23. EasyCalendar
這是一個(gè)簡(jiǎn)單的自定義日歷小插件蛙奖。 主要功能包括:
自定義布局的標(biāo)題
自定義布局的日期
顯示或隱藏日期的分隔符
顯示或隱藏溢出的日期
監(jiān)聽(tīng)日期視圖的點(diǎn)擊操作
該庫(kù)的文檔是全面且易于使用的。
24. SimpleRatingBar
該庫(kù)提供兩個(gè)評(píng)分欄:
BaseRatingBar - 沒(méi)有任何動(dòng)畫(huà)
ScaleRatingBar - 具有漸進(jìn)和縮放動(dòng)畫(huà)
你可以在下面的 gif 圖中看到它們的效果:
25. Magellan
這個(gè)庫(kù)被標(biāo)榜為最簡(jiǎn)單的 Android 導(dǎo)航庫(kù)杆兵,但你仍然需要自己判斷它是否適合自己使用雁仲。主要特性:
調(diào)用 goTo(screen) 方法就能簡(jiǎn)單實(shí)現(xiàn)導(dǎo)航,
返回棧完全可控拧咳,
自動(dòng)處理過(guò)渡伯顶。
wiki 上有全面的說(shuō)明。
26. ViewPagerAnimator
ViewPagerAnimator 是一款面向 Android 的輕量級(jí)骆膝、功能強(qiáng)大的 ViewPager 動(dòng)畫(huà)庫(kù)祭衩。 它被設(shè)計(jì)為在用戶(hù)在 ViewPager 中的頁(yè)面之間導(dǎo)航時(shí)顯示任意動(dòng)畫(huà),并且將精確地跟隨他或她的手指的動(dòng)作阅签。雖然該庫(kù)本身可能對(duì)某些人有用掐暮,但是發(fā)布這個(gè)庫(kù)的主要目的就是展示一些完美 API 的細(xì)節(jié)之處,在使用即將到來(lái)的 Java 8 擴(kuò)展時(shí)政钟,這真的是走在前列的路克。本庫(kù)還提供了 Java 7 和 Java 8 的示例項(xiàng)目。
它是由 Mark Allison 寫(xiě)的养交,你可以在他的 Styling Android 博客上獲得更多的信息精算。
27. BlockCanaryEx
這是一個(gè)當(dāng)你的應(yīng)用程序被阻塞時(shí),它可以方便在代碼中找到阻塞的方法的庫(kù)碎连。它是基于 BlockCanary 的灰羽。
[圖片上傳中。。廉嚼。(11)]
28. PaletteImageView
非趁蹈洌酷的一個(gè)庫(kù),可以動(dòng)態(tài)的提取圖片的主要顏色怠噪,并將顏色作為圖片陰影的控件恐似。
該項(xiàng)目文檔較少,但我認(rèn)為代碼是不言自明的傍念。
29. RecyclerRefreshLayout
這是一個(gè)打開(kāi)相機(jī)快門(mén)的刷新動(dòng)畫(huà)矫夷。在我看來(lái),真的值得研究捂寿,特別是在 README 中有一個(gè)關(guān)于如何實(shí)現(xiàn)這個(gè)效果的數(shù)學(xué)分析口四!
30. SlimAdapter
這是一種不使用 ViewHolder 來(lái)編寫(xiě)適配器的方法。主要功能包括:
不包含 ViewHolders
沒(méi)有反射
流暢和簡(jiǎn)單的 API
支持多類(lèi)型適配器
支持 Kotlin
支持簡(jiǎn)單的 DiffUtil