私のアクティビティには、ユーザーが画面上を移動できるいくつかの ImageView があります。ユーザーが実際に選択した ImageView を特定するにはどうすればよいですか? Xcode では、各 ImageView に一意のタグを割り当てることができ、onTouch よりもタグ番号を取得できます。Androidにも同様の方法はありますか?
これはXcodeです:
UITouch *touch = [[event allTouches] anyObject];
if ([touch view].tag == 901)
{
iTouchObject = 901;
[self.view bringSubviewToFront:imgRojo1];
}
これまでに行った Android アクティビティで: 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();