在開發過程中有的時候我們會實現一些特殊功能,如元件滑動到一定距離隱藏或顯示、圖片置頂等等,這個時候view的座標就派上了用場了;同樣在自定義控制元件的時候,座標系也是經常用到的,下面記錄一下在複習過程中view座標系的一些知識。
目錄
- view的四個頂點座標
- view的x、y、translationX、translationY座標
- MotionEvent獲取座標
1. view的四個頂點座標
view的位置主要由四個頂點座標來決定,並且這個四個座標都是相當座標,view在移動過程中,它們的值不會發生變化。
注:圖1灰色部分為view相對於其父容器的四個頂點座標
四個頂點座標分別為:
getTop(); //獲取子View左上角距父View頂部的距離
getLeft(); //獲取子View左上角距父View左側的距離
getBottom(); //獲取子View右下角距父View頂部的距離
getRight(); //獲取子View右下角距父View左側的距離
複製程式碼
view的寬高計算:
//寬=right-left
int width = getRight() - getLeft();
//框架自帶
int width2 = getWidth();
//高=bottom-top
int height = getBottom() - getTop();
int height2 = getHeight();
複製程式碼
2. view的x、y、translationX、translationY座標
android3.0之後為view增加了x、y、translationX、translationY坐引數(上面圖2)。其中x、y為view左上角的座標,translationX、translationY是view左上角相對於父容器的偏移量,它們預設值為0。
//x、y的計算
float x = getLeft() + getTranslationX();
float x2 = getX();
float y = getTop() + getTranslationY();
float y2 = getY();
複製程式碼
3. MotionEvent獲取座標
MotionEvent主要用於處理使用者觸控螢幕後的互動。其獲取的座標資訊如下:
注:圖1紅色部分為MotionEvent獲取的座標資訊
//觸控點相對於其所在元件的相對座標
event.getX();
event.getY();
//觸控點相對於屏的絕對座標
event.getRawX();
event.getRawY();
複製程式碼