Ich versuche, mein Canvas- und Touch-Ereignis so zu ändern, dass die gezeichneten Kreise schließlich ausgeblendet werden, während sich der Benutzer noch auf der Zeichenfläche bewegt.Kreisspur auf Leinwand auszublenden
Wo die kleineren Kreise Überstunden ausgeblendet.
Ich habe die Mehrheit der ähnlichen Fragen für diesen Umgang mit Bitmaps durchlaufen. Ich habe mich bemüht, die in diesen Fragen vorgeschlagenen Tipps zu implementieren, da meine Kreiskoordinaten in einer ArrayList gespeichert werden, die durchgeschleift und gezeichnet wird, anstatt eine individuelle Form/ein einzelnes Bild, das auf die Leinwand gezeichnet wird.
Unten ist das, was ich bisher geschrieben habe:
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;
}
}
und die 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);
}
}
Ich habe versucht, den Alpha-Wert der Kreise in der Arraylist Bar die letzte zu ändern Element, das die Ausblendung widerspiegelt, aber das verursacht einen stotternden Effekt anstatt eines sanften Ausblendens aller vorhergehenden Punkte.
Entschuldigung, wenn diese Frage sich als repetitiv anspricht, würde ich einfach einige Meinungen darüber schätzen, wie man dieses Problem löst.
Bitte lassen Sie mich wissen, wenn es etwas gibt, was ich auch klären sollte.
Vielen Dank! Ich habe mir deinen Code angesehen und ein bisschen online gelesen. Ich habe jetzt eine grundlegende Fade-Animation, die funktioniert :). Allerdings blendet es gerade alle gleichzeitig gezeichneten Kreise aus. Würdest du wissen, wie ich eine gestaffelte Animation von den ältesten bis zu den jüngsten erreichen könnte? –
Sie müssen den Index der 'PointList' in diese Berechnung einbeziehen. Innerhalb Ihrer 'Runnable' müssen Sie die Animation basierend auf dem Index unterscheiden. – Henry