我正在尝试画一些装满某种苏打水的玻璃杯。我有一个PNG
的玻璃图像非常透明,我想用一种颜色填充它的一部分。
这是我到目前为止所做的:
glassRect = new Rect(0, 0, 800, 1100);
colorRect = new Rect(0, 800, 800, 1100);
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint imagePaint = new Paint();
imagePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
Paint colorPaint = new Paint();
colorPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OVER));
colorPaint.setColor(Color.argb(255, 160, 85, 45));
canvas.drawBitmap(glassBitmap, null, glassRect, imagePaint);
canvas.drawRect(colorRect, colorPaint);
}
但是这给了我这个:
玻璃的一部分变黑了而不是保持透明
我该如何解决这个问题?或者我不是这样做的吗?请告诉我:))
答案 0 :(得分:0)
在app的manifest.xml上添加以下代码;
<application
android:hardwareAccelerated="false"
...
</application>
链接中的相关句子 - http://developer.android.com/guide/topics/graphics/hardware-accel.html#controlling;
“...如果您的应用程序仅使用标准视图和Drawables,则全局打开它不会导致任何不利的绘图效果。但是,由于所有2D绘图操作都不支持硬件加速,因此打开它可能会影响一些自定义视图或绘图调用。“