Android 为多个 ImageView 触发 onTouch 事件

标签 android events imageview ontouchlistener touch-event

我有多个 ImageView,我希望在我将手指拖过多个图像时为每个图像触发 onTouch 事件。目前 onTouch 事件仅在第一个 ImageView 上触发(或实际上在多个 ImageView 上触发,但仅在多点触控屏幕时触发)。伪代码:

            for(int i=0;i<5;i++){
              ImageView img=new ImageView(this);
              LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(width,height);
              img.setImageResource(R.drawable.cell);
              img.setOnTouchListener(this);
              mainLayout.addView(img,layoutParams);
            }
            ...

            public boolean onTouch (View v, MotionEvent event){
              Log.d("MY_APP","View: " + v.getId());
              return false;
            }

我是不是找错了树?

感谢您的帮助。

最佳答案

我认为您需要使用 move 事件而不是 touch 事件,并将 getX 和 getY 与您的 View 位置进行比较。

     @Override
    public boolean onTouchEvent(MotionEvent ev) {

        final int action = ev.getAction();

        switch (action) {

            // MotionEvent class constant signifying a finger-down event

            case MotionEvent.ACTION_DOWN: {
                break;
            }

            // MotionEvent class constant signifying a finger-drag event  

            case MotionEvent.ACTION_MOVE: {

                    X = ev.getX();
                    Y = ev.getY();
                    //compare here using a loop of your views
                    break;

            }

            // MotionEvent class constant signifying a finger-up event

            case MotionEvent.ACTION_UP:

                break;

        }
        return true;
    }

关于Android 为多个 ImageView 触发 onTouch 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5222688/

相关文章:

android - 图像未显示在 UI 中

android - 加载图像后测量 ImageView

java - 在ImageView中设置位图图像

android - MvvmCross 是否依赖于 Google Play 服务?

java - Adapter.notifyDataSetChanged() 在 onCreate() 内部不工作

events - 在PowerShell中,如何为COM对象实现事件处理程序?

jQuery 插件 : Handling Events

android - 无法获得谷歌播放授权的刷新 token

android - 如何检测 SearchView 上任意位置的点击

c# - 阻塞的线程可以触发事件吗?