Android 使用Drawables

2018-08-02 18:19 更新

編寫: allenlsy - 原文: https://developer.android.com/training/material/drawables.html

使用Drawable

以下這些drawable的功能,能幫助你在應(yīng)用中實(shí)現(xiàn)Material Design:

  • Drawable染色
  • 提取主色調(diào)
  • 矢量Drawable

本課教你如何在應(yīng)用中使用這些特性:

給 Drawable 資源染色

使用 Android 5.0 (API level 21)以上版本,你可以使用alpha mask(透明度圖層,譯者注)給位圖和nine patches圖片染色。你可以用顏色Resource或者主題屬性來獲取顏色(比如,?android:attr/colorPrimary)。通常,你只需要?jiǎng)?chuàng)建一次這些顏色asset,便可以在主題中自動(dòng)匹配這些顏色。

你可以用setTint()方法將一種染色方式應(yīng)用到BitmapDrawable或者NinePatchDrawable對(duì)象。你也在layout中使用android:tintandroid:initMode屬性設(shè)置染色的顏色和模式。

從圖片中提取主色調(diào)

Android Support Library v21及更高版本帶有Palatte類,可以讓你從圖片中提取主色調(diào)。這個(gè)類可以提取以下顏色:

  • Vibrant: 亮色
  • Vibrant dark: 深亮色
  • Vibrant light: 淺亮色
  • Muted: 暗色
  • Muted dark: 深暗色
  • Muted light: 淺暗色

提取這些顏色時(shí),在你載入圖片的后臺(tái)線程中傳入一個(gè)Bitmap對(duì)象給Palette.generate()靜態(tài)方法。如果你不能使用那個(gè)線程,可以調(diào)用Palatte.generateAsync()方法,并提供一個(gè)listener。

你可以用Palette類的一個(gè)getter方法從圖片獲取主色調(diào),比如Palette.getVibrantColor()

要使用Palette類,在你的應(yīng)用模塊的Gradle依賴中添加以下代碼:

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

更多信息,請(qǐng)參見Palette類的API文檔。

創(chuàng)建矢量Drawable

在Android 5.0 (API level 21)以上版本中,你可以定義矢量drawable,用于無損的拉伸圖片。相對(duì)于一張普通圖片需要為每個(gè)不同屏幕密度的設(shè)備提供一個(gè)圖片來說,一個(gè)矢量圖片只需要一個(gè)asset文件。要?jiǎng)?chuàng)建矢量圖片,你可以在<vector> XML元素中定義形狀。

以下代碼定義了一個(gè)心形:

<!-- 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對(duì)象來表示。更多關(guān)于pathData語(yǔ)法的信息,請(qǐng)看SVG Path的文檔。更多關(guān)于矢量drawable動(dòng)畫的信息,請(qǐng)參見矢量drawable動(dòng)畫


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)