Android OnTouchListener:不同ImageView上的ActionMove事件
我有一个包含16个ImageView(4x4网格)的TableLayout,我想实现以下行为: 用户点击一个imageView,改变他的颜色以向用户提供反馈,然后他可以滑动(无需从屏幕释放点击)到其他近imageView,所有交叉的imageView将改变颜色。我显示我使用的代码。该表包含在一个片段中 这是我的监听器,用于检查滑动位置: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
@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);
}