这段代码使用位图的 alpha 通道绘制了一个带有透明度的单色形状。
例如,它将会把左侧的位图绘制到画布上,就像右侧所显示的那样: 然而,当开启硬件加速时,它在Honeycomb(Android 3.0)上无法工作。无论如何,它都会将形状绘制为黑色。它忽略了颜色值。但是,在ICS(Android 4.0)上,即使开启硬件加速,它也能正常工作。
我知道一些API不支持硬件加速,如Romain Guy documented here所述,在What drawing operations are supported?下,但我似乎没有使用任何不支持的操作之一。
此外,听起来他说setColorFilter应该在at this post中工作。
我的代码中是否有某些在Honeycomb中不受支持的东西?有什么解决办法吗?在这种情况下,我很想保持硬件加速。
谢谢
Bitmap alphaMask = bitmap.extractAlpha();
Paint paint = new Paint();
int color = Color.GRAY;
...
paint.setColor(color);
paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.DST_IN));
...
canvas.drawBitmap(alphaMask, x, y, paint);
例如,它将会把左侧的位图绘制到画布上,就像右侧所显示的那样: 然而,当开启硬件加速时,它在Honeycomb(Android 3.0)上无法工作。无论如何,它都会将形状绘制为黑色。它忽略了颜色值。但是,在ICS(Android 4.0)上,即使开启硬件加速,它也能正常工作。
我知道一些API不支持硬件加速,如Romain Guy documented here所述,在What drawing operations are supported?下,但我似乎没有使用任何不支持的操作之一。
此外,听起来他说setColorFilter应该在at this post中工作。
我的代码中是否有某些在Honeycomb中不受支持的东西?有什么解决办法吗?在这种情况下,我很想保持硬件加速。
谢谢