我有一个红色的位置图标,里面有一个白色圆圈。 我想以编程方式将其颜色更改为黄色,保留白色圆圈。 我正在使用此代码 -
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);
如何通过在其中保留白色圆圈来将其设为黄色?
答案 0 :(得分:0)
获取所有像素并逐个更改为您需要的颜色。
例如:
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());
答案 1 :(得分:0)
我认为对于这个特定的图标,您可以使用谷歌的矢量资产并更改它的色调颜色。检查以下链接: https://developer.android.com/studio/write/vector-asset-studio.html#running