Android Support兼容包詳解

背景

來自於知乎上邀請回答的一個問題Android中AppCompat和Holo的一個問題?, 看來不少人仍是對這些兼容包搞不清楚,那麼幹脆寫篇博客吧. html

Support Library

咱們都知道Android一些SDK比較分裂,爲此google官方提供了Android Support Library package 系列的包來保證高版本sdk開發的向下兼容性, 因此你可能常常看到v4,v7,v13這些數字,首先咱們就來理清楚這些數字的含義,以及它們之間的區別。 android

  • support-v4

用在API lever 4(即Android 1.6)或者更高版本之上。它包含了相對更多的內容,並且用的更爲普遍,例如:Fragment,NotificationCompat,LoadBroadcastManager,ViewPager,PageTabStrip,Loader,FileProvider 等 app

Gradle引用方法: ide

compile 'com.android.support:support-v4:21.0.3'
  • support-v7

這個包是爲了考慮API level 7(即Android 2.1)及以上版本而設計的,可是v7是要依賴v4這個包的,v7支持了Action Bar以及一些Theme的兼容。 gradle

Gradle引用方法: google

compile 'com.android.support:appcompat-v7:21.0.3'
  • support-v13

這個包的設計是爲了API level 13(即Android 3.2)及更高版本的,通常咱們都不經常使用,平板開發中能用到,這裏就不過多介紹了。 spa

Theme

回到知乎上的這個問題,咱們來介紹下各類Theme的概念。 設計

  • Hoho Theme

在4.0以前Android能夠說是沒有設計可言的,在4.0以後推出了Android Design,今後Android在設計上有了很大的改善,而在程序實現上相應的就是Holo風格,因此你看到有相似 Theme.Holo.Light、 Theme.Holo.Light.DarkActionBar 就是4.0的設計風格,可是爲了讓4.0以前的版本也能有這種風格怎麼辦呢?這個時候就不得不引用v7包了,因此對應的就有Theme.AppCompat.Light、 Theme.AppCompat.Light.DarkActionBar,若是你的程序最小支持的版本是4.0,那麼能夠不用考慮v7的兼容。 code

  • Material Design Theme

今年的5.0版本,Android推出了Material Design的概念,這是在設計上Android的又一大突破。對應的程序實現上就有Theme.Material.Light、 Theme.Material.Light.DarkActionBar等,可是這種風格只能應用在在5.0版本的手機,若是在5.0以前應用Material Design該怎麼辦呢?一樣的引用appcompat-v7包,這個時候的Theme.AppCompat.LightTheme.AppCompat.Light.DarkActionBar就是相對應兼容的Material Design的Theme。 htm

注意事項

  • gradle引用appcompat-v7包的時候就不須要引用v4了,由於v7裏默認包含了v4包;

  • compile ‘com.android.support:appcompat-v7:21.0.3’ 中的21表明API level 21推出的兼容包,因此若是你引用的是21以前的版本,則默認這些Theme.AppCompat.Light是Holo風格的,從21開始的版本默認是Material風格

  • 使用appcompat以後,你的全部的Activity應該繼承自ActionBarActivity,而ActionBarActivity繼承自FragmentActivity,因此放心的使用Fragment;

最後,相信已經講的很清楚了,你們有問題可直接博客留言。若是英語好的,可直接移步官方最權威的解釋https://developer.android.com/tools/support-library/features.html

相關文章
相關標籤/搜索