1. 程式人生 > >github開源專案大集合

github開源專案大集合

目前包括:

Android 開源專案第一篇——個性化控制元件(View)篇
包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、TextView、ScrollView、TimeView、TipView、FlipView、ColorPickView、GraphView、UI Style、其他
Android 開源專案第二篇——工具庫篇
包括依賴注入、圖片快取、網路請求、資料庫 ORM 工具包、Android 公共庫、高版本向低版本相容庫、多媒體、事件匯流排、感測器、安全、外掛化、檔案、其他
Android 開源專案第三篇——優秀專案篇
比較有意思的完整的 Android 專案
Android 開源專案第四篇——開發及測試工具篇
包括開發效率工具、開發自測相關、測試工具、開發及編譯環境、其他
Android 開源專案第五篇——優秀個人和團體篇
樂於分享並且有一些很不錯的開源專案的個人和組織,包括 JakeWharton、Chris Banes、Koushik Dutta 等大牛
第一部分 個性化控制元件(View)

主要介紹那些不錯個性化的 View,包括 ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、TextView、ScrollView、TimeView、TipView、FlipView、ColorPickView、GraphView、UI Style 等等。

一、ListView

android-pulltorefresh
一個強大的拉動重新整理開源專案,支援各種控制元件下拉重新整理,ListView、ViewPager、WebView、ExpandableListView、GridView、ScrollView、Horizontal ScrollView、Fragment 上下左右拉動重新整理,比下面 johannilsson 那個只支援 ListView 的強大的多。並且它實現的下拉重新整理 ListView 在 item 不足一屏情況下也不會顯示重新整理提示,體驗更好。
專案地址:

https://github.com/chrisbanes/Android-PullToRefresh
Demo 地址:https://github.com/Trinea/TrineaDownload/blob/master/pull-to-refreshview-demo.apk?raw=true
APP 示例:新浪微博各個頁面

RecyclerViewSwipeDismiss
輕量級支援 support-v7 中的 RecyclerView 的滑動刪除(Swipe to dismiss)行為,不需要修改原始碼,只要簡單的繫結onTouchListener
專案地址:https://github.com/CodeFalling/RecyclerViewSwipeDismiss


效果圖:Renderings

PinnedHeaderExpandableListView
首先它是一個 ExpandableListView,但是它的頭部可以固定,其次,在它的上面還有一個頭部可以來回伸縮
專案地址:https://github.com/singwhatiwanna/PinnedHeaderExpandableListView
效果圖:Renderings
APP 示例:百度手機衛士垃圾清理介面

StickyListHeaders
GroupName 滑動到頂端時會固定不動直到另外一個 GroupName 到達頂端的 ExpandListView,支援快速滑動,支援 Android2.3 及以上
專案地址:https://github.com/emilsjolander/StickyListHeaders
效果圖:Renderings
APP 示例:Android 4.0 聯絡人

pinned-section-listview
GroupName 滑動到頂端時會固定不動直到另外一個 GroupName 到達頂端的 ExpandListView
專案地址:https://github.com/beworker/pinned-section-listview
效果圖:Renderings

PinnedHeaderListView
GroupName 滑動到頂端時會固定不動直到另外一個 GroupName 到達頂端的 ExpandListView
專案地址:https://github.com/JimiSmith/PinnedHeaderListView

CustomFastScrollView
ListView 快速滑動,同時螢幕中間 PopupWindows 顯示滑動到的 item 內容或首字母
專案地址:https://github.com/nolanlawson/CustomFastScrollViewDemo
效果圖:Renderings

Android-ScrollBarPanel
ListView 滑動時固定的 Panel 指示顯示在 scrollbar 旁邊
專案地址:https://github.com/rno/Android-ScrollBarPanel
效果圖:Renderings

ListViewAnimations
帶 Item 顯示動畫的 ListView,動畫包括底部飛入、其他方向斜飛入、下層飛入、漸變消失、滑動刪除等
專案地址:https://github.com/nhaarman/ListViewAnimations
Demo 地址:https://play.google.com/store/apps/details?id=com.haarman.listviewanimations
APP 示例:Google plus、Google Now 卡片式進入、小米系統中應用商店、聯絡人、遊戲中心、音樂、檔案管理器的 ListView、Ultimate、Light Flow Lite、TreinVerkeer、Running Coach、Pearl Jam Lyrics、Calorie Chart、Car Hire、Super BART、DK FlashCards、Counter Plus、Voorlees Verhaaltjes 2.0

LinearListView
用 LinearLayout 實現的 ListView,可解決多個 ListView 並存等問題。目前自己也有需要,等親自嘗試過後會再具體介紹
專案地址:https://github.com/frankiesardo/LinearListView

PagingListView
分頁載入的 ListView。當滑動到 ListView 底部最後一個元素時,顯示一個進度行,然後載入下一頁資料,並顯示。
專案地址:https://github.com/nicolasjafelle/PagingListView

PullZoomView
支援下拉時 HeaderView 縮放的 ListView、ScrollView
專案地址:https://github.com/Frank-Zhu/PullZoomView
效果圖:Renderings

