0

我有一个由白色和灰色(alpha 100%)和完全透明区域(alpha==0)组成的 png。我正在尝试用不同的颜色为图标着色,然后返回一个位图。这是我的代码。

        Drawable iconDrawable = getResources().getDrawable(iconDrawableId);
        iconDrawable.mutate().setColorFilter(0xffff00ff, PorterDuff.Mode.MULTIPLY);
        Bitmap outputBmp = ((BitmapDrawable) iconDrawable).getBitmap();

不幸的是,我的图标保持白色和灰色。我在监督什么?

4

1 回答 1

0

在 Mikes 暗示后,我意识到我可以这样做:

        Drawable iconDrawable = getResources().getDrawable(iconDrawableId);
        iconDrawable.mutate().setColorFilter(0xffffff00, PorterDuff.Mode.MULTIPLY);
        Bitmap bitmap = Bitmap.createBitmap(iconDrawable.getIntrinsicWidth(), iconDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        iconDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
        iconDrawable.draw(canvas);

但最后我去了这个

        Bitmap whiteBmp = BitmapFactory.decodeResource(getResources(), iconDrawableId);
        Paint paint = new Paint();
        paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.MULTIPLY));
        Bitmap bitmapResult = Bitmap.createBitmap(whiteBmp.getWidth(), whiteBmp.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmapResult);
        canvas.drawBitmap(whiteBmp, 0, 0, paint);
于 2018-12-11T09:18:15.503 回答