有一个gButton按钮和一个onTouch侦听器:
gButton.setOnTouchListener (new View.OnTouchListener () {
public boolean onTouch (View v, MotionEvent event) {
if (event.getAction () == MotionEvent.ACTION_DOWN) {
...
} else if (event.getAction () == MotionEvent.ACTION_UP) {
...
}
return false;
}
});
ACTION_DOWN
和ACTION_UP
(按下按钮/松开)完成了一些操作,但是按下事件仅在触摸按钮时发生,并且如果按下了按钮并且您将手指移开,什么也不会发生(没有手指点击)
我尝试在ACTION_DOWN
之后添加其他类似ACTION_OUTSIDE
的“ else if”条件(我从页面https://developer.android.com/reference/android/view/MotionEvent.html中获取了所有内容),但没有任何反应。是的,我使用的是If
,而不是Switch
我需要确保在触摸按钮时(即使手指完全在按钮区域中,即使第一次触摸是在空白区域中并且手指移到了按钮上),也需要执行一些操作执行(例如,带有文本Toast
的{{1}}方法),当您从按钮区域松开手指或从按钮区域移动手指时,还执行了其他操作({{1 }}的值为"On "
)
我试图通过在我的代码中对其进行更正来解决类似问题的答案之一:Cancel button press if user moves finger off button,但是显示错误prntscr.com/oghnm2,并且我不知道在哪里以及如何得到L,R,T,B,Toast
除外;
答案 0 :(得分:0)
我希望这可能会有所帮助,在这里我用btn坐标检查了鼠标指针的位置,如果它的位置在范围内,则打印日志,否则打印超出区域。
btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(v.getLeft()<=event.getX() && v.getRight()>=event.getX() && v.getTop()<=event.getY() && v.getBottom()>=event.getY()) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
Log.d("LOG", "pressed");
if (event.getAction() == MotionEvent.ACTION_UP)
Log.d("LOG", "released");
if (event.getAction() == MotionEvent.ACTION_MOVE)
Log.d("LOG", "moving");
}
else
{
Log.d("LOG", "out of area");
}
return false;
}
});