Android 5.X系列开始使用新的设计风格 Material Design 来统一整个Android系统的界面设计风格,与之前的设计风格不同,这次的 Material Design 设计将Android 带到了一个全新的高度,同时 Google 在官网上退出了全新的设设计指南—-全面的讲解了 Material Design 的整个实现规范与示例:
Google在其Design网站上,有整个Material Design的设计Spec,网站如下所示:
Meterial Design: http://www.google.com/design/#resources
希望了解更多的Material Design 设计风格的读者可以去这个网站获取更多的关于Material Design 的介绍和使用技巧。
Material Design 主题
首先来看看如何使用 Material Design 的主题
Material Design现在有三种默认的主题可以设置,如下:
@android:style/Theme.Material(dark version)
@android:style/Theme.Material.Light(light version)
@android:style/Theme.Material.Light.DarkActionBar
同时,Android 5.X提出了 Color Palette 的概念,如图所示,让开发者可以自己设定系统区域的颜色,使整个App的颜色风格和系统风格保持一致。
通过代码,可以使用自定义的Style 的方式创建自己的Color Palette 颜色主题,从而实现不同的颜色风格,显示效果如图所示:
<!-- Base application theme. -->
<style name="AppThemeBase" parent="android:Theme.Material">
<!-- Customize your theme here. -->
<item name="android:colorPrimary">#BEBEBE</item>
<item name="android:colorPrimaryDark">#FF5AEBFF</item>
<item name="android:navigationBarColor">#FFFF4130</item>
</style>
Palette
在Android 的版本发展中,UI越来越成为Google的发展重心,这次的Android 5.X创新的使用Palette 来提取颜色,从而让主题能够动态适应当前页面的色调,做到整个App颜色基调和谐统一。
Android 内置了几种提取色调的种类,如下所示:
Vibrant (充满活力的)
Vibrant dark (充满活力的黑)
Vibrant light (充满活力的亮)
Muted (柔和的)
Muted dark (柔和的黑)
Muted light (柔和的亮)
使用Palette 的API,能够让我们冲Bitmap中获取对应的色调,修改当前的主题色调。
使用Palette 首先需要在 Android Studio中引用相关的依赖,下面通过实例显示如果通过加载的图片的色调来改变状态栏和Actionbar的色调,代码如下:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.test01);
//创建Palette 对象
Palette.Builder palette = Palette.from(bitmap);
palette.generate();//同步
palette.generate(new Palette.PaletteAsyncListener() {//异步处理
@Override
public void onGenerated(Palette palette) {
//通过Palette来获取对应的色调
/*
* palette.getVibrantSwatch(); //充满活力的
* palette.getDarkVibrantSwatch() //充满活力的黑
* palette.getLightVibrantSwatch() //充满活力的亮
*
* palette.getMutedSwatch(); //柔和的
* palette.getDarkMutedSwatch(); //柔和的黑
* palette.getLightMutedSwatch(); //柔和的亮
*/
Palette.Swatch vibrant = palette.getLightMutedSwatch();
//将颜色设置给相应的组件
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(vibrant.getRgb()));
Window window = getWindow();
window.setStatusBarColor(vibrant.getRgb());
}
});
}
}
效果如下:
文章内容来自 《Android 群英传》
感谢各位大牛的分享