Android OnTouchListener:不同ImageView上的ActionMove事件

Android OnTouchListener:不同ImageView上的ActionMove事件,android,android-imageview,touch-event,ontouchlistener,Android,Android Imageview,Touch Event,Ontouchlistener,我有一个包含16个ImageView(4x4网格)的TableLayout,我想实现以下行为: 用户点击一个imageView,改变他的颜色以向用户提供反馈,然后他可以滑动(无需从屏幕释放点击)到其他近imageView,所有交叉的imageView将改变颜色。我显示我使用的代码。该表包含在一个片段中 这是我的监听器,用于检查滑动位置: @Override public boolean onTouch(View v, MotionEvent event) { float currentX

我有一个包含16个ImageView(4x4网格)的TableLayout,我想实现以下行为: 用户点击一个imageView,改变他的颜色以向用户提供反馈,然后他可以滑动(无需从屏幕释放点击)到其他近imageView,所有交叉的imageView将改变颜色。我显示我使用的代码。该表包含在一个片段中

这是我的监听器,用于检查滑动位置:

@Override
public boolean onTouch(View v, MotionEvent event) {
    float currentX =event.getX();
    float currentY=event.getY();

    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN: {
        for(int i=0; i<buttons.length;i++) {
            if(positions[i].contains(currentX, currentY)) {
                buttons[i].setImageResource(R.drawable.grid_button_hover);
                return true;
            }
        }

        return true;
    }
    case MotionEvent.ACTION_MOVE: {
        for(int i=0; i<positions.length;i++) {
            if(positions[i].contains(currentX, currentY)) {

                buttons[i].setImageResource(R.drawable.grid_button_hover);
                return true;
            }
        }
        return true;
    }
    case MotionEvent.ACTION_UP:{
        clearButtons();
        return true;
    }

    }
    return false;
}
@覆盖
公共布尔onTouch(视图v,运动事件){
float currentX=event.getX();
float currentY=event.getY();
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:{

对于(int i=0;i您在每个ImageView上设置onTouchListener,然后返回true,这将捕获触摸事件并防止其他ImageView拾取它。我相信如果您仅从onTouch()返回false,它应该可以工作但是如果让我知道所有的IVIEVIEWS都需要保持一个侦听器,那么问题是我以前没有考虑IVIEVIEWS和其他视图之间的空间,所以值是错误的。
GridListener listener = new GridListener(getActivity(), this,
            positions, buttons);
    for (int i = 0; i < values.length; i++) {
        imageViews[i].setOnTouchListener(listener);
    }