2012-01-19 149 views
6

我目前使用onTouchEvent(MotionEvent me)来注册输入事件,但是,这是一个游戏应用程序,当帧速率变慢时,程序有时无法在GUI按钮释放后注册input.UP事件,这会导致我的角色继续自己...Android - 如何检查屏幕是否被触摸?

是否有像在API中的布尔方法,检查在任何给定的时间是否有一个手指在屏幕上?

谢谢

回答

5

可能是值得一试的文档onUserInteraction()

像这样的事情会让你知道用户是如何最近与屏幕互动:

@Override 
public void onUserInteraction(){ 
    MyTimerClass.getInstance().resetTimer(); 
} 
+0

如果u想要的任何应用程序被通知不只是你说对触摸什么? – jonney

0

确保我总是从OnTouchEvent返回true而不是super.OnTouchEvent似乎已经解决的问题...

2

您可以获得联系事件,并查看是否执行了动作,动作或动作以及其他动作,但暂时让我们停下来。我有一个简单的例子,我认为你或其他人会发现它有用。

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; 
    } 
} 

干杯,

相关问题