如何在白色中着色Android位图?

Arn*_*aud 4 android bitmap

我想将位图着色为不同的颜色.感谢这个SE问题,当我在画布上绘制它时,我能够将它染成不同的颜色.

Paint p = new Paint(Color.RED);
ColorFilter filter = new LightingColorFilter(Color.RED, 1);
p.setColorFilter(filter);
Run Code Online (Sandbox Code Playgroud)

但这似乎无法使用Color.WHITE(可能是因为我的位图仅用1种颜色着色).我想要原始位图的白色形状(只有透明+白色)

Arn*_*aud 8

好.我在这里回答可能面临这个问题的人.

为了保持位图的形状并将其着色,您需要使用a PorterDuffColorFilter而不是LightingColorFilter最初使用的i.

 filter = new PorterDuffColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
 mPaint.setColorFilter(filter);
Run Code Online (Sandbox Code Playgroud)

第二个参数是a PorterDuff.Mode,你可以在这里找到完整的列表