Palette
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计、成都做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的贵南网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
调色板 Palette 是 Android L SDK 中的新特性。可以使用 Palette 从图像中提取出突出的颜色(主色调),获取到颜色之后我们再将这个颜色值赋给 ActionBar、状态栏等。从而达到界面色调的统一,使界面美观协调。
Palette 可以提取图片中如下几种特性的颜色:
内部嵌套类
生成器类,生成 Palette 实例。
过滤器接口,使 Palette 有更加细腻的颜色过滤
异步加载监听
提供获取结果的色彩样本
所有的公共方法
返回值类型 | 方法及说明 |
---|---|
static Palette | from(List 通过预设的 Palette.Swatch 颜色样本列表 来生成 Palette |
static Palette.Builder | from(Bitmap bitmap) 通过返回 Palette.Builder 实例来构建 Palette |
static Palette | generate(Bitmap bitmap,int numColors) 该方法已被遗弃,建议用 Palette.Builder 来生成Palette |
static Palette | generate(Bitmap bitmap) 该方法已被遗弃,建议用 Palette.Builder 来生成Palette |
static AsyncTask | generateAsync(Bitmap bitmap,int numColor,Palette.PaletteAsyncListener listener) 该方法已被遗弃,建议用 Palette.Builder 来生成Palette |
static AsyncTask | generateAsync(Bitmap bitmap,Palette.PaletteAsyncListener listener) 该方法已被遗弃,建议用 Palette.Builder 来生成Palette |
int | getColorForTarget(Target target,int defaultColor) 返回一个从目标获取的的 rgb 色值 |
int | getDarkMutedColor(int defaultColor) 返回一个柔和的暗色调 rgb 值 |
Palette.Swatch | getDarkMutedSwatch() 返回一个柔和的暗色调样本类 |
int | getDarkVibrantColor(int defaultColor) 返回一个鲜明的暗色调 rgb 值 |
Palette.Swatch | getDarkVibrantSwatch() 返回一个鲜明的暗色调样本类 |
int | getDomainColor(int defaultColor) 返回 Palette 中的主色调 rgb值 |
Palette.Swatch | getDomainSwatch() 返回一个主色调的样本类 |
int | getLightMutedColor(int defaultColor) 返回一个柔和的亮色调颜色 rgb |
Palette.Swatch | getLightMutedSwatch() 返回一个柔和的亮色调样本类 |
int | getLightVibrantColor(int defaultColor) 返回一个鲜明的亮色调 rgb |
Palette.Swatch | getLightVibrantSwatch() 返回一个鲜明的亮色调样本类 |
int | getMutedColor(int defaultColor) 返回一个柔和的颜色 rgb |
Palette.Swatch | getMutedSwatch() 返回一个柔和的颜色样本类 |
Palette.Swatch | getSwatchForTarget(Target target) 为给定的目标从 Palette 中返回一个选中样本,如果未找到则返回空 |
List | getSwatches() 获取所有用在Palette中的Swatch样本类 |
List | getTargets() 获取所有构造 Palette 的 Target |
int | getVibrantColor(int defaultColor) 获取一个鲜明的颜色 rgb |
Palette.Swatch | getVibrantSwatch() 获取一个鲜明的样本类 |
使用方式
使用 Palette 需先引入 Palette 的 support 资源包:
- compile 'com.android.support:palette-v7:25.1.0'
加载不能在主线程中进行,加载方式有同步加载和异步加载两种:
- //在加载图片的后台线程中同步加载Palette palette = Palette.from(bitmap).genrate();
- .
- .
- .
- //异步加载Palette.from(bitmap).genrate(new PaletteAsyncListener(){ public void onGenerated(Palette p){
- .
- .
- .
- }
- });
具体使用代码
这里使用 MvpDemo 中的部分代码,跟 Glide 配合起来使用的,其他辅助类代码直接 Demo 中查看。
- //这是 Glide 加载状态的监听回调@Overridepublic boolean onResourceReady(GlideDrawable resource, String model, Target
target,boolean isFromMemoryCache, boolean isFirstResource) { //获取到 Glide 加载图片的 Bitmap - final Bitmap bitmap = GlideUtils.getBitmap(resource); //获取到24dp的长度
- final int twentyFourDip = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24, ZhihuStoryInfoActivity.this.getResources().getDisplayMetrics()); assert bitmap != null;
- Palette.from(bitmap) //设置构建 Palette 时使用的最大颜色数,风景景观推荐值在10-16,人脸图像色值增加到24
- .maximumColorCount(3)
- .clearFilters()
- .setRegion(0, 0, bitmap.getWidth() - 1, twentyFourDip)
- .generate(new Palette.PaletteAsyncListener() { @Override
- public void onGenerated(Palette palette) { boolean isDark; int lightness = ColorUtils.isDark(palette); if (lightness == ColorUtils.LIGHTNESS_UNKNOWN) {
- isDark = ColorUtils.isDark(bitmap, bitmap.getWidth() / 2, 0);
- } else {
- isDark = lightness == ColorUtils.IS_DARK;
- } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { int statusBarColor = getWindow().getStatusBarColor(); final Palette.Swatch topColor = ColorUtils.getMostPopulousSwatch(palette); if (topColor != null && (isDark || Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)) {
- statusBarColor = ColorUtils.scrimify(topColor.getRgb(), isDark, SCRIM_ADJUSTMENT); if (!isDark && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- ViewUtils.setLightStatusBar(mStoryImg);
- }
- } if (statusBarColor != getWindow().getStatusBarColor()) {
- ValueAnimator statusBarColorAnim = ValueAnimator.ofArgb(
- getWindow().getStatusBarColor(), statusBarColor);
- statusBarColorAnim
- .addUpdateListener(new ValueAnimator
- .AnimatorUpdateListener() { @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- getWindow().setStatusBarColor((int) animation.getAnimatedValue());
- }
- }); //设置转换颜色的动画时间
- statusBarColorAnim.setDuration(1000L);
- statusBarColorAnim.setInterpolator( new AccelerateInterpolator());
- statusBarColorAnim.start();
- }
- }
- }
- });
- }
名称栏目:主题颜色提取 ——— Palette
本文来源:http://www.shufengxianlan.com/qtweb/news46/94696.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联