Hallo,
ich bin der Neue und will mal schauen, ob auf meine alten Tage noch was lernen kann. Ich möchte ein kleines Projekt realisieren und scheitere bei der Animation. Im angehängten Code frage ich die Touch-Position ab und möchte davon ausgehend eine Reihe Punkte zeichen. Aber diese Punkte sollen nacheinander hinzugefügt werden und nicht wie bei mir jetzt erst alle 10 gezeichnet, aber erst am Schluss dargestellt.
Ich schätze ich muß da mit einem Timer arbeiten, aber wie mache ich das? Ähm .... Fachbegriffe sind mir nicht so geläufig, ein kleines Beispiel bringt mir da mehr, sorry
Danke im Voraus
Gruß Jörg
Java: Canvas-Animation
package de.milestoneblog.example.androiddrawexample.view;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
public class DrawView extends View implements OnTouchListener
{
Bitmap bitmap;
Canvas bitmapCanvas;
boolean isInitialized;
Paint paint = new Paint();
public DrawView(Context context)
{
super(context);
setFocusable(true);
setFocusableInTouchMode(true);
this.setOnTouchListener(this);
paint.setColor(Color.WHITE);
paint.setAntiAlias(true);
paint.setStyle(Style.FILL_AND_STROKE);
isInitialized = false;
}
private void init()
{
bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.RGB_565);
bitmapCanvas = new Canvas();
bitmapCanvas.setBitmap(bitmap);
bitmapCanvas.drawColor(Color.BLACK);
isInitialized = true;
}
@Override
public void onDraw(Canvas canvas)
{
if (!isInitialized)
init();
canvas.drawBitmap(bitmap, 0, 0, paint);
}
public boolean onTouch(View view, MotionEvent event)
{
float X = event.getX();
float Y = event.getY();
for (int i=0;i<10;i++){
bitmapCanvas.drawCircle(X, Y, 1+i, paint);
X+=10;
Y+=15;
}
return true;
}
}
Alles anzeigen