Android:最简单的方法来改变一个PNG文件的颜色

我正在写一个基本精灵(一个气球)的游戏 – 目前我有两个不同的彩色气球PNG文件,我已经创build了,我需要创build更多(可能是另外5个左右),不想有像7个不同的PNG文件。 (这将是20个额外的文件,因为我有4个不同大小的缩放目的)我宁愿坚持1 – 我目前有黄色和红色(几乎坚实,但不完全 – 他们有他们的细节)。

问题 – 有没有简单的方法来改变我现有的PNG文件的颜色? 我见过有人提到setColorsetColorFilter但我不能解决如何使用这些。 也将这些甚至工作在PNG文件已经有一个颜色,或者他们只工作在白色PNG文件(我不认为我的PNG可以实际上只是白色)?

谢谢大家的任何帮助,将不胜感激。

Solutions Collecting From Web of "Android:最简单的方法来改变一个PNG文件的颜色"

您可以尝试使用随机rgb值定义自定义ColorMatrix:

 Random rand = new Random(); int r = rand.nextInt(256); int g = rand.nextInt(256); int b = rand.nextInt(256); ColorMatrix cm = new ColorMatrix(); cm.set(new float[] { 1, 0, 0, 0, r, 0, 1, 0, 0, g, 0, 0, 1, 0, b, 0, 0, 0, 1, 0 }); // last line is antialias paint.setColorFilter(new ColorMatrixColorFilter(cm)); canvas.drawBitmap(myBitmap, toX, toY, paint); 

我希望它有帮助。

你可以使用黑色的气球png文件来创build不同的颜色气球。

下面的代码使用一些奇特的混合模式设置颜色欺骗。

 protected BitmapDrawable setIconColor(int color) { if (color == 0) { color = 0xffffffff; } final Resources res = getResources(); Drawable maskDrawable = res.getDrawable(R.drawable.actionbar_icon_mask); if (!(maskDrawable instanceof BitmapDrawable)) { return; } Bitmap maskBitmap = ((BitmapDrawable) maskDrawable).getBitmap(); final int width = maskBitmap.getWidth(); final int height = maskBitmap.getHeight(); Bitmap outBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(outBitmap); canvas.drawBitmap(maskBitmap, 0, 0, null); Paint maskedPaint = new Paint(); maskedPaint.setColor(color); maskedPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP)); canvas.drawRect(0, 0, width, height, maskedPaint); BitmapDrawable outDrawable = new BitmapDrawable(res, outBitmap); return outDrawable; }