【发布时间】:2015-06-25 00:10:22
【问题描述】:
我有一堆位图,我需要在另一个之上渲染。我通过一个相对布局和几个相互重叠的 ImageView 来实现这一点,它们都分配了一个位图。
这很好用,但是当顶层是半透明时,下位图的颜色会关闭。
我所有的位图都使用Config.ARGB_8888。
假设顶层是红色,alpha 为 50%,底层是绿色,alpha 为 100%。
我可以将位图的颜色设置为红色,然后将 ImageView 的 alpha 设置为 0.5f,它将呈现低于精细的绿色(较深的绿色和一些红色混合)。
如果我像这样将位图像素设置为 50% 的红色:bmp.eraseColor(0x7Fff0000); 并将 imageView alpha 设置为 100%,下面的绿色将显示为黄色,混合红色和绿色,而不是覆盖它。
不幸的是,我不能使用(工作的)拳头版本,因为上面位图上的 alpha 不会是统一的。
在位图中使用半透明像素时,是否有混合模式设置以使用真彩色?
编辑:我也尝试为 ImageViews 设置几个 PorterDuffXfermodes,但没有一个给出正确的结果。
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(Mode.MULTIPLY)); //OVERLAY//ADD//SCREEN//DARKEN//LIGHTEN
imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, paint);
【问题讨论】: