使用Palette获取图片主色调,获取图片上最佳的文字显示颜色

1、首先需要添加Palette的依赖

// 获取图片主色调库
    implementation 'com.android.support:palette-v7:28.0.0'

2.代码调用

 var simpleTarget: SimpleTarget = object : SimpleTarget() {
                            override fun onResourceReady(resource: Bitmap, transition: Transition?) {
                                // 使用Palette类提取图片的颜色信息
                                Palette.from(resource).generate(object :Palette.PaletteAsyncListener{
                                    override fun onGenerated(palette: Palette?) {
                                        var swatch = palette?.vibrantSwatch  //充满活力的色板     效果:与主色调形成反差,使图片上的时间文字更突出明显
//                                        var swatch = palette?.lightVibrantSwatch  //充满活力的亮色类型色板
//                                        var swatch = palette?.darkVibrantSwatch  //充/满活力的暗色类型色板
//                                        var swatch = palette?.mutedSwatch  //黯淡的色板
//                                        var swatch = palette?.lightMutedSwatch  //黯淡的亮色类型色板
//                                        var swatch = palette?.darkMutedSwatch  //黯淡的暗色类型色板  效果:文字颜色比较淡,色调对图片有优化衬托作用,使图片效果显得更美观

                                        if (swatch != null) {
                                            tv_current_time.setTextColor(swatch.bodyTextColor) //设置文本颜色
                                            tv_current_date.setTextColor(swatch.bodyTextColor) //设置文本颜色
                                            resource.recycle()
                                        }
                                    }

                                })
                            }
                        }

                        Glide.with(this)
                                .asBitmap()
                                .load(localSaveWallpaperBean.collectionWallpaperList[lastnum].wurl_master)
                                .into(simpleTarget)

3,调取各种色调效果方法说明

Palette.Swatch s1 = Palette.getVibrantSwatch(); //充满活力的色板
Palette.Swatch s2 = Palette.getDarkVibrantSwatch(); //充满活力的暗色类型色板
Palette.Swatch s3 = Palette.getLightVibrantSwatch(); //充满活力的亮色类型色板
Palette.Swatch s4 = Palette.getMutedSwatch(); //黯淡的色板
Palette.Swatch s5 = Palette.getDarkMutedSwatch(); //黯淡的暗色类型色板
Palette.Swatch s6 = Palette.getLightMutedSwatch(); //黯淡的亮色类型色板

 

你可能感兴趣的:(android)