当前位置: 移动技术网 > IT编程>移动开发>Android > Android MotionEvent中getX()和getRawX()的区别实例详解

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

兔狗装修,到异界泡妞去txt,菜缸公主

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

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网