Android OnTouch события многочисленные объекты - PullRequest
1 голос
/ 28 сентября 2011

хорошо, я играю с событиями касания, расширяющими вид.

то, что я сделал, - это сделал на ощупь круг.Когда вы двигаетесь, создается еще один круг, и он будет сидеть в позиции, уменьшая радиус, пока он не исчезнет ... (сейчас до 10 кругов).Я также могу обращаться с несколькими пальцами, касающимися в один момент времени.Вот в чем проблема ... КОДЕКС ПРОТИВНЫЙ!

Чтобы создать несколько кругов Это мой метод рисования:

public void onDraw(Canvas canvas)
    {
        paint.setColor(Color.RED);                
        paint.setStyle(Style.STROKE); 
        paint.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);
    }

, так как вы можете видеть это очень неэффективно и приводит к длинному неприятному коду. Отчасти проблема в том,Я обязан только быть в состоянии изменить координаты в Ontouch .. и сделать недействительным.Кто-нибудь знает, как я могу сделать это более эффективно (в подходе с более объектно-ориентированным типом).

1 Ответ

2 голосов
/ 28 сентября 2011

Перво-наперво, начните с этого:

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

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

}

И поместите все свои круги в

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);
}
...