CalendarListview
實現每個月一行日曆效果的 ListView
專案地址:https://github.com/traex/CalendarListview
原理剖析文件:CalendarListview
效果圖:Renderings

sticky-headers-recyclerview
GroupName 滑動到頂端時會固定不動直到另外一個 GroupName 到達頂端的 ListView,採用 support-v7 中的 RecyclerView 實現
專案地址:https://github.com/timehop/sticky-headers-recyclerview

PullSeparateListView
到達頂部或底部繼續拉動時,實現 Item 間的相互分離,兩種模式:(1) 全部分離的模式,即螢幕內所有 Item 都會分離 (2)部分分離模式,以點選位置為分界點,部分 item 分離
專案地址:https://github.com/chiemy/PullSeparateListView
效果圖:Renderings

ExpandableLayout
Header 和 Content Item 都可以展開的 ExpandableListview
專案地址:https://github.com/traex/ExpandableLayout

PagedHeadListView
支援 paginated header 以及 material page indicator 的 ListView.
專案地址:https://github.com/JorgeCastilloPrz/PagedHeadListView
效果圖:Renderings

CustomSwipeListView
支援左滑彈出自定義選單,右滑刪除且允許撤銷,同時可以自定義滑動動畫時間和滑動觸發事件的時機等。
專案地址:https://github.com/xyczero/Android-CustomSwipeListView
Demo 地址:Download here
效果圖:Renderings

ExtractWordView
一個可以提取單詞的 ListView,支援”放大鏡”效果。
專案地址:https://github.com/jcodeing/ExtractWordView
Demo 地址:Download here
效果圖:Renderings

FlyRefresh
支援 ListView, GridView, RecyclerView, ScrollView 的下拉重新整理
專案地址:https://github.com/race604/FlyRefresh
效果圖:Renderings

二、ActionBar

三、Menu

MenuDrawer
滑出式選單,通過拖動螢幕邊緣滑出選單,支援螢幕上下左右劃出,支援當前 View 處於上下層,支援 Windows 邊緣、ListView 邊緣、ViewPager 變化劃出選單等。
專案地址:https://github.com/SimonVT/android-menudrawer
Demo 地址:http://simonvt.github.io/android-menudrawer/
APP 示例:Gmail、Google Music 等大部分 google app

SlidingMenu
滑出式選單,通過拖動螢幕邊緣滑出選單,支援螢幕左右劃出,支援選單 zoom、scale、slide up 三種動畫樣式出現。與 MenuDrawer 相比而言,SlidingMenu 支援選單動畫樣式出現,MenuDrawer 支援選單 view 處於內容的上下層
專案地址:https://github.com/jfeinstein10/SlidingMenu
原理剖析文件:SlidingMenu
Demo 地址:https://play.google.com/store/apps/details?id=com.slidingmenu.example
APP 示例:Foursquare, LinkedIn, Zappos, Rdio, Evernote Food, Plume, VLC for Android, ESPN ScoreCenter, MLS MatchDay, 9GAG, Wunderlist 2, The Verge, MTG Familiar, Mantano Reader, Falcon Pro (BETA), MW3 Barracks

DragLayout
使用 support.v4 包下的 ViewDragHelper 實現 QQ5.0 側滑
專案地址:https://github.com/BlueMor/DragLayout
效果圖:Renderings

Side-Menu.Android
分類側滑選單,Yalantis 出品。
專案地址:https://github.com/Yalantis/Side-Menu.Android
原理剖析文件:Side-Menu.Android
效果圖:Renderings

Context-Menu.Android
可以方便快速整合漂亮帶有動畫效果的上下文選單,Yalantis出品。
專案地址:https://github.com/Yalantis/Context-Menu.Android
效果圖:Renderings

SlideBottomPanel
底部劃出選單,滑動時背景圖透明度漸變,支援巢狀 LiewView 或 ScrollView
專案地址:https://github.com/kingideayou/SlideBottomPanel
Demo 地址:SlideBottomPanelDemo 下載
效果圖:Renderings

四、ViewPager 、Gallery

ConvenientBanner
通用的廣告欄控制元件,讓你輕鬆實現廣告頭效果。支援無限迴圈,可以設定自動翻頁和時間(而且非常智慧,手指觸碰則暫停翻頁,離開自動開始翻頁。你也可以設定在介面onPause的時候不進行自動翻頁,onResume之後繼續自動翻頁),並且提供多種翻頁特效。 對比其他廣告欄控制元件,大多都需要對原始碼進行改動才能載入網路圖片,或者幫你整合不是你所需要的圖片快取庫。而這個庫能讓有程式碼潔癖的你歡喜,不需要對庫原始碼進行修改你就可以使用任何你喜歡的網路圖片庫進行配合。 專案地址:https://github.com/saiwu-bigkoo/Android-ConvenientBanner
效果圖:Renderings

ViewPagerIndicator
簡化並實現 android 的 TabHost 效果,頂部滑動 tab,引導頁,支援自定義 tab 樣式,自定義滑動塊樣式和位置,自定義切換 tab 的過渡動畫,子介面的預載入和介面快取,設定介面是否可滑動
專案地址:https://github.com/LuckyJayce/ViewPagerIndicator

