美文网首页android学习之路Android知识点滴Andriod收藏
Android自定义View中的常用方法(距离、位置、点击事件)

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

作者: 饱醉豚我去年买了个表 | 来源:发表于2016-11-08 12:03 被阅读919次

    View介绍的官网地址:
    https://developer.android.com/reference/android/view/View.html

    屏幕的左上角为坐标的原点,屏幕上边缘往右为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()同理。
    关于getWidth()和getMeasuredWidth()的区别详细请查看:
    http://www.cnblogs.com/summerpxy/p/4983600.html

    MotionEvent

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

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

    View.png
    图片摘自:http://blog.csdn.net/jason0539/article/details/42743531

    由此可以得到几个结论:

    1. 坐标点(getLeft() ,getTop ())相当于子view左上角的点在父view中的坐标
      坐标点(getRight(),getBottom())相当于子view右下角的点在父view中的坐标
    2. getRight()=getLeft() + getWidth():即view的右边缘的坐标距离等于view的左边缘距离加上view宽度之和
    3. getBotton()=getTop ()+getHeight():即view的下边缘的坐标距离等于view的上边缘距离加上view高度之和

    padding

    getPaddingLeft():View里的content距离View左边缘的距离
    getPaddingTop():View里的content距离View上边缘的距离
    getPaddingRight():View里的content距离View右边缘的距离
    getPaddingBottom():View里的content距离View下边缘的距离

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

    padding.jpg

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

    如有错误,欢迎批评指正!觉得文章对您有帮助,随手点个赞呗!

    作者:@小马快跑
    Q Q :504091986@qq.com
    博客:
    http://www.jianshu.com/users/185028550381/latest_articles
    github:https://github.com/crazyqiang

    相关文章

      网友评论

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

      本文链接:https://www.haomeiwen.com/subject/yabouttx.html