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

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

我正在开发一个Android应用程序,而且我有一个从源映像加载的绘图。在这个图像上,我想把所有的白色像素转换成不同的颜色,比如蓝色,然后缓存生成的可绘制对象,这样以后我就可以使用它了。

例如,我有一个20x20PNG文件,中间有一个白色的圆圈,圆圈外的所有东西都是透明的。将白色圆圈变成蓝色并缓存结果的最佳方法是什么?如果我想使用这个源图像来创建几个新的Drawable(比如蓝色、红色、绿色、橙色等等),答案会改变吗?

我猜我会想在某种程度上使用彩色矩阵,但我不确定如何使用。


蝴蝶刀刀
浏览 522回答 3
3回答

GCT1015

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

互换的青春

让这段代码试一试:ImageView lineColorCode = (ImageView)convertView.findViewById(R.id.line_color_code);int color = Color.parseColor("#AE6118"); //The color u want             lineColorCode.setColorFilter(color);

HUH函数

如果您有一个可绘制的-这是一个实心颜色-并且要将其更改为不同的纯色,则可以使用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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android