天天看點

Creating Apps With Material Design —— Working with DrawablesDrawable

轉載請注明 http://blog.csdn.net/eclipsexys 翻譯自Developer Android,時間倉促,有翻譯問題請留言指出,謝謝

Drawable

通過可繪制了以下功能幫助您實作材料設計你的應用程式: 

    可繪制着色 

    突出的顔色提取 

    矢量可繪 

這一課将告訴您如何使用您的應用程式這些功能。 

可調色的Drawable資源

采用Android5.0(API等級21)以上,則可以着色定義為透明遮罩位圖和nine-patches圖。您可以調整它們的色彩資源或主題屬性,以便于解決顔色資源(例如,

?android:attr/colorPrimary

)。通常情況下,您将建立這些資産隻有一次,并自動将它們上色,以符合您的主題。 

您可以将色彩以BitmapDrawable或NinePatchDrawable對象與setTint()方法。您還可以設定色調的顔色和模式,在不同的界面與

android:tint

android:tintMode

屬性,從圖像中提取顔色突出。 

Android的支援庫R21及以上包括面闆類,它可以讓你從圖像中提取突出的顔色。這個類中提取以下突出的顔色: 

    充滿活力 

    充滿活力的黑暗 

    充滿活力的光 

    靜音 

    柔和的暗 

    柔和的光線 

要提取這些顔色,傳遞一個Bitmap對象到您加載圖檔的Palette.generate()靜态方法在背景線程。如果你不能使用線程調用Palette.generateAsync()方法,并提供了一個監聽器來代替。 

你可以從圖像使用getter方法​​在面闆類,如Palette.getVibrantColor突出的顔色。 

要使用調色闆類項目,以下搖籃依賴添加到您的應用程式的子產品:

dependencies {
    ...
    compile 'com.android.support:palette-v7:+'
}
           

建立VerctorDrawable

在安卓5.0(API等級21)以上,則可以定義向量可繪制對象,其中規模又不失清晰。你的矢量圖像僅需要一個資源檔案,而不是一個資産檔案中的位圖圖像的情況下,每個螢幕密度。要建立一個矢量圖像,你定義了一個<vector> XML元素内部的形狀的細節。 

下面的例子定義了心髒的形狀矢量圖像:

<!-- res/drawable/heart.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    <!-- intrinsic size of the drawable -->
    android:height="256dp"
    android:width="256dp"
    <!-- size of the virtual canvas -->
    android:viewportWidth="32"
    android:viewportHeight="32">

  <!-- draw a path -->
  <path android:fillColor="#8fff"
      android:pathData="M20.5,9.5
                        c-1.955,0,-3.83,1.268,-4.5,3
                        c-0.67,-1.732,-2.547,-3,-4.5,-3
                        C8.957,9.5,7,11.432,7,14
                        c0,3.53,3.793,6.257,9,11.5
                        c5.207,-5.242,9,-7.97,9,-11.5
                        C25,11.432,23.043,9.5,20.5,9.5z" />
</vector>
           

矢量圖在Android中表示為VectorDrawable對象。有關pathData文法的詳細資訊,請參閱SVG的路徑參考。有關動畫的矢量可繪制對象的屬性的詳細資訊,請參閱矢量動畫效果可繪制對象。

繼續閱讀