Android Support兼容包(兼容問題總結)

前言

構建一個可以跑在不同版本 Android 平臺的軟件,是非常複雜和耗時的。爲了解決這個問題,Android 推出了 Android Support Library (安卓兼容包),讓新的UI控件也可以跑在早期的 Android 版本。

Support Library瞭解

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

  • support-v4

這個包是兼容API lever 4(即Android 1.6)或者更高版本之上。它包含了相對更多的內容,而且用的更爲廣泛,例如:Fragment,NotificationCompat,LoadBroadcastManager,ViewPager,PageTabAtrip,Loader,FileProvider 等

Gradle引用方法:compile ‘com.android.support:support-v4:21.0.3’

  • support-v7

這個包是兼容API level 7(即Android 2.1)及以上版本而設計的,但是v7是要依賴v4這個包的,v7支持了Action Bar以及一些Theme的兼容。目前v7包已經包含了v4包。所以這個兼容包是開發中最常用的。

Gradle引用方法:compile ‘com.android.support:appcompat-v7:21.0.3’

  • support-v13

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

兼容包中的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的兼容。

  • 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.Light、Theme.AppCompat.Light.DarkActionBar就是想對應兼容的Material Design的Theme。

兼容包中的Activity

Activity extend 兼容Activity

Activity繼承結構圖:

這裏寫圖片描述

3.0之後,可以使用Fragment了,support v4 提供了1.6~3.0的Fragment兼容,所以如果需要用兼容版的Fragment,則需要繼承support v4提供的FragmentActivity。

獲得Manager的方式也不同:
3.0以下:getSupportFragmentManager() 

3.0以上:getFragmentManager() 

再後來,ActionBar也被向前支持了,這次是出現在support v7裏,如果需要使用兼容版的ActionBar,則繼承support v7提供的ActionBarActivity(它是繼承FragmentActivity的)。

5.0提供了很多很多新東西,於是support v7也更新了,出現了AppCompatActivity

注意:(初期AppCompat僅僅只是讓ActionBar兼容到API 7。在AppCompat 21版本中,加入主題色、Toolbar等功能。顯然ActionBarActivity這個名字已經不在適用AppCompat。新版本中,推薦使用AppCompatActivity 代替ActionBarActivity (這個類已過時))

注意事項

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風格

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章