0
我想在TextureView中繪製越來越多的圓圈。所有圈子的中心都是一樣的。然後我嘗試增加繪製的Circle直到達到特定的限制。然後我想清除畫布並重新開始。然而,使用我的代碼(見下文),畫布似乎永遠不會被清除。實際上它應該被清除時很快閃爍白色,但是當下一個循環中的第一個圓圈被繪製(試圖清除畫布後)時,所有先前的圓圈都會重新出現,並且整個動畫似乎都會變得瘋狂。讓它運行幾秒鐘後,我留下了幾十個圈(有些重疊),而不是每個週期只有大約4個。此外,他們沒有我給他們的半徑(基本上我的代碼最終繪製了大量隨機大小的圓圈)。花了好幾天嘗試不同的事情,但似乎沒有任何幫助。如何清除紋理視圖中的畫布(繪製增加的圓圈後)
這裏是我的代碼:
paint.setColor(Color.argb(opac, 177, 177, 177));
stroke = 5;
paint.setStrokeWidth(stroke);
radius = 10;
Canvas canvas = new Canvas();
Boolean clear = false;
//Added these two lines following advice from a previous answer:
Paint clearPaint = new Paint();
clearPaint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));
while (mRunning && !Thread.interrupted()) {
canvas = mSurface.lockCanvas(null);
try {
if(clear){
canvas.drawPaint(clearPaint); //This line should clear the canvas.
clear = false;
}else{
canvas.drawCircle(circleX, circleY, radius, paint);
}
} finally {
mSurface.unlockCanvasAndPost(canvas);
}
if(radius+15 <= circleY-stroke/2){
radius+=15;
}else{
radius = 10;
clear = true;
}
try {
Thread.sleep(360);
} catch (InterruptedException e) {
// Interrupted
}
會很感激,如果有人可以幫助我在這裏。由於這個問題,我幾個星期無法繼續我的項目。
我想你的建議漆成,但第一循環整個動畫還是發瘋,這意味着幾個圈後同時繪製(彷彿重現)和別人的頂部,沒有結構:(謝謝反正畫,我願意接受任何新的想法 – REG1 2014-12-05 17:23:57
也就是說因爲這些圈子正在繪製在t上彼此運作。將發佈示例代碼。 – 2014-12-09 13:51:36
謝謝您的回覆。我正在爲考試而學習,這就是爲什麼我最近沒有太多時間。你的意思是,你會發布如何繪製圓圈的示例代碼?如果是這樣,那將是非常有用的,因爲我看不到我做錯了什麼(對我而言,他們並不是互相牽制)。再次感謝 – REG1 2014-12-11 15:55:51