ScreenSlideIndicator
輕量級的圓形 Indicadtor,位置可以自由調整,不會對 ViewPager 產生任何影響。
專案地址:ScreenSlidePager
效果圖:Renderings

RecyclerViewPager
完全繼承自 RecyclerView,可以自定義觸發翻頁的距離,可自定義翻頁速度,支援垂直方向的 ViewPager,支援 Fragment。
專案地址:RecyclerViewPager
效果圖:Renderings

五、GridView

AndroidStaggeredGrid
允許非對齊行的 GridView,類似 Pinterest 的瀑布流,繼承自 AbsListView
專案地址:https://github.com/etsy/AndroidStaggeredGrid
APP 示例:Pinterest 等

PinterestLikeAdapterView
允許非對齊行的 GridView,類似 Pinterest 的瀑布流,允許下拉重新整理
專案地址:https://github.com/GDG-Korea/PinterestLikeAdapterView
APP 示例:Pinterest 等

StickyGridHeaders
GroupName 滑動到頂端時會固定不動直到另外一個 GroupName 到達頂端的 GridView
專案地址:https://github.com/TonicArtos/StickyGridHeaders
效果圖:Renderings

PagedDragDropGrid
Item 可拖動交換位置、拖動刪除的自定義控制元件,實際是自己繼承 ViewGroup 實現,類似桌面的多屏效果,可拖動到螢幕邊緣,螢幕自動左右滾動進行 Item 移動交換,可拖動進行刪除,單屏效果見上面 DraggableGridView
專案地址:https://github.com/mrKlar/PagedDragDropGrid
線上演示:http://youtu.be/FYTSRfthSuQ

PagingGridView
分頁載入的 GridView。當滑動到 GridView 底部最後一個行時,顯示一個進度行,然後載入下一頁資料,並顯示。
專案地址:https://github.com/nicolasjafelle/PagingGridView

六、ImageView

android-gif-drawable
支援 gif 顯示的 view,用 jni 實現的,編譯生成 so 庫後直接 xml 定義 view 即可,而且本身不依賴於其他開源專案所以相對下面的 ImageViewEx 簡單的多
專案地址:https://github.com/koral–/android-gif-drawable

TextDrawable
一個用於生成帶有文字或者字母的圖片的輕量級庫。擴充套件自 Drawable,因此可用於現有/自定義/網路等 ImageView 類,並且包含一個流介面用於建立 drawables 以及一個定製的 ColorGenerator
專案地址:https://github.com/amulyakhare/TextDrawable
效果圖:Renderings

七、ProgressBar

Android-RoundCornerProgressBar
Android 圓角 ProgressBar,可自定義圓角顏色和半徑,包括帶 Icon 和不帶 Icon 兩種型別。
專案地址:https://github.com/akexorcist/Android-RoundCornerProgressBar
效果圖:Renderings

MaterialLoadingProgressBar
抽取自 SwipeRefreshLayout 的 Material Design 進度指示器
專案地址:https://github.com/lsjwzh/MaterialLoadingProgressBar
效果圖:Renderings

MetaballLoading
A 2d metaball loading 專案地址:https://github.com/dodola/MetaballLoading 效果圖:Renderings 效果圖:Renderings

八、TextView

包括 TextView 及所有繼承自 TextView 控制元件,如 EditText、Button、RadioButton

Titanic
可以顯示水位上升下降(不知道該怎麼描述 囧)的 TextView
專案地址:https://github.com/RomainPiel/Titanic
效果圖:Renderings

MaterialEditText
EditText 的 Material Design 實現。包含 Google Material Design Spec中的 UI 效果和一些新增特性。
專案地址:https://github.com/rengwuxian/MaterialEditText

SlideSwitch
狀態切換的開關,可以設定為類似 IOS 的圓形,也可以設定為矩形,用 View 實現
專案地址:https://github.com/Leaking/SlideSwitch
效果圖:Renderings

九、ScrollView

PullScrollView
仿照新浪微博 Android 客戶端個人中心的 ScrollView,下拉背景伸縮回彈效果。
專案地址:https://github.com/MarkMjw/PullScrollView
效果圖:Renderings

OverScrollView
有彈性的 ScrollView,實現了當手指滑動到 ScrollView 的頂部、底部時,可以繼續的向上、向下拉伸。當釋放手指的時候,向上、下回彈
專案地址:https://github.com/EverythingMe/OverScrollView

十、TimeView

包括 TimePicker、DatePicker、CalendarView、Clock 等時間相關控制元件

AndroidWheel
Android Wheel 支援城市、多種日期時間、密碼、圖片
專案地址:https://code.google.com/p/android-wheel/
效果圖:Renderings

PickerView
仿 iOS 的 PickerView 控制元件,有時間選擇和選項選擇並支援一二三級聯動效果,TimePopupWindow 時間選擇器,支援年月日時分,年月日,時分等格式;OptionsPopupWindow 選項選擇器,支援一,二,三級選項選擇,並且可以設定是否聯動
專案地址:https://github.com/saiwu-bigkoo/Android-PickerView
效果圖:Renderings

