0

私がここで抱えている奇妙な問題。ユーザーがビューをクリックしたときに配列リストに追加します。位置を取得し、それを座標のArrayListに追加します。次に、座標がそうするように指示しているキャンバスに円を描きます。onDrawのサイズチェックは常に0を返します。

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

OnTouchEvent

...
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 に答える