我在三星S3上运行4.3时遇到了setColorFilter
的问题,唯一能使滤镜起作用的方法是在draw(Canvas canvas)
方法中应用它:
public class ColouredDrawable extends BitmapDrawable {
private ColorFilter mColorFilter;
public ColouredDrawable(Bitmap toTransform, int toColour, Resources resources) {
super(resources, toTransform);
float[] matrix = {
0, 0, 0, 0, ((toColour & 0xFF0000) / 0xFFFF),
0, 0, 0, 0, ((toColour & 0xFF00) / 0xFF),
0, 0, 0, 0, (toColour & 0xFF),
0, 0, 0, 1, 0 };
mColorFilter = new ColorMatrixColorFilter(matrix);
}
@Override
public void draw(Canvas canvas) {
setColorFilter(mColorFilter);
super.draw(canvas);
}
简单地将
setColorFilter
应用于 BitmapDrawable 似乎没有任何效果。
PorterDuff.Mode.SRC_ATOP
是默认使用的模式,weatherImg.setColorFilter(Color.WHITE)
也可以使用。 - GuilhE