为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Android中改变可绘制的颜色?

如何在Android中改变可绘制的颜色?

蝴蝶刀刀 2019-07-09 18:06:25
如何在Android中改变可绘制的颜色?我正在开发一个Android应用程序,而且我有一个从源映像加载的绘图。在这个图像上,我想把所有的白色像素转换成不同的颜色,比如蓝色,然后缓存生成的可绘制对象,这样以后我就可以使用它了。例如,我有一个20x20PNG文件,中间有一个白色的圆圈,圆圈外的所有东西都是透明的。将白色圆圈变成蓝色并缓存结果的最佳方法是什么?如果我想使用这个源图像来创建几个新的Drawable(比如蓝色、红色、绿色、橙色等等),答案会改变吗?我猜我会想在某种程度上使用彩色矩阵,但我不确定如何使用。
查看完整描述

3 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

我觉得你可以用Drawable.setColorFilter( 0xffff0000, Mode.MULTIPLY )..这将设置白色像素为红色,但我不认为它会影响透明像素。

看见可拉拔#SET着色器


查看完整回答
反对 回复 2019-07-09
?
互换的青春

TA贡献1797条经验 获得超6个赞

让这段代码试一试:

ImageView lineColorCode = (ImageView)convertView.findViewById(R.id.line_color_code);int color = Color.parseColor("#AE6118"); //The color u want             lineColorCode.setColorFilter(color);


查看完整回答
反对 回复 2019-07-09
?
HUH函数

TA贡献1836条经验 获得超4个赞

如果您有一个可绘制的-这是一个实心颜色-并且要将其更改为不同的纯色,则可以使用ColorMatrixColorFilter..保持透明度。

int iColor = Color.parseColor(color);int red   = (iColor & 0xFF0000) / 0xFFFF;int green = (iColor & 0xFF00) / 0xFF;
int blue  = iColor & 0xFF;float[] matrix = { 0, 0, 0, 0, red,
                   0, 0, 0, 0, green,
                   0, 0, 0, 0, blue,
                   0, 0, 0, 1, 0 };ColorFilter colorFilter = new ColorMatrixColorFilter(matrix);drawable.setColorFilter(colorFilter);


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 521 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信