银行卡列表之背景颜色自动识别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhihui_520/article/details/81977790

目前市场是的大部分App, 都具有个人账户功能吧, 那么当然少不了银行卡这个角色. 银行卡列表背景色若设置成统一的单色调, 那多影响美观. 若我们能把银行logo的主色调当成背景, 那逼格瞬间提升百倍呀!

首先我们要读取logo的主色调, 当然得拿到logo. 这里用到了github上的这位大兄弟抓取的数据, https://github.com/digglife/cnbankcard

那logo不可能全部都放到assets中, 多影响app体积. 个人建议放服务器.

说这么多, 先看看效果图吧.

读取主色调,我这里用到了Palette, Palette其实就是调色板, 能够读取图片的色调, 包含柔和深色的、柔和的明亮、活跃的明亮、活跃的深色…

步骤

导入

你需要在工程下的build.gradle里添加依赖才可以使用Palette,像如下代码所示:

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

一些api

传入默认颜色防止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);
// ...  这里省略其他的方法。

开始使用

这里我们读取主色调, 什么明亮,柔和的怎么都不是想要的, 所以我这里就取像素点最多的那个色值,


   /**
     * 获取图片主色调
     *
     * @param bitmap
     * @return
     */
    public static void getBitmapColor(final Bitmap bitmap, final onBitmapGetColorListener listener) {

        Palette.from(bitmap).maximumColorCount(10).generate(new Palette.PaletteAsyncListener() {
            @Override
            public void onGenerated(@NonNull Palette palette) {
                List<Palette.Swatch> list = palette.getSwatches();
                int colorSize = 0;
                Palette.Swatch maxSwatch = null;
                for (int i = 0; i < list.size(); i++) {
                    Palette.Swatch swatch = list.get(i);
                    if (swatch != null) {
                        int population = swatch.getPopulation();
                        if (colorSize < population) {
                            colorSize = population;
                            maxSwatch = swatch;
                        }
                    }
                }
                if (maxSwatch != null)
                    listener.getColor(maxSwatch.getRgb());
            }
        });

    }

那么到此颜色值获取了,直接设置背景就好了.

其他

Palatte还可以和ViewGroup和Fragment搭配使用, 也是非常美观的, 盗个图片

更多精彩文章, 请前往>>http://blog.huiger.top

阅读更多
换一批

没有更多推荐了,返回首页