Android 半透明位图叠加渲染错误的颜色

Android 半透明位图叠加渲染错误的颜色,android,colors,bitmap,Android,Colors,Bitmap,我有一堆位图,需要将一个位图渲染到另一个位图之上。我通过一个相对布局和几个相互重叠的图像视图来实现这一点,这些视图都有一个位图分配给它 这非常有效,但当顶层为半透明时,下部位图的颜色将关闭 我所有的位图都使用Config.ARGB_8888 假设顶层为红色,alpha值为50%,底层为绿色,alpha值为100% 我可以将位图的颜色设置为红色,然后将ImageView的alpha设置为0.5f,它会将绿色渲染到精细以下(深绿色中混入一些红色) 如果我将位图像素设置为50%红色,如下所示:bmp.

我有一堆位图,需要将一个位图渲染到另一个位图之上。我通过一个相对布局和几个相互重叠的图像视图来实现这一点,这些视图都有一个位图分配给它

这非常有效,但当顶层为半透明时,下部位图的颜色将关闭

我所有的位图都使用
Config.ARGB_8888

假设顶层为红色,alpha值为50%,底层为绿色,alpha值为100%

我可以将位图的颜色设置为红色,然后将ImageView的alpha设置为0.5f,它会将绿色渲染到精细以下(深绿色中混入一些红色)

如果我将位图像素设置为50%红色,如下所示:
bmp.eraseColor(0x7Fff0000)
并将imageView alpha保持为100%,下面的绿色将显示为黄色,混合红色和绿色,而不是叠加在上面

不幸的是,我不能使用(工作)fist版本,因为上面位图上的alpha不是统一的

在位图中使用半透明像素时,是否有混合模式设置以使用真彩色

编辑:我还尝试将几个PorterDuffXfermodes设置为ImageView,但没有一个给出正确的结果

Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(Mode.MULTIPLY)); //OVERLAY//ADD//SCREEN//DARKEN//LIGHTEN
imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, paint);

明白了,需要对alpha进行预乘才能得到想要的结果