Palette详解

直接讲解Palette的使用步骤和实例,补充说明Palette的几个注意点。
转载请注明链接:https://blog.csdn.net/feather_wch/article/details/80066384

Palette详解

版本:2018/4/24-1

1、Palette是什么?

  1. Palette是一个可以从图片(Bitmap)中提取颜色的帮助类.
  2. 可以使UI更加美观,根据图片动态的显示相应的颜色。
    效果图
    DEMO

2、Palette的使用步骤

1、引入依赖包implementation 'com.android.support:palette-v7:26.1.0'
2、获取调色板对象

// 同步
Palette p = Palette.from(bitmap).generate();

// 异步
Palette.from(bitmap).generate(new PaletteAsyncListener() {
    public void onGenerated(Palette p) {
        // Use generated instance
    }
});

3、根据调色板获取色样(Palette.Swatch可能为null)

//有活力的
Palette.Swatch vibrant = palette.getVibrantSwatch();
//有活力的,暗色
Palette.Swatch vibrantDark = palette.getDarkVibrantSwatch();
//有活力的,亮色
Palette.Swatch vibrantLight = palette.getLightVibrantSwatch();

//柔和的
Palette.Swatch muted = palette.getMutedSwatch();
//柔和的,暗色
Palette.Swatch mutedDark = palette.getDarkMutedSwatch();
//柔和的,亮色
Palette.Swatch mutedLight = palette.getLightMutedSwatch();

4、色样中获取颜色

//1、样本中的像素数量
int population = vibrant.getPopulation();
//2、颜色的RBG值
int rgb = vibrant.getRgb();
//3、颜色的HSL值
float[] hsl = vibrant.getHsl();
//4、主体文字的颜色值
int bodyTextColor = vibrant.getBodyTextColor();
//5、标题文字的颜色值
int titleTextColor = vibrant.getTitleTextColor();

3、Palette的简单实例(利用Glide获取Bitmap并且获取到Palette)

//获取图片的Bitmap
RequestBuilder<Bitmap> requestBuilder = Glide.with(getApplicationContext()).asBitmap();

requestBuilder.load(datas.get(mPosition).getHeadImg()).into(new SimpleTarget<Bitmap>() {
    @Override
    public void onResourceReady(@NonNull Bitmap bitmap, @Nullable Transition<? super Bitmap> transition) {

        //创建Palette(异步)
        Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
            @Override
            public void onGenerated(Palette palette) {
                //1-获取 靓丽的活力色
                Palette.Swatch vibrant = palette.getVibrantSwatch();
                //2-不存在活力色,获取柔和色
                if(vibrant == null){
                    vibrant = palette.getDarkMutedSwatch();
                }
                //3-设置颜色
                if(vibrant != null){
                    int titleColor = vibrant.getRgb();
                    mCollapsingToolbarLayout.setContentScrimColor(titleColor);
                    mCollapsingToolbarLayout.setCollapsedTitleTextColor(vibrant.getBodyTextColor());
                }
            }
        });

    }
});

注意点

1、Palette.Swatch获取为Null的解决办法

  1. 柔和色getLightMutedSwatch()基本上不会为NULL
  2. 活力色getLightVibrantSwatch()相关API对于部分图片可能为NULL
  3. 可以参考上面实例,先获取活力色如果没有,则去获取柔和色。确保最大概率获取到颜色

2、颜色的选取

  1. 建议活力色使用一般色:getVibrantSwatch(不是亮色也不是深色),并且标题颜色采用getBodyTextColor,一般为白色比较美观。
  2. 建议柔和色采用深色:getDarkMutedSwatch,并且标题颜色使用getBodyTextColor,一般也是白色.

参考资料

  1. android Palette使用详解
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Unity Tile Palette 是 Unity 中一个用于快速创建2D游戏地图的工具。它提供了一系列的工具和功能,以便用户能够快速的创建地图,并且可以在Unity中方便地编辑、修改和管理地图。下面是一些 Tile Palette 的选项详解: 1. Brush:刷子是在地图上绘制图块的工具。你可以选择不同的刷子大小和形状来绘制不同的图块。 2. Eraser:橡皮擦是用于擦除地图上图块的工具。你可以选择不同的橡皮擦大小和形状来擦除不同的图块。 3. Paint Palette:绘制面板是用于选择和管理绘制的图块的工具。你可以将绘制面板分组和管理不同类型的图块。 4. Auto Map:自动映射是一种快速绘制地图的工具。它会根据你选择的规则和图块自动绘制地图。 5. Rule Tile:规则图块是一种灵活的图块,它可以根据你设置的规则来自动生成地图。 6. Tilemap Collider 2D:Tilemap 碰撞器是一个自动生成的碰撞器,它可以帮助你快速创建地图碰撞器。 7. Tilemap Renderer:Tilemap 渲染器是一个可以渲染 Tilemap 的组件。你可以设置 Tilemap 渲染器的材质、颜色和混合模式等属性。 8. Tilemap:Tilemap 是一个用于创建和管理 Tilemap 的组件。你可以在 Tilemap 上添加、删除、编辑图块,并且可以使用 Tilemap Collider 2D 和 Tilemap Renderer 来管理碰撞器和渲染器。 这些是 Unity Tile Palette 的一些基本选项。使用这些选项,您可以轻松地创建2D游戏地图,并在Unity中轻松地管理、编辑和修改地图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猎羽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值