View的坐標(biāo)體系

view坐標(biāo).png

Position

1 getLeft(),getTop(),getRight(),getBottom()

  • getLeft()
    Left position of this view relative to its parent.
    view左邊界相對(duì)于父布局左邊界的像素個(gè)數(shù);
  • getRight()
    view右邊界相對(duì)于父布局左邊界的像素個(gè)數(shù);
    getRight() = getLeft()+getWidth();

需要注意的是,View.getTop()、View.getLeft()、View.getBottom()、View.getRight()這四個(gè)方法獲取的坐標(biāo)表示的是View原始狀態(tài)時(shí)相對(duì)于父容器的坐標(biāo),對(duì)View進(jìn)行平移操作并不會(huì)改變著四個(gè)方法的返回值。

2 getX(),getY()

getX()與getY()方法獲取的是View左上角相對(duì)于父容器的坐標(biāo),當(dāng)View沒(méi)有發(fā)生平移操作時(shí),getX()==getLeft()、getY==getTop()。

3 getTranslationX(),getTranslationY()

translationX與 translationY是View左上角相對(duì)于父容器的偏移量:translationX = getX() - getLeft(),當(dāng)View未發(fā)生平移操作時(shí),translationX 與translationY都為0。

4 View.getLocationOnScreen(int[] position);

獲取View相對(duì)于整個(gè)屏幕的坐標(biāo)。

5 View.getLocationInWindow(int[] position);

獲取View相對(duì)于Window的坐標(biāo)(忽略狀態(tài)欄及ActionBar)。

Size

  • getMeasuredWidth() 與 getWidth()
    ①getMeasuredWidth方法獲得的值是setMeasuredDimension方法設(shè)置的值,它的值在measure方法運(yùn)行后就會(huì)確定。
    ②getWidth方法獲得是layout方法中傳遞的四個(gè)參數(shù)中的mRight-mLeft,它的值是在layout方法運(yùn)行后確定的。
    ③一般情況下在onLayout方法中使用getMeasuredWidth方法,而在除onLayout方法之外的地方用getWidth方法。

Layout

void layout (int l, int t, int r, int b)
子View相對(duì)于父view的位置。

注意:View的寬高是有top、left、right、bottom參數(shù)決定的。在View發(fā)生改變的過(guò)程中,top,left等值代表原始位置,是不會(huì)改變的。改變的只有X、Y,translationX、Y。

觸摸點(diǎn)MotionEvent的坐標(biāo):

用戶點(diǎn)擊的坐標(biāo).png
  • event.getX():表示的是觸摸的點(diǎn)距離控件左邊界的距離。
  • event.getY():表示的是觸摸的點(diǎn)距離控件上邊界的距離。
  • event.getRawX:表示的是觸摸點(diǎn)距離屏幕左邊界的距離。
  • event.getRawY:表示的是觸摸點(diǎn)距離屏幕上邊界的距離。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容