我目前正在使用onTouchEvent(MotionEvent me)
来注册输入事件,但由于这是一个游戏应用程序,当帧率降低时,程序有时无法在释放GUI按钮后注册一个UP事件,这会导致我的角色继续移动...
API是否存在一种布尔方法,以检查屏幕上是否有手指呢?
谢谢。
你可能需要查看 onUserInteraction() 的文档。
类似以下这样的代码可以帮助你知道用户最近与屏幕互动的时间:
@Override
public void onUserInteraction(){
MyTimerClass.getInstance().resetTimer();
}
你可以获取触摸事件并查看动作是否为按下、移动或松开等动作,但现在让我们停在这里。我有一个简单的例子,我认为你或任何人都会发现它有用。
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.Toast;
public class MainActivity extends Activity {
private boolean isTouch = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int X = (int) event.getX();
int Y = (int) event.getY();
int eventaction = event.getAction();
switch (eventaction) {
case MotionEvent.ACTION_DOWN:
Toast.makeText(this, "ACTION_DOWN AT COORDS "+"X: "+X+" Y: "+Y, Toast.LENGTH_SHORT).show();
isTouch = true;
break;
case MotionEvent.ACTION_MOVE:
Toast.makeText(this, "MOVE "+"X: "+X+" Y: "+Y, Toast.LENGTH_SHORT).show();
break;
case MotionEvent.ACTION_UP:
Toast.makeText(this, "ACTION_UP "+"X: "+X+" Y: "+Y, Toast.LENGTH_SHORT).show();
break;
}
return true;
}
}
祝好!
有一个 OnTouchListener
,它有一个单独的方法 onTouch()
适用于任何 View
。
http://developer.android.com/reference/android/view/View.OnTouchListener.html
确保我总是从OnTouchEvent
返回true
,而不是super.OnTouchEvent
似乎已经解决了这个问题...