java - 有没有什么方法可以找出Android智能手机的显示变化事件?

标签 java android events touch

我是韩国延世研究生院的学生。

我想制作一个简单的应用程序来测量时间间隔 -

触摸屏幕并更新显示。

我发现以下方法捕获了触摸事件。

      public boolean onTouchEvent(MotionEvent event) {

            super.onTouchEvent(event);

             if(event.getAction() == MotionEvent.ACTION_DOWN ){
                        ...    

现在我正在搜索Android API,但找不到捕获的方法

显示更新事件。如果您有任何有关此问题的信息,

请对我仁慈一点。谢谢。

最佳答案

尝试添加 ViewTreeObserver.onDrawListener到您的 Activity 内容 View 中的 View 。您可以创建一个实现该接口(interface)的类。当您收到触摸事件时,调用绘制监听器上的方法来记录下一个绘制事件的时间。

private MyDrawListener myDrawListener = new MyDrawListener();

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(...);

    findViewById(...).getViewTreeObserver().addOnDrawListener(myDrawListener);
}

public boolean onTouchEvent(MotionEvent event) {
    super.onTouchEvent(event);
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        myDrawListener.recordNextDrawTime();
    }
}

public static class MyDrawListener implements ViewTreeObserver.OnDrawListener {
    private boolean recordNextDrawTime;

    public void recordNextDrawTime() {
        recordNextDrawTime = true;
    }

    @Override
    public void onDraw() {
        if (recordNextDrawTime) {
            Log.d("MyDrawListener", "Draw time = " + System.currentTimeMillis());
            recordNextDrawTime = false;
        }
    }
}

关于java - 有没有什么方法可以找出Android智能手机的显示变化事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23358482/

相关文章:

java - 打印预览(打包不起作用)

Java Swing 事件

java - 编程决定 java 或 .Net,db 或无 db

Android:同时从 2 个设备扫描多个蓝牙的行为

java - 如何将图像上传到 SQLite 数据库?

android - 如何从 NotificationListenerService 停止前台服务

java - 聚合中的实体可以移动到 Axon 中的另一个聚合(相同类型)吗

c# - 在没有用户输入的情况下触发 "Click"事件

java - 在 Android 中将内部 Uri 转换为文件?

java - 程序打印出对数组中每个字符的响应,只需打印一次是否找到该值