Palette优化界面色彩搭配

简介: 目录什么是PalettePalette是调色板的意思它可以通过提取Bitmap中的颜色来优化界面的色彩搭配。Palette的使用方法导入依赖dependencies { .

目录

img_8c1544a9a7510500e61788c5d1da7ba7.png

什么是Palette

Palette是调色板的意思它可以通过提取Bitmap中的颜色来优化界面的色彩搭配。

Palette的使用方法

导入依赖

dependencies {
    ...
    implementation 'com.android.support:palette-v7:27.1.1'
}

核心方法(传入bitmap)

Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
            @Override
            public void onGenerated(Palette palette) {
                // 获取到柔和的深色的颜色(可传默认值)
                 palette.getDarkMutedColor(Color.BLUE);
                 // 获取到活跃的深色的颜色(可传默认值)
                 palette.getDarkVibrantColor(Color.BLUE);
                 // 获取到柔和的明亮的颜色(可传默认值)
                 palette.getLightMutedColor(Color.BLUE);
                 // 获取到活跃的明亮的颜色(可传默认值)
                 palette.getLightVibrantColor(Color.BLUE);
                 // 获取图片中最活跃的颜色(也可以说整个图片出现最多的颜色)(可传默认值)
                 palette.getVibrantColor(Color.BLUE);
                 // 获取图片中一个最柔和的颜色(可传默认值)
                 palette.getMutedColor(Color.BLUE);
            }
});

案例演示

这里使用的是Toolbar+TabLayout+ViewPager结合实现的一个效果


img_a087ff139934e9746a509f46c6a7aa28.gif

核心代码:

 private void setPaletteColor(int position) {
        Bitmap bitmap = bitmaps.get(position);
        Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
            @Override
            public void onGenerated(Palette palette) {
                Palette.Swatch vibrant = palette.getVibrantSwatch();//获取颜色样本。在这里做了非空判断,如果获取的颜色样本为空就从所有的样本中获取一个样本。
                if (vibrant == null) {
                    for (Palette.Swatch swatch : palette.getSwatches()) {
                        vibrant = swatch;
                        break;
                    }
                }
                // 这样获取的颜色可以进行改变。
                int rgb = vibrant.getRgb();//从样本中获取颜色的RGB值。获取到RGB值之后可以直接给其他控件使用这个值,或者稍微调整这个值的颜色再使用。
                tablayout.setBackgroundColor(rgb);
                toolbar.setBackgroundColor(rgb);
                if (Build.VERSION.SDK_INT > 21) {
                    Window window = getWindow();
                    //状态栏改变颜色。
                    int color = changeColor(rgb);
                    window.setStatusBarColor(color);
                }

            }
        });
    }
    /**
     * @method  changeColor
     * @description 修改状态栏颜色
     * @date: 2018/9/17 11:33
     * @author: LML
     * @param rgb 颜色值参数
     * @return int
     */
    private int changeColor(int rgb) {
        int red = rgb >> 16 & 0xFF;
        int green = rgb >> 8 & 0xFF;
        int blue = rgb & 0xFF;
        red = (int) Math.floor(red * (1 - 0.2));
        green = (int) Math.floor(green * (1 - 0.2));
        blue = (int) Math.floor(blue * (1 - 0.2));
        return Color.rgb(red, green, blue);
    }

案例源码地址:https://github.com/myml666/PalettesDemo

个人技术博客:https://myml666.github.io

目录
相关文章
|
图形学
如何使用透明贴图实现火焰效果
透明贴图通过指定每个像素的透明度通道来实现物体透明效果。它与物体表面材质进行混合,根据透明度值,通过 alpha 混合或色彩混合等方式来模拟物体部分或全部的透明效果。
99 0
|
4月前
|
数据可视化
在线可视化设计教你玩转圆角、阴影
在线可视化设计教你玩转圆角、阴影
50 1
|
7月前
|
Python
Python制作动态颜色变换:颜色渐变动效
Python制作动态颜色变换:颜色渐变动效
136 0
|
9月前
|
UED
【专栏:交互与用户体验篇】网页中的色彩搭配与配色方案
【4月更文挑战第30天】网页设计中,色彩搭配影响用户体验。了解色彩心理学、搭配原则及配色方案至关重要。色彩能传达信息、影响感知,通过对比与和谐、色彩平衡和层次创造良好视觉效果。单色、类似色、对比色和互补色四种配色方案各有优缺点,需根据目标用户和网页需求选择。恰当的色彩运用能提升美感,增强网页吸引力。
193 5
|
9月前
|
数据可视化 大数据
【透明版九宫格背景图片】仅依靠background的几个属性组合搭配出酷炫的透明背景卡片效果→适用于大数据可视化、数据大屏展示页面
【透明版九宫格背景图片】仅依靠background的几个属性组合搭配出酷炫的透明背景卡片效果→适用于大数据可视化、数据大屏展示页面
【透明版九宫格背景图片】仅依靠background的几个属性组合搭配出酷炫的透明背景卡片效果→适用于大数据可视化、数据大屏展示页面
一款特别好用的屏幕颜色拾取工具Colors
一款特别好用的屏幕颜色拾取工具Colors
132 0
|
前端开发
妙用滤镜构建高级感拉满的磨砂玻璃渐变背景
妙用滤镜构建高级感拉满的磨砂玻璃渐变背景
249 0
妙用滤镜构建高级感拉满的磨砂玻璃渐变背景
|
前端开发
Color Space -- 在线调色神器,解决你的配色问题
Color Space -- 在线调色神器,解决你的配色问题
1026 0
|
计算机视觉
平面设计实验六 色彩调整与风景美化
平面设计实验六 色彩调整与风景美化
110 0
|
前端开发 容器
【HTML+CSS】grid自适应网站布局之服务项目展示
【HTML+CSS】grid自适应网站布局之服务项目展示
154 0

热门文章

最新文章