动态更改Android Java中图像的前景颜色(保留Alpha透明度)



我有一个带有透明背景的红球的图像。我想在编程中将球的颜色更改为许多其他颜色,而不会影响背景,即背景将保持透明。在Android中如何实现?

您可以使用Bitmap类以这种方式修改图像,例如使用setPixel()方法。您只需要确保颜色仍将其alpha设置为透明即可。

请参阅此处的Color文档,以定义其RGB和Alpha通道的颜色(您想保留每个像素的alpha值,仅更改RGB值)。另请参阅此处的Bitmap文档

尝试:

//Bitmap bmp
//int color 
int[] pixels = new int[bmp.getWidth() * bmp.getHeight()];
bmp.getPixels(pixels, 0, bmp.getWidth(), 0, 0,
            bmp.getWidth(), bmp.getHeight());
for (int i = 0; i < pixels.length; i++) {
pixels[i] &= color;
}
Bitmap newBmp = Bitmap.createBitmap(bmp.getWidth(),
bmp.getHeight(), Config.ARGB_8888);
newBmp.setPixels(pixels, 0, newBmp.getWidth(), 0, 0, newBmp.getWidth(), newBmp.getHeight());

您也可以使用框架动画实现它。使用带有不同球颜色的同一球图像的不同图片,并使用框架动画将图像作为框架运行。因此,球的颜色看起来正在改变。

最新更新