cad*_*vre 21 android drawing canvas porter-duff
我正在尝试创建一个简单的自定义视图:有一个由弧路径显示的位图 - 从0deg到360deg.学位正在随着一些FPS而变化.
所以我使用重写onDraw()方法创建了一个自定义视图:
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
arcPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
canvas.drawArc(arcRectF, -90, currentAngleSweep, true, arcPaint);
arcPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, circleSourceRect, circleDestRect, arcPaint);
}
Run Code Online (Sandbox Code Playgroud)
arcPaint 初始化如下:
arcPaint = new Paint();
arcPaint.setAntiAlias(true);
arcPaint.setColor(Color.RED); // Color doesn't matter
Run Code Online (Sandbox Code Playgroud)
现在,一切都很棒,但是...整个视图中的背景是黑色的.
如果我设置canvas.drawColor(..., PorterDuff.Mode.DST)并省略canvas.drawBitmap()- 在透明背景上正确绘制圆弧.
我的问题是 - 如何设置PorterDuff模式以使其与透明度一起工作?
当然bitmap是具有alpha通道的32位PNG.
Nit*_*ani 32
PorterDuff.Mode.CLEAR不适用于硬件加速.刚设置
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
Run Code Online (Sandbox Code Playgroud)
适合我.
小智 10
在视图初始化期间使用此语句
setLayerType(LAYER_TYPE_HARDWARE, null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17735 次 |
| 最近记录: |