Du hast die for-each auskommentiert, so haben BallX und BallY immer den selben am Anfang zugeteilten Wert.
Code:
package com.terratroll.draw;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.RectF;
import android.os.Bundle;
import android.support.v4.view.MotionEventCompat;
import android.view.GestureDetector;
import android.view.GestureDetector.OnDoubleTapListener;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.View;
//Implement this interface to be notified when a gesture occurs
public class MainActivity extends Activity implements OnGestureListener
{
//creates a Gesture Detector
private GestureDetector gd;
private float ballradius = 65;
private RectF ballbounds;
private Paint paint;
private float BallX = ballradius + 180;
private float BallY = ballradius + 280;
private ArrayList<Point> liste = new ArrayList<Point>();
private float tapX;
private float tapY;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
View drawView = new View(this);
setContentView(drawView);
drawView.setBackgroundColor(Color.RED);
//initialize the Gesture Detector
gd = new GestureDetector(this);
//set the on Double tap listener
gd.setOnDoubleTapListener(new OnDoubleTapListener()
{
@Override
public boolean onDoubleTap(MotionEvent e)
{
//set text color to green
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e)
{
//if the second tap hadn't been released and it's being moved
if(e.getAction() == MotionEvent.ACTION_MOVE)
{
}
else if(e.getAction() == MotionEvent.ACTION_UP)//user released the screen
{
}
return false;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e)
{
return false;
}
});
}
public class drawView extends View{
public drawView(Context context) {
super(context);
}
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
ballbounds = new RectF();
paint = new Paint();
paint.setColor(Color.YELLOW);
for(Point p : liste){ //Die Liste mit einer For-Each Schleife durchlaufen
if(p.x != 0 && p.y != 0){
BallX = p.x;
BallY = p.y;}
ballbounds.set(BallX-ballradius, BallY-ballradius, BallX+ballradius, BallY+ballradius);
canvas.drawOval(ballbounds, paint);
}
try {
Thread.sleep(30);
} catch (InterruptedException e) { }
invalidate(); // Force a re-draw
}
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
switch(event.getActionMasked()){
case MotionEvent.ACTION_MOVE:
tapX = event.getX();
tapY = event.getY();
liste.add(new Point( (int)tapX, (int)tapY) ); //Der Liste einen neuen Punkt hinzufügen
}
return true;
}
@Override
public boolean onDown(MotionEvent e)
{
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
return false;
}
@Override
public void onLongPress(MotionEvent e)
{
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
return false;
}
@Override
public void onShowPress(MotionEvent e)
{
}
@Override
public boolean onSingleTapUp(MotionEvent e)
{
return false;
}
}
Nichts gegen dich, aber du solltest dir den Code selbst schreiben und nicht Codefetzen aus Foren benutzen.