亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Android自定義View中的常用方法(距離、位置、點擊事件)

標簽:
Android

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

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

github:https://github.com/crazyqiang



作者:_小马快跑_
链接:https://www.jianshu.com/p/336f90f0026f

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消