上节,对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