在我正在处理的应用中,我们希望向用户显示某些项目已被禁用。我们想要通过以灰度绘制视图的视觉效果的方式。这些视图可以包含图像,文本,按钮等,几乎任何东西。
那么,有没有办法让整个视图以灰度绘制?
这是当前的解决方案,对于listview项目来说太慢了:
@Override
protected void dispatchDraw(Canvas canvas) {
final Bitmap tempBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ALPHA_8);
final Canvas tempCanvas = new Canvas(tempBitmap);
ColorMatrix colorMatrix = new ColorMatrix();
colorMatrix.setSaturation(0);
Paint paint = new Paint(Paint.DITHER_FLAG);
paint.setColorFilter(new ColorMatrixColorFilter(colorMatrix));
super.dispatchDraw(tempCanvas);
canvas.drawBitmap(tempBitmap, 0, 0, paint);
}