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


相关推荐

  • 已知三角形两边求夹角度数_已知直角三角形三边求夹角

    已知三角形两边求夹角度数_已知直角三角形三边求夹角importmatha=float(raw_input())b=float(raw_input())c=float(raw_input())tt=(a**2+b**2-c**2

    2022年8月6日
  • ssdp协议 upnp_SSDP,简单服务发现协议

    ssdp协议 upnp_SSDP,简单服务发现协议SSDP简单服务发现协议,是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一。它为网络客户端(networkclient)提供了一种发现网络服务(networkservices)的机制,采用基于通知和发现路由的多播方式实现。SSDP多播地址:239.255.255.250:1900(IPv4),FF0x::C(IPv6)两种类型的SSDP请求消息会通过SSDP多播地址发送:1….

    2022年10月11日
  • Spring Cloud Eureka详解

    Spring Cloud Eureka详解SpringCloudEureka详解一Eureka服务治理体系1.1服务治理服务治理是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。SpringCloudEureka是SpringCloudNetflix微服务套件中的一部分,它基于NetflixEureka做了二次封装。主要负责完成微服务架构中的服务治理功能。E…

    2022年6月27日
  • LoadRunner教程(1)-LoadRunner简介与安装

    LoadRunner教程(1)-LoadRunner简介与安装LoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。下载及其安装过程参照如下,记住安装成英文…

    2022年5月23日
  • 利用人工势场法的最短路径寻找

    利用人工势场法的最短路径寻找人工势场法也可以用作机器人避障。我目前思考的是使其作为全局规划器,规划全局路径,也可以做局部规划直接下达至速度计算,目前暂时先看看全局路径计算。它将整个地图环境抽象为势场,机器人同时受到目标点的引力与障碍物的斥力,向合力的方向移动,当机器人逐步接近障碍物,受到的斥力越来越大以致偏离障碍物,达到避障的效果。如果做一个简化,每次计算便向合力方向延伸一个步长,便可逐渐到达终点。在栅格地图中,障碍物很…

    2022年6月18日
  • webpack开发环境和生产环境_webpack开发环境和生产环境

    webpack开发环境和生产环境_webpack开发环境和生产环境前言如果我们需要使用webpack,就需要依赖node环境nvmnodenpmwebpack@cliwebpacknvm安装nvm是一个用来管理node版本的工具。我们之所以需要使用n

    2022年7月29日

发表回复

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

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