2013-10-15 15 views
7

我已經通過以0到360度的角度成功掃描實現了一個動畫繪製環。 但是,當環的尾部以360度的角度遇到它的頭部時,所有的繪圖都消失了。在Android中使用Path.arcTo()繪製戒指時的怪異行爲

這是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); 

我的環碼,這是結果,

enter image description here

通知這裏我設置sweepAngle至-359變成圓之前。 但是,如果我將sweepAngle更改爲-360。它產生了這個結果。

enter image description here

將會消失! 任何人都知道如何解決這個請幫我嗎?

謝謝。

PS。我不想使用drawArc(),因爲我想在戒指內打個洞。隨着drawArc(),我的按鈕將消失。

回答

2

我想android會在真正繪製它之前修改360。所以x - 360 === x,它會畫什麼!

+0

我想是這樣....那麼唯一的辦法我們可以做的是使用sweepAngel = 360的另一張圖紙。就像@Kevin說的 – SaintTail

+0

@SaintTail,這指出了這個問題,但並沒有告訴如何克服它。這是如何被接受的答案? – azizbekian

1

我很晚了,但我通過添加一個實心圓作爲動畫的最後一幀(我正在使用AnimationDrawable,但這個想法在這種情況下是相同的)來解決它。所有的抽獎代碼是爲最後一幀相同,只是一條線:

取代:

mPath.arcTo(rectF, startAngle, sweepAngle); 

的東西,如:

mPath.addCircle(cenX, cenY, innerRadius, Path.Direction.CCW);