我想要关于整个屏幕的触摸信息,但我只是相对于按钮获得触摸信息。
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位置?
答案 0 :(得分:3)
要获得相对于视图的触摸位置,请将触摸事件(x,y)添加到按钮(x,y);获取按钮相对于其父级(您的视图)的位置使用getLeft()
和getTop()
方法。
View
的{{3}}在排名下有以下内容:
可以通过调用来检索视图的位置 方法getLeft()和getTop()。前者返回左边,或者X, 表示视图的矩形的坐标。后者回归 表示视图的矩形的顶部或Y坐标。 这些方法都返回视图相对于它的位置 家长。例如,当getLeft()返回20时,表示视图 位于其直接左边缘右侧20像素处 父节点。
onTouch
方法的示例代码:
float screenX = v.getLeft() + event.getX(); // X in Screen Coordinates
float screenY = v.getTop() + event.getY(); // Y in Screen Coordinates
答案 1 :(得分:1)
最好的方法(据我所知)是调用event.getRawX()和event.getRawY()。如果您的视图是整个屏幕,则此方法有效。如果没有,我不知道,我猜你的运气不好,但是rawx和y为我的目的而工作。