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

发布时间 - 2026-01-11 00:15:51    点击率:

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()一样的道理

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


# Android  # MotionEvent中getX()和getRawX()的区别  # MotionEvent  # 获取坐标  # 札记:android手势识别功能实现(利用MotionEvent)  # Android开发中MotionEvent坐标获取方法分析  # Android触屏事件和MotionEvent详解  # 相对于  # 当你  # 希望能  # 谢谢大家  # 坐标值  # Override  # void  # rawy  # null  # btn  # rawx  # int  # onCreate  # findViewById  # main  # button  # id  # layout  # savedInstanceState  # Bundle 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用狗爹虚拟主机快速搭建网站?  如何用PHP工具快速搭建高效网站?  如何用低价快速搭建高质量网站?  如何在IIS7中新建站点?详细步骤解析  昵图网官方站入口 昵图网素材图库官网入口  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  在线制作视频网站免费,都有哪些好的动漫网站?  微信小程序 input输入框控件详解及实例(多种示例)  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何注册花生壳免费域名并搭建个人网站?  Python高阶函数应用_函数作为参数说明【指导】  C#如何调用原生C++ COM对象详解  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Laravel如何升级到最新版本?(升级指南和步骤)  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  JavaScript模板引擎Template.js使用详解  Java垃圾回收器的方法和原理总结  北京网站制作的公司有哪些,北京白云观官方网站?  Laravel PHP版本要求一览_Laravel各版本环境要求对照  如何选择PHP开源工具快速搭建网站?  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  Laravel如何配置任务调度?(Cron Job示例)  想要更高端的建设网站,这些原则一定要坚持!  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  详解Oracle修改字段类型方法总结  如何在万网主机上快速搭建网站?  如何构建满足综合性能需求的优质建站方案?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  如何用虚拟主机快速搭建网站?详细步骤解析  JS经典正则表达式笔试题汇总  java中使用zxing批量生成二维码立牌  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  HTML 中动态设置元素 name 属性的正确语法详解  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  如何在IIS服务器上快速部署高效网站?  焦点电影公司作品,电影焦点结局是什么?  Python制作简易注册登录系统  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?