Android Support Library詳細(xì)介紹

更多原創(chuàng)文章和優(yōu)質(zhì)資源請關(guān)注公眾號:


open_dev

網(wǎng)上對Android Support Library中各個依賴包介紹的中文資料太少了,結(jié)合官方文檔和有限的參考資料做了一次總結(jié)亡电,有描述得不對的地方還請指正蔑穴。

一锅风、主工程、依賴包逼纸、jar包借帘、android.jar、Android Support Library的關(guān)系

一個Android工程通常包括主工程和依賴包淌铐,依賴包又有兩種形式:

  • 一種是單獨(dú)的工程或者aar:在主工程的配置文件中指明主工程和依賴包的依賴關(guān)系之后肺然,就可以在主工程中正常使用依賴包的類和接口了,這種適合于依賴包中有圖片資源腿准、so等不能打包到j(luò)ar包中或者依賴包需要頻繁改動的情況际起,比如Nine Old AndroidsPullToRefresh吐葱、FancyCoverFlow等街望;

  • 另一種是jar包:放在主工程的libs文件夾下,這種通常是依賴包中只有代碼弟跑,比如Fastjson.jar灾前、Volley.jarGson.jar等孟辑。

為了程序能夠編譯通過并在設(shè)備中正常運(yùn)行哎甲,主工程除了依賴第三方的工程和jar包之外,還需要依賴安卓系統(tǒng)本身的代碼饲嗽,也就是我們在sdk的每個版本中看到的android.jar炭玫,這里面集成了android的所有API,隨著android sdk的升級貌虾,高版本的sdk中會增加很多新的API吞加,比如ActionBar、Fragment、RecyclerView等衔憨,如果在低版本的sdk中需要使用高版本新增的API怎么辦叶圃?不可能去更新移動設(shè)備中的android.jar吧,因為硬件設(shè)備集成的sdk版本是固定的巫财,android.jar也是固定的盗似,所以最好的方式是將新增的API以依賴包的形式集成到需要使用高版本API的應(yīng)用程序中。

谷歌早已經(jīng)考慮到了向后兼容的問題平项,所以推出了一系列脫離于android.jar的依賴包赫舒,比如常見的android-support-v4、appcompat-v7等闽瓢。這些依賴包可以直接集成到應(yīng)用程序中接癌,依賴包有的是jar包,有的是獨(dú)立的工程扣讼。如果你用的IDE是Android Studio缺猛,這些庫已經(jīng)上傳到了maven倉庫,在build.gradle中直接依賴即可椭符。

Android Support Library除了向后兼容的作用外荔燎,還有其它方面的好處:

  • 提供不適合打包進(jìn)framework的功能:Android官方對App開發(fā)提供了推薦設(shè)計,希望Android應(yīng)用都有相對一致的交互設(shè)計來減少用戶的使用成本销钝,希望三方App類似系統(tǒng)應(yīng)用從而完美融入到Android生態(tài)系統(tǒng)中有咨。但是這都僅僅是推薦,不要求開發(fā)者一定要這樣蒸健,如果有這種需求就可以使用官方支持包提供的這些功能座享,避免重復(fù)造輪子。如支持包中的DrawerLayout似忧、Snackbar等類都是這種情況渣叛。

  • 為了支持不同形態(tài)的設(shè)備:通過使用支持包來在不同形態(tài)設(shè)備上提供功能,如手機(jī)盯捌、電視淳衙、可穿戴設(shè)備等。

各個依賴包可以在“<sdk>/extras/android/support/”文件夾下查看饺著,如果該路徑下沒有滤祖,打開SDK Tools更新SDK即可。

二瓶籽、各個版本的Android Support Library介紹

Android 各個Support Library支持的最低版本如下:

Android Support Library更新狀況

目前為止Android Support Library包含的依賴包有:

Android Support Library匯總

1匠童、V4 Support Libraries

