android View坐标系:getXgetTranslationgetLeft

android View坐标系:getXgetTranslationgetLeft,第1张

图中灰色矩形是320X480屏幕区域,绿色矩形是300X300的父View,实线黄色矩形是100X100的子View,虚线黄色矩形是实线矩形setTranslationX(100)/setTranslationY(100)之后的位置。

以下如无特别说明,所有的方法说明均是以实线黄色矩形作为参照。

getX()/getY()获取的是其左上角相对于父View(绿色矩形)的左上角坐标位置,图中getX()=100,getY()=100。

getTranslationX/Y获取的是当前View相对于其当前位置的偏移,向左为负值,向右为正值,因此对于实线黄色矩形来说getTranslationX()=0,getTranslationY()=0,而对于虚线黄色矩形来说getTranslationX()=100,getTranslationY()=100,translationX = getX()-getLeft(),修改translationX/Y的值,会导致getX/Y的变化。但是,如果修改X/Y的值并不会导致translationX/Y的变化,他们的值依然是0。

getLeft/Right/Top/Bottom,获取的是View相对于父View左侧/顶部的距离,图中实线黄色矩形的getLeft()=100,getRight()=200(红色线标识所示),getTop()=100,getBottom()=200(紫色线标识所示),该系列方法严格来讲控制的是View的尺寸而不是位置,因此在setX或者setTranslationX时虽然改变了View的位置,但是其Left/Right/Top/Bottom参数却没有改变。因此对于图中的虚线黄色矩形,getLeft/Right/Top/Bottom获取到的值依然是100/200/100/200,如果通过setLeft(0),setTop(0)方法将实线黄色矩形的left和top值修改为0,则该矩形的左上角会与父View(绿色矩形)的左上角重合,而该矩形的右下角不变,同时getLeft()=0,getTop()=0,getRight()=200,getTop()=200,getX()=0,getY()=0,getTranslationX()=0,getTranslationY()=0。

前言:本篇文章讲解Android坐标系、视图坐标系与触控事件(MotionEvent)

View获取坐标的方法:

getTop(): 获取该View顶边框到其 父布局顶边 的距离;

getLeft() : 获取该View左边到框其 父布局左边 的距离;

getRight() : 获取该View右边框到 父布局左边 的距离 ;

getBottom : 获取该View底部边框到 父布局顶部边框 的距离;

MotionEvent 获取坐标的方法:

getX(): 获取事件点击位置 所在控件左边 的距离;

getY(): 获取事件点击位置 所在控件顶边 的距离;

getRawX() : 获取事件点击位置距离 屏幕左边 的距离;

getRawY() : 获取事件点击位置距离 屏幕顶边 的距离;

如有错误与建议感谢提出指正!!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11080682.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存