Android MotionEvent中getX()和getRawX()的区别实例详解
程序员文章站
2023-10-23 15:06:35
android motionevent中getx()和getrawx()的区别实例详解
实例代码:
public class res extends activ...
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()的区别实例详解
-
Android中dip、dp、sp、pt和px的区别详解
-
C#中Property和Attribute的区别实例详解
-
Android MotionEvent中getX()和getRawX()的区别实例详解
-
Android中dip、dp、sp、pt和px的区别详解
-
Angular中ng-bind和ng-model的区别实例详解
-
Pytorch中torch.nn和torch.nn.functional的区别及实例详解
-
C#中数组、ArrayList和List三者的区别详解及实例
-
js中this和event 的区别实例详解
-
js中Map和Set的用法及区别实例详解