轉載請注明出處:http://blog.csdn.net/bbld_/article/details/40634829
1些materialdesign中的功能像material主題和自定義activity的過渡只能在Android 5.0(API級別21)或以上的系統版本中才能使用。但是你可以設計你的app去使用那些功能,不管在支持materialdesign的裝備上亦或是初期的Android版本上。
定義可選的樣式
你可以配置你的app去使用material design在支持它的裝備上,在初期的Android版本中使用舊的主題:
1. 定義1個主題,它繼承1個舊的主題(像Holo),放在res/values/styles.xml。
2. 定義1個相同名字主題,繼承material主題,放在res/values⑵1/styles.xml。
3. 在manifest文件中設置這個主題為你的app主題。
注意:如果你的app使用了material主題但是沒有提供1個可替換的主題,你的app將沒法在Android 5.0之前的系統中運行。
提供可替換的布局
如果你根據設計準則不使用任何Android5.0引入的新的XML的屬性去設計你的布局,他們能在Android的初期版本上運行。否則,你可以提供可選擇的布局。你也能夠提供可替換的布局,以自定義你的app看起來是在初期的Android版本上。
為Android 5.0(API級別21)或以上系統創建布局時則布局文件放在res/layout-v21/文件夾里,初期Android版本的可替換的布局則放在res/layout/文件夾里。例如,res/layout/my_activity.xml是res/layout-v21/my_activity.xml的1個可替換的布局
為了不重復的代碼,在res/values/里定義你的樣式資源,為新的API修改的樣式則放在res/values-v21/文件夾里,并且使用樣式繼承,在res/values/中定義基本的樣式,在res/values-v21/.中繼承基本的樣式。
使用支持庫
v7支持庫r21及以上的版本包括以下的material design的特點:
l 當你利用Theme.AppCompat的主題時,1些控件具有materialdesign style的特點。
l Theme.AppCompat具有Color palette theme屬性。
l RecyclerView控件顯示數據集合。
l CardView控件創建卡片。
l Palette類去從圖片中提取突出的色彩。
系統控件
Theme.AppCompat主題為這些控件提供了material design styles:
l EditText
l Spinner
l CheckBox
l RadioButton
l SwitchCompat
l CheckedTextView
色彩調色板
為了在Android v7支持庫中取得material design styles和自定義調色板,使用1個Theme.AppCompat的主題:
列表和卡片
RecyclerView和CardView控件可以通過Android v7支持包在初期的Android版本上使用。但是有這些限制:
l CardView回退到使用有規則的陰影通過使用額外的填充。
l CardView不會裁剪它的子視圖,使用圓角相交。
依賴
要在早于Android5.0(API級別21)的系統中使用這些功能,需添加Android v7支持庫到你的項目中,下面是添加Gradle依賴:
補充:Eclipse中添加依賴在前面的博客中我已做了說明(Android Material Design-Creating Lists and Cards(創建列表和卡片)-(3))。
檢查系統版本
以下功能僅適用于Android的5.0(API等級21)以上:
l Activity transitions(Activity的過渡轉換)
l Touch feedback(觸摸反饋)
l Reveal animations(顯示、揭穿動畫)
l Path-based animations(基于路徑的動畫)
l Vector drawables(矢量繪圖資源)
l Drawable tinting(Drawable著色)
為了保持與初期Android版本的兼容性,在調用這些API之前檢查系統的版本:
注意:要指定你的app所能支持的版本,使用在你的manifest文件中android:minSdkVersion和android:targetSdkVersion屬性去聲明。要在Android 5.0中需要使用material desing的功能,設置android:targetSdkVersionattribute屬性的值為21.。更多的信息請參閱<uses-sdk>的API文檔說明。
----------------------------------------------------------------- Material Design系列的翻譯完結 ----------------------------------------------------------------------