2012-01-19 86 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; 
    } 
} 

乾杯,

相關問題