开发者

Android OnTouch events numerous Objects

开发者 https://www.devze.com 2023-04-09 15:17 出处:网络
ok I\'m playing w/ ontouch events extending a view. what I\'ve done is made a circle on touch.. the cirlce will follow as you move.As you move another circle is made and will sit in the postion decre

ok I'm playing w/ ontouch events extending a view.

what I've done is made a circle on touch.. the cirlce will follow as you move. As you move another circle is made and will sit in the postion decrementing the radius until it disappears.. (right now up to like 10 circles). I can also handle multiple fingers touching at one point in time. Here's the problem.. THE CODE IS NASTY!

To create multiple circle This is my paint method:

public void onDraw(Canvas canvas)
    {
        paint.setColor(Color.RED);                
        paint.setStyle(Style.STROKE); 
        p开发者_如何学Goaint.setStrokeWidth(stroke);
        canvas.drawCircle(x,y,radius,paint);
        canvas.drawCircle(x1,y1,radius1,paint);
        canvas.drawCircle(x2,y2,radius2,paint);
        canvas.drawCircle(x3,y3,radius3,paint);
        canvas.drawCircle(x4,y4,radius4,paint);
        canvas.drawCircle(x5,y5,radius5,paint);
        canvas.drawCircle(x6,y6,radius6,paint);

        paint.setColor(Color.BLUE);
        canvas.drawCircle(x7,y7,radius7,paint);
        canvas.drawCircle(x8,y8,radius8,paint);

        paint.setColor(Color.YELLOW);
        canvas.drawCircle(x9,y9,radius9,paint);
        canvas.drawCircle(x10,y10,radius10,paint);
    }

so as you can see this by far inefficient and makes for some long nasty code.. Part of the issue is the fact I'm bound to only being able to change coordinates in Ontouch.. and invalidate. Anyoone know a way I can do this more efficently (in a more object orriented type approach).


First things first, start with this:

public class Circle {
    public int x;
    public int y;
    public double radius;
    public Paint paint;

    /* constructors, getters & setters if you feel like ...*/

}

And put all your circles in a

ArrayList<Circle> circles = new ArrayList();


public void onDraw(Canvas canvas)
{
    /*...*/
    Iterator iterator = circles.iterator();
    while(iterator.hasNext()) {
        drawCircle(iterator.next());
    }
}

public void drawCircle(Canvas canvas, Circle circle) {
    canvas.drawCircle(circle.x, circle.y, circle.raidus, circle.paint);
}
0

精彩评论

暂无评论...
验证码 换一张
取 消