Android自定义View中的常用方法(距离、位置、点击事件)

View坐标

屏幕的左上角为坐标的原点,屏幕上边缘往右为X轴正方向,屏幕左边缘往下为Y轴正方向.

  • View自身坐标:getLeft(),getTop(),getRight(),getBottom()

  • View自身宽高: getWidth(),getMeasuredWidth(),getHeight(),getMeasuredHeight()

  • MotionEvent获取坐标:getX(),getY(),getRawX(),getRawY()

  • View的Padding: getPaddingLeft(),getPaddingTop(),getPaddingRight(),getPaddingBottom()

Position
  • getLeft() :子View的左边缘相对于父View左边缘的距离,单位是像素.

  • getRight():子View的右边缘相对于父View左边缘的距离,单位是像素.

  • getTop ():子View的上边缘相对于父View上边缘的距离,单位是像素.

  • getBottom():子View的下边缘相对于父View上边缘的距离,单位是像素.

Size

getMeasuredWidth()和getWidth(): getMeasuredWidth()是在XML或者代码中设置的宽度,即原始宽度,而getWidth() 是最终测量的宽度,是在onLayout()之后获得的值,两者之间可能相同,可能不同; getMeasuredHeight(),getHeight()同理。

MotionEvent
  • getX():点击事件的点在控件中的X坐标,即点相对于控件左边缘的距离

  • getY():点击事件的点在控件中的Y坐标,即点相对于控件上边缘的距离

  • getRawX():点击事件的点在整个屏幕中的X坐标,即点相对于屏幕左边缘的距离

  • getRawY():点击事件的点在整个屏幕中的Y坐标,即点相对于屏幕上边缘的距离

用一张图来解释一下就很清晰了:

由此可以得到几个结论:

  • 坐标点(getLeft() ,getTop())相当于子View左上角的点在父View中的坐标
    坐标点(getRight(),getBottom())相当于子View右下角的点在父View中的坐标

  • getRight()=getLeft() + getWidth():即View的右边缘的坐标距离等于View的左边缘距离加上View宽度之和

  • getBotton()=getTop ()+getHeight(): 即View的下边缘的坐标距离等于View的上边缘距离加上View高度之和

padding
  • getPaddingLeft():View里的content距离View左边缘的距离

  • getPaddingTop():View里的content距离View上边缘的距离

  • getPaddingRight():View里的content距离View右边缘的距离

  • getPaddingBottom():View里的content距离View下边缘的距离

这个相对简单,再来张图:

可以得到Content右上角M的坐标:
X坐标:
= View.getWidth() - View.getPaddingRight()
= View.getPaddingLeft()+Content.width
Y坐标:
= View.getPaddingTop()
= View.getHeight()-Content.height

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值