如何在android中的onTouchEvent(MotionEvent事件)中获取imageView

时间:2012-04-20 17:45:37

标签: android touch imageview

我定义了onTouchEvent(MotionEvent事件)来接收imageview的触摸事件。我正在使用多个图像视图,我必须找到哪个imageview我收到了触摸事件。 是否可以在onTouchEvent中获取imageview?

public void createImageViews()
{
  int i = 0;

  imageArray[0] = (ImageView)findViewById(R.id.image1);
  imageArray[1] = (ImageView)findViewById(R.id.image2);
  imageArray[2] = (ImageView)findViewById(R.id.image3);
  imageArray[3] = (ImageView)findViewById(R.id.image4);
  imageArray[4] = (ImageView)findViewById(R.id.image5);
  imageArray[5] = (ImageView)findViewById(R.id.image6);

  for (i = 0; i < count; i++)
  {
    imageArray[i].setOnTouchListener(this);
  } 
}
 public class Touch extends Activity implements OnTouchListener, AnimationListener { }

我尝试过使用

 public boolean onTouch(View v, MotionEvent event) { } but not receiving the touch events.

在imageview上启动动画后,我没有观察onTouch()中的触摸事件,也没有在onTouchEvent()中获取触摸事件。 imgArray [g_animCount] .startAnimation(movArray [g_animCount]);

3 个答案:

答案 0 :(得分:3)

您可以覆盖onTouchListener。 onTouchListener的代码是

@Override
public boolean onTouch(View v, MotionEvent event) {
/// your stuff
}

使用View v了解触摸的视图

答案 1 :(得分:2)

use the below sample code snippet::::

    public class MyImageView extends Activity implements OnTouchListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.lay_name);        
        int i = 0;
        imageArray[0] = (ImageView)findViewById(R.id.image1);
        imageArray[1] = (ImageView)findViewById(R.id.image2);
        imageArray[2] = (ImageView)findViewById(R.id.image3);
        imageArray[3] = (ImageView)findViewById(R.id.image4);
        imageArray[4] = (ImageView)findViewById(R.id.image5);
        imageArray[5] = (ImageView)findViewById(R.id.image6);

        for (i = 0; i < count; i++)  {
            imageArray[i].setOnTouchListener(this);
         } 


    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
        switch(v.getId()){
        case R.id.image1:
        //your stuff
        break;
        case R.id.image2:
        //your stuff        
        break;
        case R.id.image3:
        //your stuff
        break;
        case R.id.image4:
         //your stuff
        break;
        case R.id.image5:
         //your stuff
        break;
        case R.id.image6:
         //your stuff
        break;
        }
    }

}

答案 2 :(得分:0)

您可以为布局xml中的每个android:onClick="clickHandler"设置View,并在public void clickHandler(View view)中定义方法Activity以处理触摸/点击事件。

这是在1.6中引入的。请查看此LINK以获取更多详细信息。