在自定义 View 中和处理事件冲突时总需要获得各种坐标值,记一帖以供学习。
1.View 提供获取坐标的方法(见图)
getTop():获取到的是 View 自身的顶边
到其父布局顶边
的距离
getLeft() :获取到的是 View 自身的左边
到其父布局左边
的距离
getRight():获取到的是 View 自身的右边
到其父布局左边
的距离
getBottom():获取到的是 View 自身的底边到
其父布局顶边
的距离
getHeight():获取 View 在屏幕中的高度(pixels)
getWidth():获取 View 的屏幕中宽度(pixels)
getMeasureHeight():获取 View 的实际高度
getMeasureWidth():获取 View 的实际高度
*getScrollY():获取 View 的上下滑动距离( > 0)
*getScrollX():获取 View 的左右滑动距离( > 0)
getHeight() 和 getMeasureHeight()区别:
在 View 的显示全部在屏幕中时,两者相同,但是当 View 的显示超出屏幕时,
getHeight()
为 View在屏幕中的高度,而getMeasureHeight()
为 View 的实际高度。
两者的关系为:
getMeasureHeight() = getHeight() + View 在屏幕外的高度
getWidth()
和getMeasureWidth()
同理
2.MotionEvevt 提供的方法
getX():获取点击事件距离控件左边
的距离,即视图坐标
getY():获取点击事件距离控件顶边
的距离,即视图坐标
getRawX():获取点击事件距离整个屏幕左边
的距离,即视图坐标
getRawY():获取点击事件距离整个屏幕顶边
的距离,即视图坐标