在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值,从而产生漂亮的图像。
在5.0之前的设备(特别是带有4.2.2的Nexus 4)上,似乎没有尊重alpha值,而是显示更深的灰色。
有谁知道为什么会发生这种行为?它具有相同的setAlpha值(0.6f)。我尝试了不同的应用灰度的方法,并尝试在之前和之后setAlpha无效。
答案 0 :(得分:1)
我认为原因是ColorMatrixColorFilter类的实现已从Lollipop更改,您可以在grepcode中看到。
问题的解决方法为values-v21
文件夹中的棒棒糖和values
内的前棒棒糖值设置了不同的值。