キャンバスとタッチイベントを変更しようとしているため、キャンバスに沿って動いている円がキャンバスに沿って移動している間に消えてしまいます。このような円の軌跡がキャンバス上でフェードアウト
。
私はビットマップを扱うこのような質問の大半を行ってきました。私は円の座標がキャンバスに描かれた個々の形状/画像ではなく、ループして描かれた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