android Palette调色板使用详解

android Palette调色板使用详解,第1张

概述Palette是一个可以从图片(Bitmap)中提取颜色的帮助类,可以使UI更加美观,根据图片动态的显示相应的颜色。现在最新的api是在版本22.0.0添加的,本篇文章也是使用的22.0.0的api版本(注意版本之间api的不同)。

Palette是一个可以从图片(Bitmap)中提取颜色的帮助类,可以使UI更加美观,根据图片动态的显示相应的颜色。现在最新的API是在版本22.0.0添加的,本篇文章也是使用的22.0.0的API版本(注意版本之间API的不同)。

应用项目:https://github.com/DingMouRen/PaletteImageView

应用中的效果   Demo 效果

    

Palette可以提取的颜色:

Vibrant (有活力的) Vibrant dark(有活力的 暗色) Vibrant light(有活力的 亮色) Muted (柔和的) Muted dark(柔和的 暗色) Muted light(柔和的 亮色)

使用方法: module的build.gradle中引用

compile 'com.androID.support:palette-v7:25.3.1'

使用步骤:

1.获取Palette对象,也就是图像调色板

2.获取从图像调色板生成的色样

3.从色样中提取相应颜色

1.获取Palette对象,也就是图像调色板

获取Palette对象有同步和异步两种方式,建议使用异步获取Palette对象

 // Synchronous Palette p = Palette.from(bitmap).generate(); // Asynchronous Palette.from(bitmap).generate(new PaletteAsyncListener() {   public voID onGenerated(Palette p) {     // Use generated instance   } });

2.获取从图像调色板生成的色样

可以获取到六种色样,但是有的时候获取不到对应的色样对象,必须注意非空判断。

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();//柔和的,亮色

3.从色样中提取相应颜色

通过 getRgb() 可以得到最终的颜色值并应用到UI中。getbodyTextcolor() 和 getTitleTextcolor() 可以得到此颜色下文字适合的颜色,这样很方便我们设置文字的颜色,使文字看起来更加舒服。

swatch.getPopulation(): 样本中的像素数量swatch.getRgb(): 颜色的RBG值swatch.getHsl(): 颜色的HSL值swatch.getbodyTextcolor(): 主体文字的颜色值swatch.getTitleTextcolor(): 标题文字的颜色值

Demo的代码中没有对获取到的色样对象进行非空判断,注意一定要加上非空判断

public class MainActivity extends AppCompatActivity {  private static final String TAG = MainActivity.class.getname();  private linearLayout line1,line2,line3,line4,line5,line6;  private TextVIEw tv1_1,tv1_2,tv2_1,tv2_2,tv3_1,tv3_2,tv4_1,tv4_2,tv5_1,tv5_2,tv6_1,tv6_2;  private List<linearLayout> bgs = new ArrayList<>();  private List<TextVIEw> bodyTexts = new ArrayList<>();  private List<TextVIEw> TitleTexts = new ArrayList<>();  private List<Palette.Swatch> swatchs = new ArrayList<>();  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    ImageVIEw img = (ImageVIEw) findVIEwByID(R.ID.img);    initVIEw();    Bitmap bitmap = ((BitmapDrawable)img.getDrawable()).getBitmap();    if (bitmap == null){      return;    }    Palette.from(bitmap).generate(Listener);  }  private Palette.PaletteAsyncListener Listener = new Palette.PaletteAsyncListener() {    @OverrIDe    public voID onGenerated(Palette palette) {      if (palette != 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();//柔和的,亮色        swatchs.clear();        swatchs.add(vibrant);swatchs.add(vibrantDark);swatchs.add(vibrantlight);        swatchs.add(muted);swatchs.add(mutedDark);swatchs.add(mutedlight);        show();      }    }  };  private voID show() {    for (int i = 0; i < 6; i++) {      bgs.get(i).setBackgroundcolor(swatchs.get(i).getRgb());      bodyTexts.get(i).setTextcolor(swatchs.get(i).getbodyTextcolor());      TitleTexts.get(i).setTextcolor(swatchs.get(i).getTitleTextcolor());        }  }  private voID initVIEw() {    line1 = (linearLayout) findVIEwByID(R.ID.line1);    line2 = (linearLayout) findVIEwByID(R.ID.line2);    line3 = (linearLayout) findVIEwByID(R.ID.line3);    line4 = (linearLayout) findVIEwByID(R.ID.line4);    line5 = (linearLayout) findVIEwByID(R.ID.line5);    line6 = (linearLayout) findVIEwByID(R.ID.line6);    bgs.clear();    bgs.add(line1);bgs.add(line2);bgs.add(line3);bgs.add(line4);bgs.add(line5);bgs.add(line6);    tv1_1 = (TextVIEw) findVIEwByID(R.ID.tv1_1);    tv2_1 = (TextVIEw) findVIEwByID(R.ID.tv2_1);    tv3_1 = (TextVIEw) findVIEwByID(R.ID.tv3_1);    tv4_1 = (TextVIEw) findVIEwByID(R.ID.tv4_1);    tv5_1 = (TextVIEw) findVIEwByID(R.ID.tv5_1);    tv6_1 = (TextVIEw) findVIEwByID(R.ID.tv6_1);    tv1_2 = (TextVIEw) findVIEwByID(R.ID.tv1_2);    tv2_2 = (TextVIEw) findVIEwByID(R.ID.tv2_2);    tv3_2 = (TextVIEw) findVIEwByID(R.ID.tv3_2);    tv4_2 = (TextVIEw) findVIEwByID(R.ID.tv4_2);    tv5_2 = (TextVIEw) findVIEwByID(R.ID.tv5_2);    tv6_2 = (TextVIEw) findVIEwByID(R.ID.tv6_2);    bodyTexts.clear();TitleTexts.clear();    bodyTexts.add(tv1_1);bodyTexts.add(tv2_1);bodyTexts.add(tv3_1);bodyTexts.add(tv4_1);bodyTexts.add(tv5_1);bodyTexts.add(tv6_1);    TitleTexts.add(tv1_2);TitleTexts.add(tv2_2);TitleTexts.add(tv3_2);TitleTexts.add(tv4_2);TitleTexts.add(tv5_2);TitleTexts.add(tv6_2);  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的android Palette调色板使用详解全部内容,希望文章能够帮你解决android Palette调色板使用详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1144167.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存