修改bitmap颜色
开发中遇到一个问题,就是onDraw()中使用了bitmap图标,想要动态改变它的颜色?首先,我感觉应该可以改。怎么改呢?
主要用到了 PorterDuffColorFilter 与mode 中的 PorterDuff.Mode.SRC_IN.
步骤
1、建立画笔 2、设置颜色过滤器 3、获取bitmap 4、canvas修改
具体代码如下:
void changeBitmapColor(Canvas canvas){
Paint p = new Paint();//建立一个画笔
p.setColorFilter( new PorterDuffColorFilter(ContextCompat.getColor(mContext,mColor), PorterDuff.Mode.SRC_IN)) ;//设置颜色过滤器与模式
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon_lock);//获取bitmap
int ll = 0;
int lt = 0;
int lr = 50;
int lb = 50;
Rect rl = new Rect(ll, lt, lr, lb);//修改区域大小
canvas.drawBitmap(bitmap, null, rl, p);//重新设色
}
不要忘记禁用加速器:
setLayerType(View.LAYER_TYPE_SOFTWARE, null);//关闭硬件加速,解决变黑问题