Android 安卓:如何知道按钮是否按下
我在安卓上玩一个游戏,我有一个函数MoveCharacter(int-direction),当按下按钮时,它会移动一个动画精灵 例如,当用户向上按时,我有以下代码:Android 安卓:如何知道按钮是否按下,android,button,user-interface,callback,Android,Button,User Interface,Callback,我在安卓上玩一个游戏,我有一个函数MoveCharacter(int-direction),当按下按钮时,它会移动一个动画精灵 例如,当用户向上按时,我有以下代码: mControls.UpButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mLevel.mCharAnimation.Fr
mControls.UpButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mLevel.mCharAnimation.FrameUp();
}
});
但是,我希望只要用户按下按钮,就可以一直移动角色。
令人惊讶的是,我还没有发现如何在Android中做到这一点。
是否存在某种类型的onButtonDownLister?您需要使用一个单独的操作来执行down、up和其他状态
mControls.UpButton.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
// Do something
return true;
case MotionEvent.ACTION_UP:
// No longer down
return true;
}
return false;
}
});
你想要的。基本上,这将允许您查看对象何时被触摸,查看用户如何移动手指,并知道何时松开。您可以使用
OnTouchListener
mControls.UpButton.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
mLevel.mCharAnimation.FrameUp();
break;
case MotionEvent.ACTION_UP:
// User released the button, do your stuff here
break;
}
return false;
}
});
正如Gary Bak在评论中提到的,您可能希望检测用户是否也将手指拖到按钮外
mButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
// Pressed down
return true;
case MotionEvent.ACTION_UP:
// Released
return true;
case MotionEvent.ACTION_CANCEL:
// Released - Dragged finger outside
return true;
}
return false;
}
});
这并不能回答问题。如果用户将手指从按钮上滑下,则永远不会调用动作。@quemeful,如果您发布的解决方案确实回答了问题,那就太好了。由于您的评论实际上引导我测试该场景,我发现正确的答案是同时测试
MotionEvent.ACTION\u CANCEL
,并执行与ACTION\u up相同的操作。