這個包是為Android 2.3(API版本為9)及以上的版本設(shè)計的(Support V4首次發(fā)布是在2011年,它支持的最低版本是Android 1.6即API Level 4塑顺,V4的名字也是根據(jù)其支持的最低API版本來的汤求,隨著系統(tǒng)的迭代Android 1.6的設(shè)備已經(jīng)很少了俏险,官方在Support Library 24.2.0版本的時候移除了對Android 2.2(API Level 8)及以下版本的支持,所以從Android Support Library 24.2.0開始扬绪,V4包支持的最低版本是Android 2.3即API Level 9)竖独,它包含大部分高版本中有而低版本中沒有的API,包括application components挤牛、user interface features莹痢、accessibility、data handling墓赴、network connectivity竞膳、programming utilities,下面是對V4中的一些關(guān)鍵API的介紹:

App Components:

  • Fragment:一個專為解決Android碎片化的類诫硕,通過它可以讓同一個程序適配不同的屏幕坦辟。

  • NotificationCompat:支持更豐富的通知形式;

  • LocalBroadcastManager:適合于應(yīng)用內(nèi)的消息傳遞章办。

User Interface:

  • ViewPager:一個可以管理子view的viewgroup锉走,用戶可以在各個view之間自由切換,這個在很多應(yīng)用中都有使用到藕届;

  • PagerTitleStrip:一個關(guān)于當(dāng)前頁面挪蹭、上一個頁面和下一個頁面的一個非交互的指示器。它經(jīng)常作為ViewPager控件的一個子控件被被添加在XML布局文件中休偶。

  • PagerTabStrip:一個關(guān)于當(dāng)前頁面梁厉、上一個頁面和下一個頁面的一個可交互的指示器。它經(jīng)常作為ViewPager控件的一個子控件被被添加在XML布局文件中椅贱。

  • DrawerLayout:抽屜

  • SlidingPaneLayout:用于實現(xiàn)兩列面板的切換懂算,在UI最上層的使用提供了一個水平的只冻,多個面板的布局庇麦。左邊的面板可以看作是一個內(nèi)容列表或者是瀏覽,右邊的面板的任務(wù)是顯示詳細(xì)的內(nèi)容喜德。

Accessibility:

  • ExploreByTouchHelper:幫助自定義View實現(xiàn)accessibility的幫助類山橄;

  • AccessibilityEventCompat、AccessibilityNodeInfoCompat舍悯、AccessibilityNodeProviderCompat航棱、AccessibilityDelegateCompat:Accessibility的適配類

Content:

  • Loader:異步加載數(shù)據(jù);

  • FileProvider:應(yīng)用間的私有文件共享萌衬。

關(guān)于V4的更多API介紹可以參見:Support V4 Libraries API References

在Android Support Library 24.2.0及之后的版本中饮醇,為了增強(qiáng)效率和減小APK的大小起見,Android將V4包從一個獨(dú)立的依賴包拆分成v4 compat library秕豫、v4 core-utils library朴艰、v4 core-ui library观蓄、v4 media-compat library和v4 fragment library這5個包,考慮到V4的向后兼容祠墅,你在工程中依賴V4這個依賴包時默認(rèn)是包含拆分后的5個包的侮穿,但為了節(jié)省APK大小,建議在開發(fā)過程中根據(jù)實際情況依賴對應(yīng)的V4包毁嗦,移除不必要的V4包亲茅。

拆分后的5個V4包如下:

V4拆包

v4 compat library

兼容一些 Framework API,如 Context.getDrawable() 和 View.performAccessibilityAction()狗准,大小為 602k克锣,在AS中的依賴方式如下:

    compile 'com.android.support:support-compat:24.2.1'

v4 core-utils library

提供一系列核心的工具類,如 AsyncTaskLoader 和 PermissionChecker驶俊,大小為 90k娶耍,在AS中的依賴方式如下:

    compile 'com.android.support:support-core-utils:24.2.1'

v4 core-ui library

提供一系列核心的 UI,如 ViewPager饼酿、 NestedScrollView榕酒,大小為 240k,在AS中的依賴方式如下:

    compile 'com.android.support:support-core-ui:24.2.1'

v4 media-compat library

android.media 兼容庫故俐,包括 MediaBrowser 和 MediaSession想鹰,大小為 248k,在AS中的依賴方式如下:

    compile 'com.android.support:support-media-compat:24.2.1'

v4 fragment library

