为棒棒糖前设备设置灰度图像的alpha值看起来非常不同

时间:2015-10-19 00:46:58

标签: android imageview grayscale colormatrix

在Lollipop前设备上有一些问题,涉及在我的图像视图上设置灰度。具体来说,在使用此代码将imageview转换为灰度后设置透明度:

public static void setGrayScale(ImageView view) {

    Paint paint = new Paint();

    ColorMatrix matrix = new ColorMatrix();
    matrix.setSaturation(0);

    ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
    paint.setColorFilter(filter);

    view.setLayerType(View.LAYER_TYPE_HARDWARE, paint);
}

在5.0+设备上,图像将转换为灰度,然后应用alpha值,从而产生漂亮的图像。

enter image description here

在5.0之前的设备(特别是带有4.2.2的Nexus 4)上,似乎没有尊重alpha值,而是显示更深的灰色。

enter image description here

有谁知道为什么会发生这种行为?它具有相同的setAlpha值(0.6f)。我尝试了不同的应用灰度的方法,并尝试在之前和之后setAlpha无效。

1 个答案:

答案 0 :(得分:1)

我认为原因是ColorMatrixColorFilter类的实现已从Lollipop更改,您可以在grepcode中看到。

问题的解决方法为values-v21文件夹中的棒棒糖和values内的前棒棒糖值设置了不同的值。