Android:如何使用ColorMatrix实现与ImageView.setAlpha()相同的效果

时间:2016-02-16 06:05:25

标签: java android gridview

我使用GridView显示更多的30张图片(一列中有5张图片)。我发现当我在主线程中使用ImageView.setAlpha()函数时,GridView滚动的流动性变差了。

因此,我想使用ColorMatrix产生与setAlpha()函数相同的效果。这是我的代码,

Bitmap resultBitmap = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight());
Bitmap mutableBitmap = resultBitmap.copy(Bitmap.Config.ARGB_8888, true);
// ColorMatrix
float[] colorMatrix = new float[] {
          1, 0, 0, 0, 0, //red
          0, 1, 0, 0, 0, //green
          0, 0, 1, 0, 0, //blue
          0, 0, 0, A, 0  //alpha
};
colorFilter = new ColorMatrixColorFilter(colorMatrix);
Paint paint = new Paint();
paint.setColorFilter(colorFilter); 
Canvas canvas = new Canvas(mutableBitmap);
canvas.drawBitmap(mutableBitmap, 0, 0, paint);
canvas.save(Canvas.ALL_SAVE_FLAG);
canvas.restore();

我读了几段代码说上面的代码可以产生相同的功能。我已经尝试了几个A的值。但是,我找不到想要的效果。

当A为1时,相同的图片。 当A为0时,全黑。 当A为0.5时,变暗。从理论上讲,它应该变得更轻。

你知道这个问题吗?

0 个答案:

没有答案