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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据库课程设计

    图书管理系统1.概述项目背景2.需求分析2.1系统需求2.2数据需求2.3数据字典2.3.1书籍信息表2.3.2库存信息表2.3.4顾客信息表2.3.5管理员信息表2.3.6图书类型信息表2.3.7订单详细信息表3.数据库设计3.1…

    2022年4月3日
    40
  • java的三个开发平台分别是什么_入门金笔推荐

    java的三个开发平台分别是什么_入门金笔推荐**Java开发入门**废话不多说,我今天主要讲的是Sun公司将Java划分的三个技术平台,他们分别是JavaSe、JavaEE、JavaME,接下来针对这三个平台分别进行详细介绍。JavaSE(JavaPlatformStandardEdition)标准版,是为开发普通桌面和商务应用程序提供的解决方案。JavaSE平台包括了java最核心的部分,JavaEE和Java…

    2022年8月23日
    5
  • 解决SecureCRT中文版“数据库里没找到防火墙‘无’”[通俗易懂]

    解决SecureCRT中文版“数据库里没找到防火墙‘无’”[通俗易懂]解决SecureCRT中文版“数据库里没找到防火墙‘无’”

    2022年4月22日
    364
  • OHEM 笔记

    OHEM 笔记说明1.本文是博主的学习记录,主要为了方便以后查看,当然如果能为别人提供帮助就更好了,如果有不对的地方请指正2.本文重点是了解OHEM算法以及它与hardnegativemining的异同点,尽量用较少篇幅表达清楚论文整体思路,其他一些不影响理解论文算法的东西有需要的请查看其他博客3.论文中的链接是我经过大量搜索,个人认为讲解最清楚的参考,看本文的过程中如对一些名词有疑惑可以直接点击参考…

    2022年5月7日
    37
  • 一维数组二分法查找_二分查找算法c语言

    一维数组二分法查找_二分查找算法c语言在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定 target = 5,返回

    2022年8月9日
    3
  • docker容器端口冲突_docker web管理工具

    docker容器端口冲突_docker web管理工具COMMAND_FAILED:’/sbin/iptables-tnat-A Docker -ptcp-d0/0–dport8111-jDNAT–to-destination172.17.0.6:8111!-idocker0’failed:iptables:Nochain/target/matchbythatname.pk

    2022年8月31日
    7

发表回复

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

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