Android 5.x特性概览三
上节,对Material Design样式做了介绍,这节我们介绍Palette。
在Android发展的长河中,UI越来越成为Google的发展重心。上文提到Android 5.x 使用palette来提取颜色,从而使主题动态适用当前页面的色调,于是乎使整个app颜色色调更加和谐统一。
Android 内置了几种提取色调的种类,如下所示。
1、Vibrant(充满活力的)
2、Vibrant dark(充满活力的黑)
3、Vibrant light(充满活力的亮)
4、Muted(柔和的)
5、Muted dark(柔和的黑)
6、Muted light(柔和的亮)
开发组能够使用 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 方法来检索相应的色调,这些色调就是我们在上面列表中所列出来的色调。
可以通过以下不同的方法来提取不同色调的颜色。代码分别如下:
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()); } });
而代码运行效果则是如下所示: