Android中如何正確獲取View坐標(biāo)位置(看了就懂)

在我們Android開(kāi)發(fā)過(guò)程中經(jīng)常使用到獲取View坐標(biāo)的方式做相關(guān)的邏輯判斷,主要是用到一下幾種方法:

1. getLeft()、getTop()、getRight()、getBottom()

2. getX()、getY()、getRawX()、getRawY()

3. getLocationOnScreen()

4. getLocationInWindow()

5. getGlobalVisibleRect()

6. getLocalVisibleRect()

方式1:getLeft()、getTop()、getRight()、getBottom()

1. 應(yīng)用場(chǎng)景

獲得 View 相對(duì) 父View 的坐標(biāo)

2. 使用

view.getLeft();

view.getTop();

view.getRight();

view.getBottom();

3. 具體描述

View的位置由4個(gè)頂點(diǎn)決定的(如下A、B、C、D)

4個(gè)頂點(diǎn)的位置描述分別由4個(gè)值決定:(請(qǐng)記?。篤iew的位置是相對(duì)于父控件而言的)

方式2:getX()、getY()、getRawX()、getRawY()

1. 應(yīng)用場(chǎng)景

獲得點(diǎn)擊事件處 相對(duì)點(diǎn)擊控件 & 屏幕的坐標(biāo)

2. 使用

該方式是通過(guò)motionEvent獲取的

motionEvent event;

event.getX();? ? ?

event.getY();

event.getRawX();? ?

event.getRawY();

3. 具體介紹

方式3:getLocationInWindow()

1. 應(yīng)用場(chǎng)景

獲取控件 相對(duì) 窗口Window 的位置

2. 具體使用

int[] location = new int[2];

view.getLocationInWindow(location);

int x = location[0]; // view距離window 左邊的距離(即x軸方向)

int y = location[1]; // view距離window 頂邊的距離(即y軸方向)

// 注:要在onWindowFocusChanged()里獲取,即等window窗口發(fā)生變化后

3. 示意圖


方式4:getLocationOnScreen()

1. 應(yīng)用場(chǎng)景

獲得 View 相對(duì) 屏幕 的絕對(duì)坐標(biāo)

2. 使用

int[] location = new int[2];

view.getLocationOnScreen(location);

int x = location[0]; // view距離 屏幕左邊的距離(即x軸方向)

int y = location[1]; // view距離 屏幕頂邊的距離(即y軸方向)

// 注:要在view.post(Runable)里獲取,即等布局變化后

3. 示意圖



方式5:getGlobalVisibleRect()

1. 應(yīng)用場(chǎng)景

View可見(jiàn)部分 相對(duì)于 屏幕的坐標(biāo)。

2. 具體使用

Rect globalRect = new Rect();

view.getGlobalVisibleRect(globalRect);

globalRect.getLeft();

globalRect.getRight();

globalRect.getTop();

globalRect.getBottom();

3. 示意圖



方式6:getLocalVisibleRect()

1. 應(yīng)用場(chǎng)景

View可見(jiàn)部分 相對(duì)于 自身View位置左上角的坐標(biāo)。

2. 具體使用

Rect localRect = new Rect();

view.getLocalVisibleRect(localRect);

localRect.getLeft();

localRect.getRight();

localRect.getTop();

localRect.getBottom();

3. 示意圖


總結(jié)

本文對(duì)Android獲取View坐標(biāo)位置的方式進(jìn)行了全面講解,總結(jié)如下:

參考https://blog.csdn.net/carson_ho/article/details/103342511

?著作權(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)容