Android模糊Palette
1. 简介
在Android开发中,我们经常需要从一张图片中提取出一些主要的颜色,以便进行配色或者根据颜色进行一些特定的操作。Android系统提供了Palette类来帮助我们分析图片的颜色信息。Palette类可以提取出图片中的主要颜色、亮色、暗色等,并提供了一些辅助方法来获取更多的颜色信息。
2. Palette基本用法
Palette类位于androidx.palette.graphics
包下,我们需要在项目的build.gradle
文件中添加依赖:
dependencies {
implementation 'androidx.palette:palette:1.0.0'
}
Palette的使用非常简单,首先我们需要获取一张图片的Bitmap对象,然后通过Palette.Builder构建一个Palette对象,最后调用Palette的generate()方法即可。
下面是一个简单的示例代码,我们将一张图片加载到ImageView上,并使用Palette提取出主要颜色:
ImageView imageView = findViewById(R.id.image_view);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image);
imageView.setImageBitmap(bitmap);
Palette.Builder builder = Palette.from(bitmap);
Palette palette = builder.generate();
int vibrantColor = palette.getVibrantColor(Color.WHITE);
int lightVibrantColor = palette.getLightVibrantColor(Color.WHITE);
int darkVibrantColor = palette.getDarkVibrantColor(Color.WHITE);
int mutedColor = palette.getMutedColor(Color.WHITE);
int lightMutedColor = palette.getLightMutedColor(Color.WHITE);
int darkMutedColor = palette.getDarkMutedColor(Color.WHITE);
上述代码中,我们首先将一张图片加载到ImageView上,然后使用Palette.Builder构建一个Palette对象,并调用generate()方法生成Palette。接下来,我们使用Palette的一些方法获取不同类型的颜色,如果获取不到对应类型的颜色,则会返回传入的默认颜色。
Palette提供了以下几种方法来获取颜色:
方法 | 说明 |
---|---|
getVibrantColor() | 获取主要颜色 |
getLightVibrantColor() | 获取较亮的主要颜色 |
getDarkVibrantColor() | 获取较暗的主要颜色 |
getMutedColor() | 获取较柔和的主要颜色 |
getLightMutedColor() | 获取较亮的柔和颜色 |
getDarkMutedColor() | 获取较暗的柔和颜色 |
3. Palette的高级用法
除了获取主要颜色之外,Palette还提供了一些方法来获取更多的颜色信息。通过这些方法,我们可以获取到图片中的突出颜色、文本颜色等。下面是一些常用的方法:
- getSwatches():获取图片中的所有颜色列表。
List<Palette.Swatch> swatches = palette.getSwatches();
- getDominantSwatch():获取图片中的突出颜色。
Palette.Swatch dominantSwatch = palette.getDominantSwatch();
- getVibrantSwatch():获取图片中的主要颜色。
Palette.Swatch vibrantSwatch = palette.getVibrantSwatch();
- getTitleTextColor():获取文本颜色。
int titleTextColor = palette.getTitleTextColor();
上述代码中,我们可以通过getSwatches()方法获取到Palette中的所有颜色列表。通过getDominantSwatch()方法获取到图片中的突出颜色,getVibrantSwatch()方法获取到主要颜色。而getTitleTextColor()方法则用于获取适合用于标题文本的颜色。
4. Palette的自定义配置
Palette还提供了一些自定义配置的方法,我们可以通过这些方法来指定Palette的分析策略以及最大颜色数。下面是一些常用的自定义配置方法:
- maximumColorCount():设置最大颜色数。
Palette.Builder builder = Palette.from(bitmap);
builder.maximumColorCount(8);
- setRegion():设置分析区域。
Palette.Builder builder = Palette.from(bitmap);
builder.setRegion(100, 100, 200, 200);
上述代码中,maximumColorCount()方法用于设置最大颜色数