十一、TipView

包括 Toast、角標、UndoBar 等提示性控制元件

UndoBar
螢幕底部顯示取消或是確認的 PopupWindows
專案地址:https://github.com/soarcn/UndoBar
效果圖:Renderings

HeadsUp
在 2.3 上使用 android 5.0 的 HeadsUp 效果
專案地址:https://github.com/zzz40500/HeadsUp
效果圖:http://upload-images.jianshu.io/upload_images/166866-543a5d26ab71d0f6.gif” alt=”Renderings” title=”” />

十二、FlipView

十三、ColorPickView

ColorPickerView
顏色選擇器,支援 PopupWindows 或新的 Activity 中開啟
專案地址:https://code.google.com/p/color-picker-view/
效果圖:Renderings

十四、GraphView

XCL-Charts
XCL-Charts 基於原生的 Canvas 來繪製各種圖表,在設計時,儘量在保證開發效率的同時,給使用者提供足夠多的定製化能力。因此使用簡便,同時具有相當靈活的定製能力。目前支援 3D/非 3D 柱形圖(Bar Chart)、3D/非 3D 餅圖(Pie Chart)、堆積圖(Stacked Bar Chart)、面積圖(Area Chart)、 折線圖(Line Chart)、曲線圖(Spline Chart)、環形圖(Dount Chart)、南丁格爾玫瑰圖(Rose Chart)、儀表盤(Dial Chart)、刻度盤(Gauge Chart)、雷達圖(Radar Chart)、圓形圖(Circle Chart)等圖表。其它特性還包括支援圖表縮放、手勢移動、動畫顯示效果、高密度柱形顯示、圖表分界定製線、多圖表的混合顯示及同資料來源不同型別圖表切換等。
專案地址:https://github.com/xcltapestry/XCL-Charts
Demo 地址:https://github.com/xcltapestry/XCL-Charts/blob/master/XCL-Charts-demo/bin/XCL-Charts-demo.apk?raw=true

十五、UI Style

不同樣式的系統 UI 風格,如 IOS、Bootstrap 風格

Material Design Android Library
Android L 中 Material Design 風格的元件適配到 Android 2.2+
專案地址:https://github.com/navasmdc/MaterialDesignLibrary

Android FlatUI
Android 扁平化風格的元件,支援一些自定義樣式
專案地址:https://github.com/eluleci/FlatUI
效果圖:Renderings

cheesesquare
全新 Android 設計庫演示 Demo,包括 Collapsing Toolbar、FloatingActionButton、View anchoring、NavigationView、Snackbar
專案地址:https://github.com/chrisbanes/cheesesquare
效果圖:Renderings

十六、其他

ChromeView
利用 Chromium 實現的 WebView,解決各個 Android 版本 WebView 不同的問題,同時利用最新 Chrome 程式碼
專案地址:https://github.com/pwnall/chromeview

EdgeEffectOverride
改變 ScrollView, ListView, ExpandableListView, GridView, ViewPager 等滾動控制元件滾動到邊緣的顏色效果
專案地址:https://github.com/AndroidAlliance/EdgeEffectOverride

AndroidSwipeLayout
滑動 Layout,支援單個 View,ListView,GridView
專案地址:https://github.com/daimajia/AndroidSwipeLayout
Demo 地址:Download Demo
效果圖:Renderings

Android-Anim-Playground
幾個動畫效果,其中第二個基於 android-svg 的繪製效果非常好
專案地址:https://github.com/Tibolte/Android-Anim-Playground
效果圖:Renderings

AlertView 仿iOS的AlertViewController 幾乎完美還原iOS 的 AlertViewController ,同時支援Alert和ActionSheet模式,每一個細節都是精雕細琢,並把api封裝成懶到極致模式,一行程式碼就可以進行彈窗.
專案地址:https://github.com/saiwu-bigkoo/Android-AlertView
效果圖:Renderings

PostOffice
建立 Holo 及 Material Design 樣式的 Dialog
專案地址:https://github.com/r0adkll/PostOffice
效果圖:Renderings

Swipecards
類似 Tinder 的卡片效果,可以載入圖片並動畫效果展示,向左滑動表示喜歡,向右表示不喜歡,根據 Kikoso’s Swipeable-Cards 改造而來
專案地址:https://github.com/Diolor/Swipecards

MaterialRangeBar
可以選擇一個範圍內的值而不是單個值的 SeekBar,RangeBar 的 Material Design 風格適配
專案地址:https://github.com/oli107/material-range-bar
效果圖:Renderings

road-trip
設定 path 的各種動畫效果,以及如何實現複雜路徑動畫,類似於 ios 中的指紋註冊介面的指紋動畫效果
專案地址:https://github.com/romainguy/road-trip
效果圖:Renderings

FlowLayout
一個簡單的流式佈局,用法類似 LinearLayout,但是能夠讓子元素根據寬度自動換行
專案地址:FLowLayout
效果圖:Renderings

第二部分 工具庫

