我试图将引脚放在用户触摸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新手。请帮忙。
答案 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上迭代该列表并在每个点上绘制一个标记。
您还需要确保在保存实例状态下保存触摸点列表,否则您将在旋转和活动暂停时丢失它们。