我想要修改我的畫布和觸摸事件,以便在用戶仍然沿着畫布移動時,最後繪製的圓圈逐漸淡出。圓形軌跡在畫布上淡出
其中較小的圓淡出加班。
我已經經歷了大部分與Bitmap相關的類似問題。我一直在努力實現在這些問題中提出的提示,因爲我的圓形座標存儲在循環繪製的ArrayList中,而不是繪製到畫布上的單個形狀/圖像。
下面是我到目前爲止已經寫的:
case MotionEvent.ACTION_MOVE: {
if (inCircle(event, sceneView.circleRadius - 30)) {
int pointer = event.getPointerCount();
Point xyPoint = new Point();
for (int i = 0; i < pointer; i++) {
xInput = (int) event.getX() - (50/2);
yInput = (int) event.getY() - (50/2);
colorList.add(getCircleColor(sceneView.myBitmap));
xyPoint.x = xInput;
xyPoint.y = yInput;
pointList.add(xyPoint);
}
invalidate();
return true;
}
}
和的onDraw:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for (int i = 0; i < pointList.size(); i++) {
Point p = pointList.get(i);
touchCircle.setColor(colorList.get(i));
canvas.drawCircle(p.x, p.y, touchRadius, touchCircle);
}
}
我試圖修改ArrayList中圓的阿爾法值欄的最後元素來反映淡出,但這會導致一個口吃效果,而不是以前所有點的平滑淡出。
道歉,如果這個問題出現重複,我只是非常感謝一些意見,關於如何解決這個問題。
請讓我知道是否有任何我應該澄清。
謝謝!我瀏覽了一下你的代碼並在網上閱讀了一下。我現在有一個基本的淡入淡出動畫:)。然而,現在它淡化了同時繪製的所有圈子。你會知道我怎麼能夠實現從最古老的繪製到最近的動畫的交錯動畫。 –
你需要在這個計算中引入'pointList'的索引。在你的'Runnable'中,你需要根據索引區分動畫。 – Henry