Android SDK中的Support兼容包詳解
背景
來(lái)自于知乎上邀請(qǐng)回答的一個(gè)問(wèn)題Android中AppCompat和Holo的一個(gè)問(wèn)題?, 看來(lái)很多人還是對(duì)這些兼容包搞不清楚,那么干脆寫篇博客吧.
Support Library
我們都知道Android一些SDK比較分裂,為此google官方提供了Android Support Library package 系列的包來(lái)保證高版本sdk開(kāi)發(fā)的向下兼容性, 所以你可能經(jīng)常看到v4,v7,v13這些數(shù)字,首先我們就來(lái)理清楚這些數(shù)字的含義,以及它們之間的區(qū)別。
support-v4
用在API lever 4(即Android 1.6)或者更高版本之上。它包含了相對(duì)更多的內(nèi)容,而且用的更為廣泛,例如:Fragment,NotificationCompat,LoadBroadcastManager,ViewPager,PageTabStrip,Loader,F(xiàn)ileProvider 等
Gradle引用方法:
compile 'com.android.support:support-v4:21.0.3'
support-v7
這個(gè)包是為了考慮API level 7(即Android 2.1)及以上版本而設(shè)計(jì)的,但是v7是要依賴v4這個(gè)包的,v7支持了Action Bar以及一些Theme的兼容。
Gradle引用方法:
compile 'com.android.support:appcompat-v7:21.0.3'
support-v13
這個(gè)包的設(shè)計(jì)是為了API level 13(即Android 3.2)及更高版本的,一般我們都不常用,平板開(kāi)發(fā)中能用到,這里就不過(guò)多介紹了。
Theme
回到知乎上的這個(gè)問(wèn)題,我們來(lái)介紹下各種Theme的概念。
Hoho Theme
在4.0之前Android可以說(shuō)是沒(méi)有設(shè)計(jì)可言的,在4.0之后推出了Android Design,從此Android在設(shè)計(jì)上有了很大的改善,而在程序?qū)崿F(xiàn)上相應(yīng)的就是Holo風(fēng)格,所以你看到有類似 Theme.Holo.Light、 Theme.Holo.Light.DarkActionBar 就是4.0的設(shè)計(jì)風(fēng)格,但是為了讓4.0之前的版本也能有這種風(fēng)格怎么辦呢?這個(gè)時(shí)候就不得不引用v7包了,所以對(duì)應(yīng)的就有 Theme.AppCompat.Light、 Theme.AppCompat.Light.DarkActionBar,如果你的程序最小支持的版本是4.0,那么可以不用考慮v7的兼容。
Material Design Theme
今年的5.0版本,Android推出了Material Design的概念,這是在設(shè)計(jì)上Android的又一大突破。對(duì)應(yīng)的程序?qū)崿F(xiàn)上就有 Theme.Material.Light、 Theme.Material.Light.DarkActionBar等,但是這種風(fēng)格只能應(yīng)用在在5.0版本的手機(jī),如果在5.0之前應(yīng)用Material Design該怎么辦呢?同樣的引用appcompat-v7包,這個(gè)時(shí)候的Theme.AppCompat.Light、 Theme.AppCompat.Light.DarkActionBar就是相對(duì)應(yīng)兼容的Material Design的Theme。
注意事項(xiàng)
gradle引用appcompat-v7包的時(shí)候就不需要引用v4了,因?yàn)関7里默認(rèn)包含了v4包;
compile ‘com.android.support:appcompat-v7:21.0.3' 中的21代表API level 21推出的兼容包,所以如果你引用的是21之前的版本,則默認(rèn)這些Theme.AppCompat.Light是Holo風(fēng)格的,從21開(kāi)始的版本默認(rèn)是Material風(fēng)格
使用appcompat之后,你的所有的Activity應(yīng)該繼承自ActionBarActivity,而ActionBarActivity繼承自FragmentActivity,所以放心的使用Fragment;
最后,相信已經(jīng)講的很清楚了,大家有問(wèn)題可直接博客留言。如果英語(yǔ)好的,可直接移步官方最權(quán)威的解釋https://developer.android.com/tools/support-library/features.html
- 解析ADT-20問(wèn)題 android support library
- Android主題切換之探究白天和夜間模式
- Android夜間模式最佳實(shí)踐
- android基礎(chǔ)教程之夜間模式實(shí)現(xiàn)示例
- javascript判斷iphone/android手機(jī)橫豎屏模式的函數(shù)
- Android 聽(tīng)筒模式的具體實(shí)現(xiàn)實(shí)例
- android 如何判斷當(dāng)前是否為飛行模式
- android系統(tǒng)在靜音模式下關(guān)閉camera拍照聲音的方法
- Android 情景模式的設(shè)置代碼
- AndroidSDK Support自帶夜間、日間模式切換詳解
相關(guān)文章
Android數(shù)字華容道小游戲開(kāi)發(fā)
這篇文章主要為大家詳細(xì)介紹了Android數(shù)字華容道小游戲開(kāi)發(fā)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
完美解決EditText和ScrollView的滾動(dòng)沖突(上)
這篇文章主要為大家詳細(xì)介紹了完美解決EditText和ScrollView滾動(dòng)沖突的方法,感興趣的小伙伴們可以參考一下2016-06-06
Android控件Spinner實(shí)現(xiàn)下拉列表及監(jiān)聽(tīng)功能
這篇文章主要介紹了Android控件Spinner實(shí)現(xiàn)下拉列表及監(jiān)聽(tīng)功能,這是在Web開(kāi)發(fā)中一個(gè)必不可少的交互性組件,而在Android中的對(duì)應(yīng)實(shí)現(xiàn)就是Spinner。需要的朋友可以參考下2018-07-07
Android加載對(duì)話框同時(shí)異步執(zhí)行實(shí)現(xiàn)方法
Android中通過(guò)子線程連接網(wǎng)絡(luò)獲取資料,同時(shí)顯示加載進(jìn)度對(duì)話框給用戶的操作2012-11-11
android實(shí)現(xiàn)滑動(dòng)標(biāo)簽頁(yè)效果的代碼解析
這篇文章主要介紹了android實(shí)現(xiàn)滑動(dòng)標(biāo)簽頁(yè)效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
詳解Android studio 動(dòng)態(tài)fragment的用法
這篇文章主要介紹了Android studio 動(dòng)態(tài)fragment的用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
Kotlin字節(jié)碼層探究構(gòu)造函數(shù)與成員變量和init代碼塊執(zhí)行順序
這篇文章主要介紹了字節(jié)碼層Kotlin構(gòu)造函數(shù)與成員變量和init代碼塊執(zhí)行順序,kotlin里面的構(gòu)造函數(shù)分為主構(gòu)造函數(shù)和次構(gòu)造函數(shù)。主構(gòu)造函數(shù)只能有一個(gè),次構(gòu)造函數(shù)個(gè)數(shù)不限制,可以有一個(gè)或者多個(gè)2022-11-11

