gpt4 book ai didi

android - 当我触摸一个按钮时,如何获得触摸相对于整个 View 的 x/y 位置?

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:20 26 4
gpt4 key购买 nike

我想要与整个屏幕相关的触摸信息,但我得到的是与按钮相关的触摸信息。

ButtonTouchListener = new OnTouchListener(){

public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
switch(v.getId()){
case R.id.somebutton
//do things
//....etc
}

int action = event.getAction();
switch(action){
case MotionEvent.ACTION_UP:
act += event.toString();
System.out.println("release: " + act);
}};

我从事件中得到的 x 和 y 与按钮有关(0、0 是按钮的角,而不是屏幕的角)。如何仅在按下按钮时获取相对于整个屏幕的 x 和 y 位置?

最佳答案

要获得相对于 View 的触摸位置,请将触摸事件的 (x,y) 添加到按钮的 (x,y);要获得按钮相对于其父级(您的 View )的位置,请使用 getLeft()getTop() 方法。

documentation对于 ViewPosition 下有以下内容:

It is possible to retrieve the location of a view by invoking the methods getLeft() and getTop(). The former returns the left, or X, coordinate of the rectangle representing the view. The latter returns the top, or Y, coordinate of the rectangle representing the view. These methods both return the location of the view relative to its parent. For instance, when getLeft() returns 20, that means the view is located 20 pixels to the right of the left edge of its direct parent.

onTouch 方法的示例代码:

float screenX = v.getLeft() + event.getX();   // X in Screen Coordinates
float screenY = v.getTop() + event.getY(); // Y in Screen Coordinates

关于android - 当我触摸一个按钮时,如何获得触摸相对于整个 View 的 x/y 位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19615596/

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