Java 通过保留图标内部的颜色来更改图标的颜色

Java 通过保留图标内部的颜色来更改图标的颜色,java,android,Java,Android,我有一个红色的位置图标,里面有一个白色的圆圈。 我想通过编程将其颜色更改为黄色,保留白色圆圈。 我正在使用这个代码- Drawable drawable = getActivity().getResources().getDrawable(R.drawable.location_icon); Canvas canvas = new Canvas(); Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawabl

我有一个红色的位置图标,里面有一个白色的圆圈。 我想通过编程将其颜色更改为黄色,保留白色圆圈。 我正在使用这个代码-

Drawable drawable = getActivity().getResources().getDrawable(R.drawable.location_icon);
Canvas canvas = new Canvas();
Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
canvas.setBitmap(bitmap);
drawable.setColorFilter(new PorterDuffColorFilter(context.getResources().getColor(R.color.yellow_color), PorterDuff.Mode.MULTIPLY));
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
drawable.draw(canvas);
return BitmapDescriptorFactory.fromBitmap(bitmap);
我如何通过保留其内部的白色圆圈将其主题设置为黄色


获取所有像素并逐个更改为所需的颜色

例如:

Bitmap bitmap= BitmapFactory.decodeResource(getApplicationContext().getResources(),R.drawable.yourRes);
myBitmap=immutableBmp.copy(Bitmap.Config.ARGB_8888, true);

int [] pixels = new int [myBitmap.getHeight() * myBitmap.getWidth()];

myBitmap.getPixels(pixels, 0, myBitmap.getWidth(), 0, 0, myBitmap.getWidth(), myBitmap.getHeight());

for(int i = 0; i < pixels.length; i++)
{
    if(pixels[i] == Color.RED)
    {
        pixels[i] = Color.YELLOW;
    }
}

myBitmap.setPixels(pixels,0,myBitmap.getWidth(),0, 0, myBitmap.getWidth(),myBitmap.getHeight());
Bitmap Bitmap=BitmapFactory.decodeResource(getApplicationContext().getResources(),R.drawable.yourRes);
myBitmap=immutableBmp.copy(Bitmap.Config.ARGB_8888,true);
int[]像素=新的int[myBitmap.getHeight()*myBitmap.getWidth()];
getPixels(像素,0,myBitmap.getWidth(),0,0,myBitmap.getWidth(),myBitmap.getHeight());
对于(int i=0;i
我认为,对于这个特定的图标,您可以使用谷歌的vector asset并更改其色调。检查以下链接:
你想改变所有的白色或只是中间的圆圈吗?我想把红色变为黄色,保留白色,但没有运气:(为什么你不使用另一种方法使用两幅图像,一幅是红色,一幅是黄色,诀窍就是在它们之间切换?只是一个问题,你的图像是JPEG还是PNG?如果是JPEG,尝试使用PNG格式的相同代码它是PNG…我不想使用两幅不同的图像,因为我有太多的资源用于一幅不同颜色的图像。)y检查你想要改变的颜色的真实代码,因为我认为它不完全是红色