主要包括那些不錯的開發庫,包括依賴注入框架、圖片快取、網路請求、資料庫 ORM 建模、Android 公共庫、Android 高版本向低版本相容、多媒體相關及其他。

一、依賴注入 DI

通過依賴注入減少 View、服務、資源簡化初始化,事件繫結等重複繁瑣工作

AndroidAnnotations(Code Diet)
android 快速開發框架
專案地址:https://github.com/excilys/androidannotations
文件介紹:https://github.com/excilys/androidannotations/wiki
官網網址:http://androidannotations.org/
特點:(1) 依賴注入:包括 view,extras,系統服務,資源等等
(2) 簡單的執行緒模型,通過 annotation 表示方法執行在 ui 執行緒還是後臺執行緒
(3) 事件繫結:通過 annotation 表示 view 的響應事件,不用在寫內部類
(4) REST 客戶端:定義客戶端介面,自動生成 REST 請求的實現
(5) 沒有你想象的複雜:AndroidAnnotations 只是在在編譯時生成相應子類
(6) 不影響應用效能:僅 50kb,在編譯時完成,不會對執行時有效能影響。
其他:與 roboguice 的比較:roboguice 通過執行時讀取 annotations 進行反射,所以可能影響應用效能,而 AndroidAnnotations 在編譯時生成子類,所以對效能沒有影響

二、圖片快取

picasso
square 開源的圖片快取
專案地址:https://github.com/square/picasso
文件介紹:http://square.github.io/picasso/
特點:(1)可以自動檢測 adapter 的重用並取消之前的下載
(2)圖片變換
(3)可以載入本地資源
(4)可以設定佔位資源
(5)支援 debug 模式

fresco
一款強大的圖片快取工具,由 Facebook 開發
專案地址:https://github.com/facebook/fresco
文件介紹:http://frescolib.org/
特點:(1) 兩個記憶體快取加上磁碟快取構成了三級快取
(2) 支援流式,可以類似網頁上模糊漸進式顯示圖片
(3) 對多幀動畫圖片支援更好,如 Gif、WebP
(4) 更多樣的顯示,如圓角、進度條、點選重試、自定義對焦點
(5) 更多樣的載入,如支援 EXIF、全面支援 WebP
(6) 支援 Android 2.3+

Glide
Glide 是一個 android 平臺上的快速和高效的開源的多媒體資源管理庫,提供 多媒體檔案的壓縮,記憶體和磁碟快取, 資源池的介面。
它可以最大效能地在 Android 裝置上讀取、解碼、顯示圖片和視訊。Glide 可以將遠端的圖片、視訊、動畫圖片等快取在裝置本地便於提高使用者瀏覽圖片的流暢體驗。
專案地址:https://github.com/bumptech/glide
特點:
(1) GIF 動畫的解碼
(2) 本地視訊劇照的解碼
(3) 支援縮圖
(4) Activity 生命週期的整合
(5) 轉碼的支援
(6) 動畫的支援
(7) OkHttp 和 Volley 的支援

三、網路請求

Asynchronous Http Client for Android
Android 非同步 Http 請求
專案地址:https://github.com/loopj/android-async-http
文件介紹:http://loopj.com/android-async-http/
特點:(1) 在匿名回撥中處理請求結果
(2) 在 UI 執行緒外進行 http 請求
(3) 檔案斷點上傳
(4) 智慧重試
(5) 預設 gzip 壓縮
(6) 支援解析成 Json 格式
(7) 可將 Cookies 持久化到 SharedPreferences