跟fragment相關(guān)部分药版,大小為 136k辑舷。V4這個子庫依賴了其他4個子庫,所以我們一旦依賴這個庫就會自動導(dǎo)入其他4個子庫槽片,這跟直接依賴整個support-v4效果類似何缓,在AS中的依賴方式如下:

compile 'com.android.support:support-fragment:24.2.1'

拆包并不一定代表能夠真的解決問題,V4各子包的依賴關(guān)系如下还栓,可見即使拆包之后碌廓,要用到V4中的某個API時,依賴包并沒有減小多少:

V4拆包后各子包的依賴關(guān)系

2剩盒、V7 Support Libraries

&emsp谷婆;V7和V4一樣,同樣包含多個依賴包辽聊,但和V4不同的是纪挎,V7下的多個子包并不是后面拆分開來的,而是最初發(fā)布時就以各個獨(dú)立庫的形式發(fā)布的跟匆。它是針對Android 2.3(API Level 9)及以上的版本谷歌提供了一系列的support包(和V4包的命名一樣异袄,V7最初支持的最低版本是Android 2.1即API Level 7,所以稱其為V7玛臂,同樣在Android Support Library 24.2.0將V7支持的最低版本改為Android 2.3即API Level 9了)烤蜕,這些support包各自對應(yīng)著特定的功能埠帕,每一個都可以單獨(dú)地被引用。

v7 appcompat library

這個包支持對Action Bar接口的設(shè)計模式玖绿、Material Design接口的實現(xiàn)等敛瓷,核心類有ActionBar、AppCompatActivity斑匪、AppCompatDialog呐籽、ShareActionProvider等,在AS中的依賴方式如下:

    compile 'com.android.support:appcompat-v7:24.2.1'

注意:這個包需要依賴android-support-v4蚀瘸。

v7 cardview library

支持cardview控件狡蝶,使用Material Design語言設(shè)計,卡片式的信息展示贮勃,在電視App中有廣泛的使用贪惹,在AS中的依賴方式如下:

    compile 'com.android.support:cardview-v7:24.2.1'

v7 gridlayout library

一個支持GridLayout布局的support包,在AS中的依賴方式如下:

    com.android.support:gridlayout-v7:24.2.1

v7 mediarouter library

一個用于設(shè)備間音頻寂嘉、視頻交換顯示的support包奏瞬,在AS中的依賴方式如下:

    com.android.support:mediarouter-v7:24.2.1

v7 palette library

該庫提供了palette類,使用這個類可以很方便提取出圖片中主題色泉孩。比如在音樂App中硼端,從音樂專輯封面圖片中提取出專輯封面圖片的主題色,然后將播放界面的背景色設(shè)置為封面的主題色寓搬,隨著播放音樂的改變珍昨,播放界面的背景色也會巧妙的跟著改變句喷,從而提供更好的用戶體驗镣典。唾琼,在AS中的依賴方式如下:

    com.android.support:palette-v7:24.2.1

v7 recyclerview library

核心類是RecyclerView,用于替換ListView父叙、GridView神郊,具體可以查閱RecyclerView方面的資料肴裙,在AS中的依賴方式如下:

    com.android.support:recyclerview-v7:24.2.1

v7 Preference Support Library

一個用于支持各種控件存儲配置數(shù)據(jù)的support包,比如CheckBoxPreference和ListPreference甜癞,在AS中的依賴方式如下:

    com.android.support:preference-v7:24.2.1

3、V8 Support Library

&emsp宛乃;V8 Support Library支持的最低SDK版本是Android 2.3即API Level 9悠咱。

v8 renderscript library

一個用于渲染腳本的support包蒸辆,在AS中按照如下方式配置即可正常使用:

    defaultConfig {
        renderscriptTargetApi 18
        renderscriptSupportModeEnabled true
    }

4析既、V13 Support Library

這個包的作用主要是為Android3.2(API Level 13)及以上的系統(tǒng)提供更多地Framgnet特性支持,使用它的原因在于拂玻,android-support-v4中雖然也對Fragment做了支持宰译,由于要兼容低版本,導(dǎo)致他是自行實現(xiàn)的 Fragment 效果沿侈,在高版本的 Fragment 的一些特性丟失了,而對于 v13以上的 sdk 版本缀拭,我們可以使用更加有效,特性更多的代碼诲泌,在AS中的依賴方式如下:

    com.android.support:support-v13:24.2.1

