Android - 如何检查屏幕是否被触摸?

时间:2012-01-19 22:53:21

标签: android input

我目前正在使用onTouchEvent(MotionEvent me)注册输入事件,但是,这是一个游戏应用程序,当帧速率减慢时,程序有时无法在GUI按钮释放后注册input.UP事件,这让我的角色继续自己动起来......

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

谢谢

4 个答案:

答案 0 :(得分:5)

可能值得查看onUserInteraction()的文档。

这样的事情可以让你知道用户最近与屏幕的互动情况:

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

答案 1 :(得分:2)

你可以获得触摸事件并查看Action down,Move或Action Up以及其他动作,但暂时让我们停在这里。我有一个简单的例子,我认为你或其他任何人都会觉得它很有用。

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

干杯,

答案 2 :(得分:0)

对于任何OnTouchListeneronTouch()都有一个方法View

http://developer.android.com/reference/android/view/View.OnTouchListener.html

答案 3 :(得分:0)

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