okhttp
square 開源的 http 工具類
專案地址:https://github.com/square/okhttp
文件介紹:http://square.github.io/okhttp/
特點:(1) 支援 SPDY( http://zh.wikipedia.org/wiki/SPDY )協議。SPDY 協議是 Google 開發的基於傳輸控制協議的應用層協議,通過壓縮,多路複用(一個 TCP 連結傳送網頁和圖片等資源)和優先順序來縮短載入時間。
(2) 如果 SPDY 不可用,利用連線池減少請求延遲
(3) Gzip 壓縮
(4) Response 快取減少不必要的請求

TwistVolley
TwistVolley 是對 Volley 的一個封裝庫。提供類似 Picasso 一樣的串聯式 API。使得使用 Volley 更加方便。
專案地址:https://github.com/TwistedEquations/TwistVolley

四、資料庫 orm 工具包

五、Android 公共庫

Guava
Google 的基於 java1.6 的類庫集合的擴充套件專案,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O 等等. 這些高質量的 API 可以使你的 JAVa 程式碼更加優雅,更加簡潔
專案地址:https://code.google.com/p/guava-libraries/
文件介紹:https://code.google.com/p/guava-libraries/wiki/GuavaExplained

b. HttpCache Http 快取
文件介紹:http://www.trinea.cn/android/android-http-cache
特點是:(1) 根據 cache-control、expires 快取 http 請求
(2) 支援同步、非同步 Http 請求
(3) 在匿名回撥中處理請求結果
(4) 在 UI 執行緒外進行 http 請求
(5) 預設 gzip 壓縮
(2) 公共 View(下拉及底部載入更多 ListView、底部載入更多 ScrollView、滑動一頁 Gallery)
(3) Android 常用工具類(網路、下載、Android 資源操作、shell、檔案、Json、隨機數、Collection 等等)

shipfaster
整合了 Dagger Otto Retrofit Robolectric Picasso OkHttp,方便快速開發
專案地址:https://github.com/pyricau/shipfaster

xUtils
基於 Afinal,包含 DbUtils、ViewUtils、HttpUtils、BitmapUtils 四大模組,可用於快速開發
專案地址:https://github.com/wyouflf/xUtils
原理剖析文件:xUtils

Afinal
Afinal 是一個 android 的 ioc,orm 框架,內建了四大模組功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。通過 finalActivity,我們可以通過註解的方式進行繫結 ui 和事件。通過 finalBitmap,我們可以方便的載入 bitmap 圖片,而無需考慮 oom 等問題。通過 finalDB 模組,我們一行程式碼就可以對 android 的 sqlite 資料庫進行增刪改查。通過 FinalHttp 模組,我們可以以 ajax 形式請求 http 資料
專案地址:https://github.com/yangfuhai/afinal
官網網址:http://www.afinal.org

UltimateAndroid
UltimateAndroid 是一個快速開發 Android 應用的框架,框架目前主要包含的功能有 View Injection,ORM,非同步網路請求和圖片載入,自動化指令碼測試,磁碟 LRU 等功能.同時提供了類似於 TripleDes、Webview 快速設定、Md5 處理、String 處理,Https 處理等常用工具類,還有超過 100 多種 UI 控制元件效果。
專案地址:https://github.com/cymcsg/UltimateAndroid
官網網址:http://blog.marshalchen.com/UltimateAndroid/

SAF
SAF(Simple Android Framework)是一個簡單的 android 框架,它為開發 Android app 提供了基礎性元件。
專案地址:https://github.com/fengzhizi715/SAF
官網網址:http://www.salesuite.cn/
包括:(1)Event Bus(事件匯流排)
(2) Rest Client(http 的框架)
(3) Image Cache(圖片快取)
(4) Dependency Injection(依賴注入)
(5) Sqlite ORM(sqlite 的 orm)
(6) Router(Activity、Fragment 的 Router)
(7) Utils(各種常用的工具類)

Barber
Custom View 神器。通過簡單的註解幫助你大大減少 Custom View 中的程式碼量。由於和 ButterKnife 一樣使用了 Annotation Proccessor ,所以對程式效能沒有影響。
專案地址:https://github.com/hzsweers/barber

device-year-class
A library that analyzes an Android device’s specifications and calculates which year the device would be considered “high end”.(facebook 開發的檢測手機主流配置工具)
專案地址:https://github.com/facebook/device-year-class

六、Android 高版本向低版本相容

七、多媒體相關

Vitamio
是一款 Android 與 iOS 平臺上的全能多媒體開發框架
專案地址:https://github.com/yixia/VitamioBundle
網站介紹:http://www.vitamio.org/docs/
特點:(1) 全面支援硬體解碼與 GPU 渲染
(2) 能夠流暢播放 720P 甚至 1080P 高清 MKV,FLV,MP4,MOV,TS,RMVB 等常見格式的視訊
(3) 在 Android 與 iOS 上跨平臺支援 MMS, RTSP, RTMP, HLS(m3u8)等常見的多種視訊流媒體協議,包括點播與直播。

Bitmap Smart Clipping using OpenCV
圖片智慧裁剪保留重要部分顯示
專案地址:https://github.com/beartung/tclip-android
利用淘寶的 http://code.taobao.org/p/tclip/ 庫完成
一淘玩客正在使用的圖片裁剪,自動識別圖片中的重要區域,並且在圖片裁剪時保留重要區域
特點:(1). 能進行人臉識別。圖片中有人臉,將自動視為人臉區域為重要區域,將不會被裁剪掉
(2).自動其它重要區域。如果圖片中未識別出人臉,則會根據特徵分佈計算出重區域

ExoPlayer
包括儀表板和 SmoothStreaming 自適應回放,快取持久化和自定義渲染器,方便自定義和擴充套件,並且可以通過應用商店更新
專案地址:https://github.com/google/ExoPlayer

八、事件匯流排(訂閱者模式)

通過釋出/訂閱事件解耦事件傳送和接受,從而簡化應用程式元件(Activities, Fragments 及後臺執行緒)之間的通訊

EventBus
greenrobot 的開源專案
專案地址:https://github.com/greenrobot/EventBus
原理剖析文件:EventBus
文件介紹:https://github.com/greenrobot/EventBus#general-usage-and-api
特點:(1) 支援在不同型別的執行緒中處理訂閱,包括髮布所線上程,UI 執行緒、單一後臺執行緒、非同步執行緒
(2) 支援事件優先順序定義,支援優先順序高的訂閱者取消事件繼續傳遞,支援粘性事件,是不是跟系統的有序廣播、粘性廣播很像啊
(3) 不是基於 annotations
(4) 效能更優
(5) 體積小
(6) 支援單例建立或建立多個物件
(7) 支援根據事件型別訂閱

Otto
Square 的開源專案,基於 Guava 的 Android 優化
專案地址:https://github.com/square/otto
文件介紹:http://square.github.io/otto/
EventBus 與 Otto 的功能及效能對比文件
EventBus 與 Otto 效能對比 Demo Apk

九、感測器

十、安全

十一、外掛化

更多見:Android 外掛化作用、概念以及不錯的資料(包括開源專案)和解決方案

Android Plugin Framework
Android 外掛式開發,開放的原始碼目前不完整
專案地址:https://github.com/umeng/apf

ANR-WatchDog
Android ANR 監聽,通過監聽自己的 UI Thread 是否被執行確定是否發生了 ANR,並可以設定相關事件
專案地址:https://github.com/SalomonBrys/ANR-WatchDog

十二、檔案

對不同文件型別的處理,包括 PDF、Word、EPub、Html、Zip 等

Office 365 SDK for Android Preview
可支援 Microsoft SharePoint Lists, Microsoft SharePoint Files, Microsoft Exchange Calendar, Microsoft Exchange Contacts, Microsoft Exchange Mail
專案地址:https://github.com/OfficeDev/Office-365-SDK-for-Android

jsoup
一個解析 html 的 java 庫,可方便的提取和操作資料
專案地址:https://github.com/jhy/jsoup
官網網址:http://jsoup.org/
作用:(1) 從一個 url、檔案或 string 獲得 html 並解析
(2) 利用 dom 遍歷或 css 選擇器查詢、提取資料
(3) 操作 html 元素
(4) 根據白名單去除用於提交的非法資料防止 xss 攻擊
(5) 輸出整齊的 html

十三、其他

Bolts
Android 的非同步程式設計模式
專案地址:https://github.com/BoltsFramework/Bolts-Android/
與 AsyncTask 比較:(1) 使用的是無大小限制的執行緒池
(2) 任務可組合可級聯,防止了程式碼耦合

SmartAppUpdates
Android App 增量升級,包含前後端方案、Demo、以及 so 庫,可用於商店或大體積 App 差分升級
專案地址:https://github.com/cundong/SmartAppUpdates

DebugLog
可以幫你建立更簡單和更容易理解的除錯日誌,能夠友好的顯示除錯資訊所在類和函式。
專案地址:https://github.com/MustafaFerhan/DebugLog
效果圖:Renderings

第三部分 優秀專案

主要介紹那些 Android 還不錯的完整專案,目前包含的專案主要依據是專案有意思或專案分層規範比較好。

一、系統及平臺

第四部分 開發工具及測試工具

主要介紹和 Android 開發工具和測試工具相關的開源專案。

一、開發效率工具

IntelliJ Plugin for Android Parcelable boilerplate code generation
Android studio 外掛,生成 Parcelable 程式碼
專案地址:https://github.com/mcharmas/android-parcelable-intellij-plugin
效果圖:Renderings

SelectorChapek for Android
Android Studio 外掛,可根據固定檔名格式資源自動生成 drawable selectors xml 檔案。
專案地址:https://github.com/inmite/android-selector-chapek

RoboCoP
利用 Gradle task 根據固定格式的 json 檔案生成 ContentProvider
專案地址:https://github.com/mediarain/RoboCoP

Gradle Retrolambda Plugin
Retrolambda是將 Java8 的 Lambdas 應用於 Java7 的工具,本專案是 Gradle 外掛,通過 Retrolambda 從而使 Java 或 Android 專案用 Java8 的 Lambdas 編寫,將編譯後的位元組碼轉換為 Java6 和 7 的位元組碼從而正常執行
專案地址:https://github.com/evant/gradle-retrolambda

GsonFormat
根據 JSONObject 格式的字串,自動生成實體類引數的 Android Studio/IntelliJ IDEA 外掛
專案地址:https://github.com/zzz40500/GsonFormat
效果圖:Renderings

AndroidLocalizationer
可用於將專案中的 string 資源自動翻譯為其他語言的 Android Studio/IntelliJ IDEA 外掛
專案地址:https://github.com/westlinkin/AndroidLocalizationer

Material Palette
一個將現有的色彩方案組合成材料設計的調色盤方案,提供下載。選取兩個主要色彩後便可以提供下載,提供下載的格式可以是 android 的資源 xml 檔案,以色彩的方式提供,也可以是 CSS、SVG、PNG 等常見格式檔案。
專案地址:http://www.materialpalette.com/

二、開發自測相關

BoundBox
可用於測試類各種訪問許可權的屬性、方法。實際是通過 BoundBox 這個 annotation 生成一個屬性和方法都是 public 許可權的中間類並對此類進行測試完成的
專案地址:https://github.com/stephanenicolas/boundbox

三、測試工具

Spoon
可用於 android 不同機型裝置自動化測試,能將應用 apk 和測試 apk 執行在不同機器上並生成相應測試報告。
專案地址:https://github.com/square/spoon

Tencent APT
APT 是騰訊開源的一個 Android 平臺高效效能測試元件,提供豐富實用的功能,適用於開發自測、定位效能瓶頸;測試人員完成效能基準測試、競品對比測試
專案地址:https://github.com/stormzhang/APT

Android py-uiautomator
py-uiautomator 是一個對 Android uiautomator 用 python 進行封裝的測試框架.
專案地址:https://github.com/xiaocong/uiautomator

stetho
強大的 Android Debug 工具。支援網路請求監控以及資料庫檢視,可以和 Chrome DevTools 結合或者命令列模式。
專案地址:https://github.com/facebook/stetho

四、開發及編譯環境

Buck
facebook 開源的 Android 編譯工具,效率是 ant 的兩倍。主要優點在於:
(1) 加快編譯速度,通過並行利用多核 cpu 和跟蹤不變資源減少增量編譯時間實現
(2) 可以在編譯系統中生成編譯規則而無須另外的系統生成編譯規則檔案
(3) 編譯同時可生成單元測試結果
(4) 既可用於 IDE 編譯也可用於持續整合編譯
(5) facebook 持續優化中
專案地址:https://github.com/facebook/buck

Android Maven Plugin
Android Maven 外掛,可用於對 android 三方依賴進行管理。在 J2EE 開發中,maven 是非常成熟的依賴庫管理工具,可統一管理依賴庫。
專案地址:https://github.com/jayway/maven-android-plugin

ChromeADB
Chrome 的 Adb 外掛,當登入後,能看到所有連線的裝置並操作,可以看應用、程序、記憶體及磁碟使用情況等
專案地址:https://github.com/importre/chromeadb

五、其他

Crashlytics
提供豐富的應用崩潰資訊日誌收集
輕量級,豐富,可自定義應用崩潰資訊收集器,附有郵件通知
專案地址:http://www.crashlytics.com/
整合外掛:Android Studio, Eclipse and IntelliJ

Android Resource Navigator
chrome 外掛,可以方便的檢視 github 上 android 原始碼工程的 styles.xml 和 themes.xml。主要功能:
(1) 快速開啟 android styles.xml themes.xml
(2) 方便在資源間跳轉。styles.xml themes.xml 檔案中資源連結跳轉,可以方便跳轉到某個資源
(3) 方便查詢某個 style 和 theme。chrome 位址列輸入 arn+tab+搜尋內容回車即可
(4) 自動下載不同解析度下的 drawable
(5) 通過對映查詢那些不是按照固定命名規則命名的 style 和 theme
專案地址:https://github.com/jgilfelt/android-resource-navigator
線上演示:https://chrome.google.com/webstore/detail/android-resource-navigato/agoomkionjjbejegcejiefodgbckeebo?hl=en&gl=GB

Complete Android Fragment & Activity Lifecycle
完整的 Android Fragment/Activity 生命週期圖
專案地址:https://github.com/xxv/android-lifecycle

scrollscreenshot
Android 滾動螢幕自動截圖 jar 包,支援縱向、橫向滾動截圖拼接
專案地址:https://github.com/PGSSoft/scrollscreenshot
效果圖:Renderings

leakcanary
Android 記憶體洩露檢測工具,整合方便,出現洩露後報告直觀
專案地址:https://github.com/square/leakcanary
效果圖:Renderings

第五部分

主要介紹那些樂於分享並且有一些很不錯的開源專案的個人和組織。Follow 大神,深挖大神的專案和 following,你會發現很多。

一、個人

JakeWharton
就職於 Square,絕對牛逼的大神,專案主要集中在 Android 版本相容,ViewPager 及開發工具上
Github 地址:https://github.com/JakeWharton
代表作:ActionBarSherlock,Android-ViewPagerIndicator,Nine Old Androids,SwipeToDismissNOA,hugo,butterknife,Android-DirectionalViewPager, scalpel
pidcat 另外對 square 及其他開源專案有很多貢獻
主頁:http://jakewharton.com/

Chris Banes
Github 地址:https://github.com/chrisbanes
代表作:ActionBar-PullToRefresh,PhotoView,Android-BitmapCache,Android-PullToRefresh
主頁:http://chris.banes.me/

Manuel Peinado
Github 地址:https://github.com/ManuelPeinado
代表作:FadingActionBar,GlassActionBar,RefreshActionItem,QuickReturnHeader

Jeff Gilfelt
Github 地址:https://github.com/jgilfelt
代表作:android-mapviewballoons,android-viewbadger,android-actionbarstylegenerator,android-sqlite-asset-helper
主頁:http://jeffgilfelt.com

sephiroth74
就職於 Aviary.com
Github 地址:https://github.com/sephiroth74
代表作:ImageViewZoom,HorizontalVariableListView,AndroidWheel,purePDF
主頁:http://www.sephiroth.it/

二、組織

Square
有態度有良心的企業,很多不錯的分享
Github 地址:https://github.com/square
代表作:okhttp、fest-android,android-times-square、picasso、dagger、spoon 等等
主頁:http://square.github.io/

Inmite s.r.o.
Github 地址:https://github.com/inmite
代表作:android-styled-dialogs,android-grid-wichterle,android-selector-chapek
主頁:http://www.inmite.eu/

三、部落格

部分國外著名 Android 開發者資訊