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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

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