上節,對Material Design樣式作了介紹,這節咱們介紹Palette。android
在Android發展的長河中,UI愈來愈成爲Google的發展重心。上文提到Android 5.x 使用palette來提取顏色,從而使主題動態適用當前頁面的色調,因而乎使整個app顏色色調更加和諧統一。app
Android 內置了幾種提取色調的種類,以下所示。
一、Vibrant(充滿活力的)
二、Vibrant dark(充滿活力的黑)
三、Vibrant light(充滿活力的亮)
四、Muted(柔和的)
五、Muted dark(柔和的黑)
六、Muted light(柔和的亮)ide
開發組可以使用 Palette提供 的 API,可以讓咱們從 Bitmap 中獲取對應的色調,修改當前的主題色調。 使用 Palette 首先須要在 Android Studio 中引用相關的依賴,在項目列表上點擊 F4,而後在Module Setting 的 Dependencies 選項卡中添com.android.support:palette-v7:21.0.2 引用,從新同步項目便可。能夠經過傳遞一個 Bitmap 對象給 Palette,並調用它的 Palette.generate()靜態方法或者 Palette.generateAsync()方法來建立一Palette。接下來,就可使用 getter 方法來檢索相應的色調,這些色調就是咱們在上面列表中所列出來的色調。spa
能夠經過如下不一樣的方法來提取不一樣色調的顏色。代碼分別以下:code
palette.getVibrantSwatch ();
palette.getDarkVibrantSwatch ();
palette.getLightVibrantSwatch ();
palette.getMutedSwatch ();
palette.getDarkMutedSwatch ();
palette.getLightMutedSwatch ();
而下面這個例子,演示了使用 getDarkVibrantSwatch()方法提取的色調效果色調來改變狀態欄的色調,代碼以下所示。對象
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test); // 建立Palette對象 Palette.generateAsync(bitmap, new PaletteAsyncListener() { @Override public void onGenerated(Palette palette) { Palette.Swatch swatch = palette.getDarkMutedSwatch(); // getActionBar().setBackgroundDrawable( // new ColorDrawable(swatch.getRgb())); Window window = getWindow(); window.setStatusBarColor(swatch.getRgb()); } });
而代碼運行效果則是以下所示:blog