5铣鹏、Multidex Support Library

該support包用于使用多dex技術(shù)編譯APP,當(dāng)一個應(yīng)用的方法數(shù)超過65536個時需要使用multidex配置诚卸,關(guān)于multidex的更多信息合溺,可以參見如何編譯超過65K方法數(shù)的應(yīng)用,在AS中的依賴方式如下:

    compile 'com.android.support:multidex:1.0.0'

6棠赛、Annotations Support Library

一個支持注解的support包,在AS中的依賴方式如下:

    compile 'com.android.support:support-annotations:24.2.1'

7鼎俘、Design Support Library

一個用于支持Design Patterns的support包辩涝,它提供了Material Desgin設(shè)計風(fēng)格的控件,在AS中的依賴方式如下:

    com.android.support:design:24.2.1

8怔揩、Custom Tabs Support Library

一個提供了在應(yīng)用中添加和管理custom tabs的support包,在Google IO 2015中有介紹伏伐,在AS中的依賴方式如下:

    compile 'com.android.support:customtabs:24.2.1'

9、Percent Support Library

一個提供了百分比布局的support包藐翎,通過這個包可以實現(xiàn)百分比布局砰苍,在AS中的依賴方式如下:

    com.android.support:percent:24.2.1

三、參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末圈暗,一起剝皮案震驚了整個濱河市裕膀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寸齐,老刑警劉巖抄谐,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛹含,死亡現(xiàn)場離奇詭異,居然都是意外死亡浦箱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門咽安,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竖幔,“玉大人是偷,你說我怎么就攤上這事募逞〔銎溃” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵纠脾,是天一觀的道長苟蹈。 經(jīng)常有香客問我右核,道長,這世上最難降的妖魔是什么贺喝? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任躏鱼,我火速辦了婚禮,結(jié)果婚禮上染苛,老公的妹妹穿的比我還像新娘。我一直安慰自己贸呢,他們只是感情好拢军,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著固蛾,像睡著了一般度陆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上懂傀,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機(jī)與錄音恃泪,去河邊找鬼。 笑死情连,一個胖子當(dāng)著我的面吹牛览效,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播挽拔,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼但校,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了州刽?” 一聲冷哼從身側(cè)響起浪箭,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎匹表,沒想到半個月后宣鄙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡苇羡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年鼻弧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叉存。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡度帮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瞳秽,到底是詐尸還是另有隱情,我是刑警寧澤寂诱,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布痰洒,位于F島的核電站浴韭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏念颈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一嗡靡、第九天 我趴在偏房一處隱蔽的房頂上張望窟感。 院中可真熱鬧,春花似錦哈误、人聲如沸躏嚎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虚茶。三九已至,卻和暖如春媳危,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸣皂。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留癌压,地道東北人荆陆。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像帜消,于是被迫代替她去往敵國和親浓体。 傳聞我的和親對象是個殘疾皇子泡挺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,162評論 25 707
  • 在之前的開發(fā)經(jīng)歷中經(jīng)常需要導(dǎo)入一些如v4、v7生闲、v13等Android官方的支持包,遇到這些情況時都是網(wǎng)上搜索一下...
    都有米閱讀 15,937評論 34 141
  • afinalAfinal是一個android的ioc悬蔽,orm框架 https://github.com/yangf...
    passiontim閱讀 15,434評論 2 45
  • 昨晚和朋友聊了聊旅行,卻悲哀地想起自己很久都沒一次正經(jīng)的旅行了彼宠。所謂正經(jīng)的旅行,想來應(yīng)該是身體與靈魂都在路上的拙已,身...
    貧僧法號鏟屎閱讀 245評論 0 0
  • 心情是最無法捉摸和定位的東西摧冀,因為它隨著人的情緒變化而變化系宫,而人又是多變的動物建车,誰都不知道下一秒會是什么鬼樣子。我...
    前行20年閱讀 366評論 0 0