MotionEvent的getX(),getY()与getRawX(),getRawY()区别

MotionEvent的getX(),getY()与getRawX(),getRawY()区别

首先我们通过一个button进行一下测试,可以知道:

  1. public class Res extends Activity implements View.OnTouchListener {   
  2.     
  3.     Button btn = null;   
  4.     int x = 0;   
  5.     int y = 0;   
  6.     int rawx = 0;   
  7.     int rawy = 0;   
  8.     
  9.     /** Called when the activity is first created. */  
  10.     @Override  
  11.     public void onCreate(Bundle savedInstanceState) {   
  12.         super.onCreate(savedInstanceState);   
  13.         setContentView(R.layout.main);   
  14.         btn = (Button) findViewById(R.id.button);   
  15.         btn.setOnTouchListener(this);   
  16.     }   
  17.     
  18.     public boolean onTouch(View view, MotionEvent event) {   
  19.         int eventaction = event.getAction();   
  20.         switch (eventaction) {   
  21.         case MotionEvent.ACTION_DOWN:   
  22.             break;   
  23.         case MotionEvent.ACTION_MOVE:   
  24.             x = (int) event.getX();   
  25.             y = (int) event.getY();   
  26.             rawx = (int) event.getRawX();   
  27.             rawy = (int) event.getRawY();   
  28.             Log.d(“DEBUG”“getX=” + x + “getY=” + y + “\n” + “getRawX=” + rawx   
  29.                     + “getRawY=” + rawy + “\n”);   
  30.             break;   
  31.     
  32.         case MotionEvent.ACTION_UP:   
  33.             break;   
  34.         }   
  35.         return false;   
  36.     }   
  37. }  

getX()是表示Widget相对于自身左上角的x坐标,而getRawX()是表示相对于屏幕左上角的x坐标值(注意:这个屏幕左上角是手机屏幕左上角,不管activity是否有titleBar或是否全屏幕),getY(),getRawY()一样的道理如果你的某个Activity中实现OnTouchListener接口,需要重写

  1. onTouch(View view,MotionEvent event)  

这个方法, getRawX()和getRawY()获得的是相对屏幕的位置,getX()和getY()获得的永远是view的触摸位置坐标 (这两个值不会超过view的长度和宽度)。 如果重写Activity的

  1. onTouchEvent(MotionEvent event)  

,这个时候获得的是屏幕点击位置的坐标。event.getX() 与 event.getRawX()获取的值是一样的,event.getY() 与 event.getRawY()获取的值是一样,还能获取触摸标题栏时的坐标位置,但是触摸状态栏时的坐标位置不能获得。 (注:Activity上有两段宽度:一个是状态栏,一个是标题栏,每一个宽度都占了25像素) 文章来自:http://ile.me/archives/163.html

转载于:https://www.cnblogs.com/wanyakun/archive/2012/03/20/3403296.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110449.html原文链接:https://javaforall.net

(0)
上一篇 2021年8月17日 下午3:00
下一篇 2021年8月17日 下午4:00


相关推荐

  • HDFS命令详解[通俗易懂]

    HDFS命令详解[通俗易懂]hdfs命令:ls格式:hdfsdfs-lspath作用:类似于linux的ls命令,显示文件列表hdfsdfs-ls/lsr格式:hdfsdfs-lsrpath作用:在整个目录下递归执行ls,与lunix中的ls-R类似hdfsdfs-lsr/mkdir格式:hdfsdfs[-p]-mkdirpath作用:创建目录,-p表示可以递归创…

    2022年10月5日
    4
  • TestDirector用户手册

    TestDirector用户手册摘要 TestDirector 是 MercuryInter 公司推出的基于 WEB 的测试管理工具 它能够指导进行测试需求定义 测试计划 测试执行和缺陷跟踪 即整个测试过程的各个阶段 通过整合所有任务到软件测试中 来使整个测试管理工作更有效 并确保客户收到更高质量的产品 关键词 需求定义测试计划测试执行缺陷跟踪需求树测试计划树测试集欢迎使用 TestDirector 欢迎您使 Me

    2026年3月19日
    3
  • Pycharm Debug快捷键

    Pycharm Debug快捷键F7 单步调试 若该步骤中存在子函数 会进入子函数中执行单步调试 F8 单步调试 若该步骤中存在子函数 不会进入子函数 把子函数当做单步执行 F9 直接跳到下一个断点

    2026年3月18日
    1
  • python中dtype什么意思_NumPy Python中的数据类型对象(dtype)

    python中dtype什么意思_NumPy Python中的数据类型对象(dtype)每个ndarray都有一个关联的数据类型(dtype)对象。此数据类型对象(dtype)告知我们有关数组布局的信息。这意味着它为我们提供了有关以下信息:数据类型(整数,浮点数,Python对象等)数据大小(字节数)数据的字节顺序(小端或大端)ndarray的值存储在缓冲区中,可以将其视为内存字节的连续块。因此,如何解释这些字节由dtype对象给出。1,构造数据类型(dtype)对象:数据类型对象…

    2022年6月5日
    108
  • 请求转发与重定向的区别

    请求转发与重定向的区别请求转发 Forward 请求转发 Forward 一种在服务器内部的资源跳转方式简单来说 当客户浏览器发送 http 请求到 web 服务器中 web 服务器接受请求后调用内部 servlet 方法完成请求处理和转发资源给同一个 web 容器下的另一资源做处理 最后将目标资源 response 给客户 工作原理及特点比如图中 web 容器 Tomcat 有两个资源 A 和 B 若浏览器请求资源 A 的时候 资源 A 处理了一部分 然后跳转到资源 B 让资源 B 接着处理 资源 B 处理完成后做出响应到服务器 资源 A 跳转到资源 B 的这个过程就

    2026年3月17日
    2
  • 打开浏览器访问 www.baidu.com 获取到结果,整个流程

    打开浏览器访问 www.baidu.com 获取到结果,整个流程

    2021年11月11日
    59

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号