我尝试编码imageView使用onTouch方法点击反馈。我的代码用于在按下(MotionEvet.ACTION_DOWN
)时缩放imageView,并在用户停止按下(MotionEvet.ACTION_UP
)时返回其正常大小。但是我无法编码的是当用户将手指拖出imageView时的操作。
我已经看到了一个解决方案,告诉我在switch语句的开头使用MotionEvent.ACTION_CANCEL
,但这对我没用。
我的代码是下一个:
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_CANCEL:
clickOutTransformation(ico);
return true;
case MotionEvent.ACTION_UP:
clickOutTransformation(ico);
switch (i) {
case 1:
fondoApp.setBackgroundResource(R.drawable.back_blue_bubbles_lite);
i++;
break;
case 2:
fondoApp.setBackgroundResource(R.drawable.back_espectrum);
i++;
break;
case 3:
fondoApp.setBackgroundResource(R.drawable.back_black_and_violet);
i++;
break;
case 4:
fondoApp.setBackgroundResource(R.drawable.back_green);
i++;
break;
case 5:
fondoApp.setBackgroundResource(R.drawable.back_blur_blue_ed);
i = 1;
break;
default:
break;
}
return true;
case MotionEvent.ACTION_DOWN:
clickInTransformation(ico);
return true;
default:
break;
}
return false;
}
答案 0 :(得分:0)
如果是大小写:MotionEvent.ACTION_DOWN用于缩放和大小写MotionEvent.ACTION_UP:用于缩小到正常大小......
当您触摸屏幕时会触发ACTION_DOWN,当您从视图中取下手指时会触发ACTION_UP
答案 1 :(得分:0)
您可以通过以下解决方案获得:
private Rect rect; // Variable rect to hold the bounds of the view
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
if (!rect.contains(v.getLeft() + (int) event.getX(), v.getTop() + (int) event.getY())) {
// User moved outside bounds
}
break;
case MotionEvent.ACTION_DOWN:
rect = new Rect(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
break;
}
return false;
}