一個千萬量級的APP使用的一些第三方庫

.背景

這是我老大去年下半年某個月轉發給我的,據說是轉載閱讀量過萬,然後我就認真的看了下,裏面的庫確實是在項目中應用廣泛,並且作用巨大。所以我認爲確實可以分享一下,供大家一起研究學習。


1.Android Design Support Library

這其實並不是一個第三方庫,而是谷歌官方出的支持庫。之所以列出來除了各大APP有使用到它外,更多的是因爲這個庫真的很強大~

這個庫和github上的很多開源項目是有很大關係的,material design的很多效果,同一種效果在github上有太多的實現,現在官方把部分效果標準化了。
這裏注意不要和兼容庫Android Support Library 混淆,雖然都是兼容庫,但區別還是很大的。
Android Design Support Library詳細介紹點這裏

Android Support Library 官方文檔翻譯

2. butterknife

這個庫應該大家都耳熟能詳了,大牛JakeWharton的作品,github上star數量超一萬,可見其受歡迎程度。


這個開源庫可以讓我們從大量的findViewById()和setOnclicktListener()解放出來,其對性能的影響微乎其微,其自定義註解的實現都是限定爲RetentionPolicy.CLASS,也就是註解到編譯出.class文件爲止有效,在運行時不額外消耗性能。、


Instead of slow reflection, code is generated to perform the view look-ups. Calling bind delegates to this generated code that you can see and debug.


有人覺得使用了這個庫之後代碼的可讀性差一些,這個真心不認同,相反,使用過後反倒代碼量少了好多,更清爽簡潔了。


關於編譯時註解效率的問題可以看下這篇文章關於java編譯時註解你需要知道的二三事。解除你的顧慮!

這個庫在Android Studio上配合android-butterknife-zelezny使用更酸爽!

3.fastjsongson

這兩個JSON序列化與反序列化庫應該都熟悉的了,fastjson是阿里的,gson是Google的,基本功能都差不多,至於爲什麼兩個庫都出現在這個APP裏面,應該是APP版本的各個開發者使用習慣不一樣吧,也有可能是使用的一些第三方庫依賴其中一種的原因。

這裏要提一下的是fastjson號稱是Java語言中最快的JSON庫,而且有專門針對Android精簡和優化的版本,體積減少了近一半。因爲體積更大,爲避免出現64K方法數限制而棄用fastjson的理由應該不再成立。fastjson Android版本

不過也許是因爲gson是Google官方出的,文檔什麼的也更詳細,gson在APP內出現的頻率還是更高的。

4.picasso   &&  Glide

A powerful image downloading and caching library for Android.

這個是square 開源的一個強大的圖片下載和緩存庫。很受歡迎,許多項目都有在使用這個庫。使用方式也很簡單。

Glide
Google員工私人項目,Google很多項目在用。picasso能做到的它都能做到,並且還支持gif。我在公司的項目中也使用的是這個庫。不過注意在使用這個庫給ImageView加載圖片的時候,ImageView設置 Tag的Id必須顯式指定。

關於Glide和Picasso這篇譯文有一個比較詳細的對比介紹 Glide VS Picasso(打算使用Glide的話注意看下這篇文章下面的評論)

具體的可以看我github上面的項目 Picasso,我用picasso和glide分別寫了一個例子。效果圖如下:

           


5.PullZoomView

An Android custom ListView and ScrollView with pull to zoom-in.

這個直接上效果圖了




6.SwipeBackLayout

An Android library that help you to build app with swipe back gesture.

一個能幫我們輕鬆實現右滑退出當前頁面功能的庫,這個庫也有使用在我們公司的項目中,不過花了不少時間在處理兼容性問題上(有時間的話會把填過的坑分享出來)。

這裏有必要再提一下這個庫在手勢處理方面使用到的ViewDragHelper,非常有用的一個工具類。

ViewDragHelper is a utility class for writing custom ViewGroups. It offers a number of useful operations and state tracking for allowing a user to drag and reposition views within their parent ViewGroup.

具體可以看下這篇文章Android ViewDragHelper完全解析 自定義ViewGroup神器

7.volley

這個庫也應該比較熟悉了,Google官方出的一個庫,包含網絡請求和圖片加載緩存功能。在處理小而頻繁的網絡請求上有優勢。

以前使用這個庫一般都是添加第三方依賴,比如android-volley 。現在已經有官方Gradle依賴了 。

如果沒有用過這個庫的,可以去看看大神郭霖對Volley的理解

8.Android-PickerView

仿iOS的PickerView控件,有時間選擇和選項選擇並支持一二三級聯動效果。

這個庫的作者還有另外幾個開源庫也很不錯的,有興趣的可以點上面鏈接去他的github上看下。




9.ViewPagerIndicator

Paging indicator widgets compatible with the ViewPager from the Android Support Library and ActionBarSherlock.

這個庫的作者是Jake Wharton(沒看錯,還是這位大神),功能和上面介紹的PagerSlidingTagStrip類似,一般與viewpager組合使用。用法看這裏




10.greenDAO

greenDAO is a light & fast ORM solution for Android that maps objects to SQLite databases. Being highly optimized for Android, greenDAO offers great performance and consumes minimal memory.

在所有將對象映射到 SQLite 數據庫中的 ORM 庫中,greenDAO 在性能方面佔很大優勢。而且文檔也很詳細。

不過最近有一個比較火的跨平臺移動數據庫引擎realm,支持iOS、OS X(Objective-C和Swift)以及Android。性能比原生的SQLite還要好。目標是要取代SQLite。可以多關注下。


最後

以上就是這個優秀的APP內使用到的大部分第三方庫了。希望對各位有幫助!
要是喜歡的話,就點個贊頂一下下哈~
最後也感謝一下這個APP的開發者們!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章