最近學習了一下View的坐標系,在此記錄一下。
其實感覺看懂了下面這張圖,也就基本可以理解View的坐標系了。
圖片來自網絡
屏幕的左上角為(0, 0)
View的幾個方法
getLeft()
是view自身的左邊到其父布局左邊的距離,一定記住是距父布局而不是距屏幕,其他的幾個方法類似getTop()
是view自身的頂邊到其父布局頂邊的距離getRight()
是view自身的右邊到其父布局左邊的距離getBottom()
是view自身的底邊到其父布局頂邊的距離getHeight()
獲取控件自身的高度getWidth()
獲取控件自身的寬度
/**
* Return the width of the your view.
*
* @return The width of your view, in pixels.
*/
@ViewDebug.ExportedProperty(category = "layout")
public final int getWidth() {
return mRight - mLeft;
}
/**
* Return the height of your view.
*
* @return The height of your view, in pixels.
*/
@ViewDebug.ExportedProperty(category = "layout")
public final int getHeight() {
return mBottom - mTop;
}
其實查看了View的源碼不難發現,實際上寬度是通過計算mRight - mLeft
得到的,而高度則是mBottom - mTop
得到的
MotionEvent的幾個方法
getX()
獲取點擊事件相對控件自己左邊的x軸坐標,即點擊事件距離控件自己左邊的距離getY()
獲取點擊事件相對控件自己頂邊的y軸坐標,即點擊事件距離控件自己頂邊的距離getRawX()
獲取點擊事件相對整個屏幕左邊的x軸坐標,即點擊事件距離整個屏幕左邊的距離getRawY()
獲取點擊事件相對整個屏幕頂邊的y軸坐標,即點擊事件距離整個屏幕頂邊的距離
大概就是這些,以后再補充。
今年要多學習,并且養成記錄和寫博客的好習慣!堅持!