在一些需求中,需要将ImageView的背景色变暗从而突出其他的view,类似于dialog的效果,如果仅仅是通过设置背景色的alpha是不能够达到这种效果的,如下图:
这个时候还是需要运用canvas的画图功能,可以在canvas已有的图片基础上设置画笔的alpha,绘制一个矩形蒙板就可以达到该种效果:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
private
Bitmap getDarker(Drawable d){
BitmapDrawable drawable =(BitmapDrawable)d;
Bitmap origin = drawable.getBitmap();
int
width = origin.getWidth();
int
height = origin.getHeight();
Bitmap background =Bitmap.createBitmap(width, height, Config.ARGB_8888);
Canvas canvas=
new
Canvas(background);
canvas.drawBitmap(origin,
0
,
0
,
new
Paint());
Paint p1=
new
Paint();
p1.setAlpha(
75
);
canvas.drawRect(
0
,
0
, width, height, p1);
return
background;
}
|
实现效果如下: