我的活动中有几个 ImageView,用户可以在屏幕上移动。如何确定用户实际选择了哪个 ImageView?在 Xcode 中,我可以为每个 ImageView 分配一个唯一的标签,然后 onTouch 获得标签号。Android上有类似的方法吗?
这是 Xcode:
UITouch *touch = [[event allTouches] anyObject];
if ([touch view].tag == 901)
{
iTouchObject = 901;
[self.view bringSubviewToFront:imgRojo1];
}
在 Android Activity 中我到目前为止已经完成:在 onCreate 我可以为每个 ImageView 分配一个 ID
ImageView selImage = (ImageView)findViewById(R.id.i904);
selImage.setId(904);
在 onTouch.MOVED 中,我可以使用带有直接分配 ID 的 ImageView。在这种情况下,图像在屏幕上手指下方平滑移动。
iID = 904;
ImageView selImage = (ImageView)findViewById(iID);
但是,如何从用户触摸的 ImageView 中获取 ID?
我曾尝试使用 setOnTouchListener:
ImageView selImage = (ImageView)findViewById(R.id.i904);
selImage.setId(904);
selImage.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
iID = v.getId();
ImageView selImage = (ImageView)findViewById(iID);
int eventaction = event.getAction();
int X = (int)event.getX();
int Y = (int)event.getY();
switch (eventaction ) {
case MotionEvent.ACTION_DOWN: // touch down so check if the finger is on a ball
break;
case MotionEvent.ACTION_MOVE: // touch drag with the ball
// move the balls the same as the finger
selImage.setX(X-25);
selImage.setY(Y-25);
break;
case MotionEvent.ACTION_UP:
// touch drop - just do things here after dropping
break;
}
// redraw the canvas
return true;
}});
通过这个,我可以选择每个 ImageView 并移动它,但是,它不会平滑移动,并且 ImageView 在屏幕上被复制。
是否有可能在 onTouch.MOVED 视图中获取第一种情况并使用它来获取 ID:iID = v.getId();