1

基本上我想画一个O形。有没有什么办法(除了匹配背景颜色)可以让我画两个椭圆形并拥有它,这样画布的中心椭圆形一直透明到活动的背景?

这是我到目前为止所拥有的:

protected void onDraw(Canvas canvas) {

    if(mainTimerAngle - 90 < 0){
        mainTimerAngle += 270;
    }

    canvas.drawArc(new RectF(0, 0, canvas.getWidth(), canvas.getHeight()),
                                          -90, mainTimerAngle-90,true, mainTimerPaint);

    canvas.drawOval(new RectF(barWidth, barWidth, canvas.getWidth() - barWidth,
                                      canvas.getHeight() - barWidth), backgroundPaint);

}
4

1 回答 1

1

是的,您可以通过使用为内部椭圆设置模式的Paint实例。PorterDuff.Mode.Clear

CLEAR模式基本上会擦除它绘制的像素。因此,您需要在专用Bitmap而不是直接在View. 如果你不这样做,你会发现直接擦除背景会导致黑洞。

以下是一些有用资源的链接。他们将为您概述各种模式及其视觉效果。

API 演示中还有一些示例代码,您应该可以在 Android SDK 文件夹中找到这些示例代码。请注意com.example.android.apis.graphics.Xfermodes。或者,在此处找到该类的最新源代码

于 2013-08-23T04:06:04.190 回答