0

我在这里遇到了奇怪的问题。当用户单击视图时,我添加到数组列表中。我得到了位置并将其添加到坐标的 ArrayList 中。然后我在画布上画一个圆圈,坐标表示要这样做。onDraw 中的 Size 检查总是返回 0。

private static ArrayList<Coordinate> coords = new ArrayList<Coordinate>();

触摸事件

...
case MotionEvent.ACTION_POINTER_UP: {
    mLastTouchX = event.getX();
    mLastTouchY = event.getY();
    this.coords.add(new Coordinate(mLastTouchX, mLastTouchY));
    break;
...

OnDraw

protected void onDraw(Canvas canvas) {

    super.onDraw(canvas);
    for(int i = 0; i < this.coords.size(); i++) {
        canvas.drawCircle(coords.get(i).x, coords.get(i).y, 30.0f, mPaint);
    }
}
4

1 回答 1

1

您期望如何获得静态字段this?但假设这只是一些错字,请尝试添加一些日志记录:

case MotionEvent.ACTION_POINTER_UP: {
    mLastTouchX = event.getX();
    mLastTouchY = event.getY();
    this.coords.add(new Coordinate(mLastTouchX, mLastTouchY));
    System.out.println("Added a coordinate; new size: " + coords.size());//to see if we are adding it
    break;

在你的 onDraw 中:

System.out.println(coords);//Just to see what all is in it
for(int i = 0; i < this.coords.size(); i++) {
    canvas.drawCircle(coords.get(i).x, coords.get(i).y, 30.0f, mPaint);
}
于 2012-08-24T05:20:40.220 回答