gpt4 book ai didi

android - MotionEvent 开启和关闭 UI 线程的 Y 坐标因状态栏的高度而异

转载 作者:行者123 更新时间:2023-11-30 05:10:37 25 4
gpt4 key购买 nike

当我在非 UI 线程中查询 MotionEvent 坐标时,我得到 Y(thread) = Y(UI thread) + status_bar_height。有人知道为什么吗?

override fun onTouch(view: View?, motionEvent: MotionEvent?): Boolean {
Log.d(TAG, "Pre Event ${motionEvent?.x} ${motionEvent?.y}")

Thread(Runnable {
Log.d(TAG, "Post Event ${motionEvent?.x} ${motionEvent?.y}")
}).start()
}

output:
Pre Event 395.45078 681.4934
Post Event 395.45078 729.4934

最佳答案

MotionEvent 对象被框架重用,以防止在应用程序生命周期中为每个触摸事件创建数百/数千个对象而导致的开销和内存 fragment (请记住,如果您移动了 1 个像素,则可能移动事件)。如果您需要事件之外的数据,请在 onTouch 期间将其保存在局部变量中。以后可能会不一样,无论是在异步函数中还是在 UI 线程上的另一个调用中。

关于android - MotionEvent 开启和关闭 UI 线程的 Y 坐标因状态栏的高度而异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53816605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com