gpt4 book ai didi

java - 如何获取我在 Android 中的 MotionEvent.ACTION_MOVE 事件上移动了多少像素

转载 作者:行者123 更新时间:2023-11-30 02:57:46 24 4
gpt4 key购买 nike

我有一个触摸监听器,用于监视 ACTION_DOWN、ACTION_MOVE 和 ACTION_UP。

我想获得移动的像素数,但我在文档中找不到任何允许这样做的内容。

} else if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
float x2 = motionEvent.getX();
float y2 = motionEvent.getY();
//Logging x2 and y2....

我的日志输出了相当大的数字,即使我的移动非常非常小。

我尝试用鼠标指针向任一方向移动 1 个像素,但我得到的结果是 x 为 42,y 为 75。我猜 getX() 和 getY() 不会以我认为他们回应的方式回应。

编辑:

public boolean onTouch(View v, MotionEvent motionEvent) {


float startX = 0;
float startY = 0;


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

startX = motionEvent.getRawX();
startY = motionEvent.getRawY();
Log.e("resize", "action down");

} else if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
Log.e("resize", "action move");


float movedX = motionEvent.getRawX() - startX;
float movedY = motionEvent.getRawY() - startY;

Log.e("", " movement "+movedX+" "+movedY+"");

最佳答案

getX()getY() 是触发运动事件的 View 点的坐标,相对计算查看初始大小和位置。这意味着如果您的 View 被旋转或缩放,这些坐标将使用旋转和缩放矩阵重新计算。

要获得绝对屏幕坐标,您应该使用 getRawX()getRawY()

要获得手指从起点移动的 vector ,首先您需要记住触发 ACTION_DOWN 事件的点:

if (motionEvent.getAction() == MotionEvent.ACTION_DOWN){
startX = event.getRawX();
startY = event.getRawY();
}

然后,当手指移动时,计算相对于这个起点的移动坐标:

if (motionEvent.getAction() == MotionEvent.ACTION_MOVE){
movedX = event.getRawX() - startX;
movedY = event.getRawY() - startY;
}

关于java - 如何获取我在 Android 中的 MotionEvent.ACTION_MOVE 事件上移动了多少像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23017685/

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