Android调色板Palette的应用
【摘要】 通过 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)