Android调色板Palette的应用

举报
yd_221104950 发表于 2020/12/02 23:16:16 2020/12/02
【摘要】 通过 Palette 对象访问图片中的主要颜色以及叠加文本的相应颜色,并根据给定源图片动态更改应用的配色方案。就是通过调色板获取特定的颜色,然后就可以拿着这些颜色去做相应的应用设计,如图片滑动时,应用的导航栏和系统状态栏,跟着变色等等: 大概的使用方式: public class MainActivity extends AppCompatActivity { p...

通过 Palette 对象访问图片中的主要颜色以及叠加文本的相应颜色,并根据给定源图片动态更改应用的配色方案。就是通过调色板获取特定的颜色,然后就可以拿着这些颜色去做相应的应用设计,如图片滑动时,应用的导航栏和系统状态栏,跟着变色等等:
在这里插入图片描述
大概的使用方式:


public class MainActivity extends AppCompatActivity { private ImageView mIV; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mIV = findViewById(R.id.after); } public void onChange(View view){ Palette.Builder builder = Palette.from(BitmapFactory.decodeResource(getResources(), R.mipmap.sunset)); builder.generate(new Palette.PaletteAsyncListener() { @Override public void onGenerated(Palette palette) {

// Palette.Swatch swatch = palette.getVibrantSwatch();  //充满活力的色调
// Palette.Swatch swatch = palette.getLightVibrantSwatch();  //充满活力的亮色调
// Palette.Swatch swatch = palette.getDarkVibrantSwatch();  //充满活力的暗色调

// Palette.Swatch swatch = palette.getMutedSwatch();  //柔和的色调
// Palette.Swatch swatch = palette.getLightMutedSwatch();  //柔和的亮色调
// Palette.Swatch swatch = palette.getDarkMutedSwatch();  //柔和的暗色调
// int color; Palette.Swatch swatch = palette.getDominantSwatch(); if (swatch == null) { color = palette.getDominantColor(getResources().getColor(R.color.colorPrimary));  //如果提取不到颜色样本,就使用默认颜色 } else { color = swatch.getRgb();   //如何提取到颜色样本,就从颜色样本中获得颜色 } int darkColor = colorBurn(color);  //对颜色进行处理,使颜色更深 changeThemeColor(color, darkColor);  //切换主题颜色 } }); } //获得更深的颜色 private int colorBurn(int color) { int alpha = color >> 24; int red = color >> 16 & 0xFF; int green = color >> 8 & 0xFF; int blue = color & 0xFF; red = (int) Math.floor(red * (1 - 0.1)); green = (int) Math.floor(green * (1 - 0.1)); blue = (int) Math.floor(blue * (1 - 0.1)); return Color.rgb(red, green, blue); } private void changeThemeColor(int color,int darkColor){ if (android.os.Build.VERSION.SDK_INT >= 21) { Window window = getWindow(); window.setStatusBarColor(colorBurn(darkColor));  //设置系统栏颜色 window.setNavigationBarColor(colorBurn(darkColor));  //设置底部NavigationBar颜色 } }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

swatch 除了getRgb()方法获取 RGB 颜色之外,还有其他获取颜色的方法:

swatch.getPopulation():  //像素的数量
swatch.getRgb():  //RGB颜色
swatch.getHsl():  //HSL颜色
swatch.getBodyTextColor():  //用于内容正文文本的颜色
swatch.getTitleTextColor():  //标题文本的颜色

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/107086990

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。