Android 5.X新特性详解(一)

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 群英传》
感谢各位大牛的分享

猜你喜欢

转载自blog.csdn.net/zhu522959034/article/details/81983723