10

0 から 360 の角度でスイープを開始することにより、アニメーション描画リングを実装しました。ただし、リングの尾が 360 度の角度で頭に当たると、すべての描画が消えます。

これはリングインの私のコードですonDraw()

        float startAngle = 270;
        float sweepAngle = -359;

        paint.setColor(Color.DKGRAY);
        paint.setShadowLayer(4, 2, 2, 0x80000000);

        rectF.set(cenX - outerRadius, cenY - outerRadius, cenX + outerRadius,
                cenY + outerRadius);
        path.arcTo(rectF, startAngle, sweepAngle);
        //canvas.drawArc(rectF, 0, 360, false, paint);
        rectF.set(cenX - innerRadius, cenY - innerRadius, cenX + innerRadius,
                cenY + innerRadius);
        /*paint.reset();
        paint.setAntiAlias(true);
        paint.setColor(Color.WHITE);
        canvas.drawArc(rectF, 0, 360, false, paint);*/
        path.arcTo(rectF, startAngle + sweepAngle, -(sweepAngle));

        canvas.drawPath(path, paint);

これが結果です。

ここに画像の説明を入力

ここで、sweepAngle を円になる直前に -359 に設定していることに注意してください。ただし、sweepAngle を -360 に変更すると。この結果が得られます。

ここに画像の説明を入力

消える!! これを解決する方法を知っている人は、私を助けてください。

ありがとう。

PS。drawArc()リングの内側に穴を開けたいので使いたくないです。でdrawArc()、ボタンがなくなります。

4

2 に答える 2

2

Androidは実際に描画する前に360を改造すると思います。だからx - 360 === x、それは何も描画しません!

于 2014-03-31T15:35:30.120 に答える