在触摸点固定几个图像 - Android

时间:2013-09-24 16:20:49

标签: android

我试图将引脚放在用户触摸imageView的任何地方。假设地图(如谷歌地图)&用户触摸一个点,比如A点,并在该点绘制一个引脚。然后,用户触摸B点,然后需要在B点绘制另一个引脚(不是相同的先前引脚重新定位!),依此类推。现在,我能够在用户触摸屏幕的位置绘制一个引脚,如下所示:

@Override
public void onDraw(Canvas canvas) {
....
    Bitmap marker = BitmapFactory.decodeResource(getResources(),
            R.drawable.icon_locationmarker);
    canvas.drawBitmap(marker, mLastTouchX, mLastTouchY, null);
.... 
    canvas.restore();
}

但是,我不希望在用户触摸的任何地方重新定位一个引脚(这是上面代码所做的)。我希望在用户触摸的所有位置放置几个引脚。我是Android新手。请帮忙。

2 个答案:

答案 0 :(得分:3)

Eluvatar是对的,您需要创建一个列表来存储您的所有商标。这是代码示例。请记住,只有当motionEvent只是Action_UP或Action_DOWN时才添加列表。否则,就会有充分的意义。

public ArrayList<Coordinate> pointsList;

@Override
public void onDraw(Canvas canvas) {
....
    Bitmap marker = BitmapFactory.decodeResource(getResources(),
            R.drawable.icon_locationmarker);
    for(Coordinate coor : pointsList){
        canvas.drawBitmap(marker, coor.x, coor.y, null);
    }

.... 
    canvas.restore();
}

public View.OnTouchListener mListener = new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        if (event.getAction() == android.view.MotionEvent.ACTION_UP) {
            pointsList.add(new Coordinate(event.getX(), event.getY()));
        }

        return false;
    }
};

class Coordinate{
    float x;
    float y;
    public Coordinate(float x, float y){
        this.x = x;
        this.y = y;
    }
}

编辑:将int x,y更改为float x,y

答案 1 :(得分:2)

您需要创建“触摸点”列表。然后在触摸上为列表添加一个新的触摸点,然后在onDraw上迭代该列表并在每个点上绘制一个标记。

您还需要确保在保存实例状态下保存触摸点列表,否则您将在旋转和活动暂停时丢失它们。

相关问题