当前位置: 首页 > 编程笔记 >

Android MotionEvent中getX()和getRawX()的区别实例详解

陶智
2023-03-14
本文向大家介绍Android MotionEvent中getX()和getRawX()的区别实例详解,包括了Android MotionEvent中getX()和getRawX()的区别实例详解的使用技巧和注意事项,需要的朋友参考一下

Android MotionEvent中getX()和getRawX()的区别实例详解

实例代码:

public class Res extends Activity implements View.OnTouchListener {  
  
  Button btn = null;  
  int x = 0;  
  int y = 0;  
  int rawx = 0;  
  int rawy = 0;  
  
    
  @Override  
  public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.main);  
    btn = (Button) findViewById(R.id.button);  
    btn.setOnTouchListener(this);  
  }  
  
  public boolean onTouch(View view, MotionEvent event) {  
    int eventaction = event.getAction();  
    switch (eventaction) {  
    case MotionEvent.ACTION_DOWN:  
      break;  
    case MotionEvent.ACTION_MOVE:  
      x = (int) event.getX();  
      y = (int) event.getY();  
      rawx = (int) event.getRawX();  
      rawy = (int) event.getRawY();  
      Log.d("DEBUG", "getX=" + x + "getY=" + y + "n" + "getRawX=" + rawx  
          + "getRawY=" + rawy + "n");  
      break;  
  
    case MotionEvent.ACTION_UP:  
  
      break;  
    }  
    return false;  
  }  
}  

结论:

当你触到按钮时,x,y是相对于该按钮左上点(控件本身)的相对位置。

而rawx,rawy始终是相对于屏幕的位置。

可知:

  • getRowX:触摸点相对于屏幕的坐标
  • getX: 触摸点相对于按钮的坐标
  • getTop: 按钮左上角相对于父view(LinerLayout)的y坐标
  • getLeft: 按钮左上角相对于父view(LinerLayout)的x坐标

可以想象 getRight()等同于下面的计算:getLeft()+getWidth()。

getX()是表示Widget相对于自身左上角的x坐标,而getRawX()是表示相对于屏幕左上角的x坐标值(注意:这个屏幕左上角是手机屏幕左上角,不管activity是否有titleBar或是否全屏幕),getY(),getRawY()一样的道理

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

 类似资料:
  • 问题内容: 我感到困惑的是,为什么Java Point类接受两个int参数,而getX()和getY()方法返回双精度型。例如我可以定义一个点 如果我要打电话.. 它将返回4.0。如果我要打电话 我会得到4。 有什么理由吗? 问题答案: 有和扩展的类是的超类,它们需要能够使用浮点值。请注意,还有一个。 是一个抽象类,它实现的距离计算点,和,和是它的抽象方法,这就是为什么他们都用,为什么有执行这些S

  • 我很困惑为什么JavaPoint类需要两个int参数,而getX()和getY()方法返回双精度 如果我打电话... 它将返回4.0。如果我打电话 我会得到4分。 有什么原因吗?

  • 本文向大家介绍Android 中SP与DP的区别实例详解,包括了Android 中SP与DP的区别实例详解的使用技巧和注意事项,需要的朋友参考一下 从一开始写Android程序,就被告知这些常识 1.长度宽度的数值要使用dp作为单位放入dimens.xml文件中 2.字体大小的数值要使用sp作为单位,也放入dimens.xml文件中 然后,就没有然后了,仿佛潜台词就是说,你记住去用就行了. 偶然有

  • 本文向大家介绍实例详解Matlab 与 Python 的区别,包括了实例详解Matlab 与 Python 的区别的使用技巧和注意事项,需要的朋友参考一下 一、Python简介   Python是一种面向对象的解释型计算机程序设计语言。Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议[2] 。Python语法简洁清

  • 本文向大家介绍php die()与exit()的区别实例详解,包括了php die()与exit()的区别实例详解的使用技巧和注意事项,需要的朋友参考一下 网上搜索die与exit两个函数的区别,大部分的”标准答案”都是说die是退出并释放内存,exit是退出但不释放内存。 这个解释显然是错的,PHP手册中已经说过“die — Equivalent to exit().This language

  • 本文向大家介绍C#中数组、ArrayList和List三者的区别详解及实例,包括了C#中数组、ArrayList和List三者的区别详解及实例的使用技巧和注意事项,需要的朋友参考一下 在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢。 数组 数组在C#中最早出现的。在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单。 但是数组存在一