1. 程式人生 > >Android Material Design-Maintaining Compatibility(保持兼容性)-(七)

Android Material Design-Maintaining Compatibility(保持兼容性)-(七)

widget tail style 到你 lora desing 兼容 ren eve

轉載請註明出處:http://blog.csdn.net/bbld_/article/details/40634829

翻譯自: http://developer.android.com/training/material/compatibility.html


一些materialdesign中的功能像material主題和自己定義activity的過渡僅僅能在Android 5.0(API級別21)或以上的系統版本號中才幹使用。可是你能夠設計你的app去使用那些功能,不管在支持materialdesign的設備上亦或是早期的Android版本號上。

定義可選的樣式

你能夠配置你的app去使用material design在支持它的設備上,在早期的Android版本號中使用舊的主題:

1. 定義一個主題。它繼承一個舊的主題(像Holo)。放在res/values/styles.xml

2. 定義一個同樣名字主題,繼承material主題,放在res/values-21/styles.xml

3. 在manifest文件裏設置這個主題為你的app主題。

註意:假設你的app使用了material主題可是沒有提供一個可替代的主題,你的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.xmlres/layout-v21/my_activity.xml的一個可替代的布局

為了避免反復的代碼,在res/values/裏定義你的樣式資源。為新的API改動的樣式則放在res/values-v21/目錄裏。而且使用樣式繼承,在res/values/中定義主要的樣式。在res/values-v21/.中繼承主要的樣式。

使用支持庫

v7支持庫r21及以上的版本號包括下面的material design的特點:

l 當你應用Theme.AppCompat的主題時。一些控件具有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和自己定義調色板,使用一個Theme.AppCompat的主題:

<!-- extend one of the Theme.AppCompat themes -->
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
    <!-- customize the color palette -->
    <item name="colorPrimary">@color/material_blue_500</item>
    <item name="colorPrimaryDark">@color/material_blue_700</item>
    <item name="colorAccent">@color/material_green_A200</item>
</style>


列表和卡片

RecyclerViewCardView控件能夠通過Android v7支持包在早期的Android版本號上使用。可是有這些限制:

l CardView回退到使用有規則的陰影通過使用額外的填充。

l CardView不會裁剪它的子視圖。使用圓角相交。


依賴

要在早於Android5.0(API級別21)的系統中使用這些功能。需加入Android v7支持庫到你的項目中,以下是加入Gradle依賴

dependencies {
    compile 'com.android.support:appcompat-v7:21.0.+'
    compile 'com.android.support:cardview-v7:21.0.+'
    compile 'com.android.support:recyclerview-v7:21.0.+'
}

補充:Eclipse中加入依賴在前面的博客中我已做了說明(Android Material Design-Creating Lists and Cards(創建列表和卡片)-(三))。


檢查系統版本號

下面功能僅適用於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之前檢查系統的版本號:

// Check if we're running on Android 5.0 or higher
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    // Call some material design APIs here
} else {
    // Implement this feature without material design
}

註意:要指定你的app所能支持的版本號,使用在你的manifest文件裏android:minSdkVersionandroid:targetSdkVersion屬性去聲明。要在Android 5.0中須要使用material desing的功能,設置android:targetSdkVersionattribute屬性的值為21.。很多其它的信息請參閱<uses-sdk>的API文檔說明。

----------------------------------------------------------------- Material Design系列的翻譯完結 ----------------------------------------------------------------------



Android Material Design-Maintaining Compatibility(保持兼容性)-(七)