Android开发之palette的使用(安卓调色板)

前言:随着UI的丰富性,每当我们切换的时候,都需要一个主色调,这个时候我们可以用Palette来去提取UI中的主色调,一般都是从Bitmap中提取颜色,然后把颜色设置给title,content等!

------------------------------分割线--------------------------

使用:首先通过imageview获取Drawable,然后在获取Bitmap。

 BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
 Bitmap bitmap = drawable.getBitmap();
Palette是v7包下的拓展类首 先添加依赖:

compile 'com.android.support:palette-v7:26.0.0-alpha1'
接着我们使用Palette分析bitmap,我们分析图片的时候,图片可能会比较大,或者颜色比较复杂,所以为了防止主线程阻塞,我们使用google给我们提供的异步来解决:

Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
            @Override
            public void onGenerated(Palette palette) {

            }
        });
Palette提供了很多api来设置颜色,来我们看一下常用api的用法:

1.获取某种特性颜色的样品:

Palette.Swatch lightVibrantSwatch = palette.getLightVibrantSwatch();
Palette.Swatch vibrantSwatch = palette.getVibrantSwatch();
2.获取google推荐的整体颜色的rgb值--主色调(这里我们使用的是vibrantSwatch)

int rgb = vibrantSwatch.getRgb();
3.获取google推荐的标题的颜色:
int titleTextColor = vibrantSwatch.getTitleTextColor();
4.颜色向量:
float[] hsl = vibrantSwatch.getHsl();
5.分析该颜色在图片中所占的像素多少值:

int population = vibrantSwatch.getPopulation();

6.在实际使用的时候我们也可以仅仅使用颜色的rgb来设置背景色,然后在添加一个透明度
protected int getTranslucentColor(float percent, int rgb) {
 
        int blue = Color.blue(rgb);
        int green = Color.green(rgb);
        int red = Color.red(rgb);
        int alpha = Color.alpha(rgb);

        alpha = Math.round(alpha * percent);
        return Color.argb(alpha, red, green, blue);
    }
7.给标题设置背景色:
tvTtle.setBackgroundColor(getTranslucentColor(0.6f, rgb));
8.给标题字体设置颜色:

tvTtle.setTextColor(titleTextColor);

ok!来我们看一下效果图:


----------------------------分割线--------------------------------------

当然了,我们也可以自定义显示的颜色样式!

1.暗、柔和(Color.BLUE是默认颜色,下面同):

int darkMutedColor = palette.getDarkMutedColor(Color.BLUE);
2.亮、柔和:
int lightMutedColor = palette.getLightMutedColor(Color.BLUE);

3.暗、鲜艳:

int darkVibrantColor = palette.getDarkVibrantColor(Color.BLUE);

4.亮、鲜艳:

int lightVibrantColor = palette.getLightVibrantColor(Color.BLUE);

5.柔和:

int mutedColor = palette.getMutedColor(Color.BLUE);

6.鲜艳:

int vibrantColor = palette.getVibrantColor(Color.BLUE);

。。。

效果图就不和大家展示了,自己试着去实现一下!

----------------------------结束!!!------------------------------------------------





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等待着冬天的风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值