前言
獲取 View
坐標(biāo)在 Android
開發(fā)中非常常見宵荒。今天carson
將詳細(xì)給大家講解 獲取 View
坐標(biāo)常用6種方式:
- getLeft()爹耗、getTop()、getRight()榨婆、getBottom()
- getX()簿煌、getY()氮唯、getRawX()、getRawY()
- getLocationOnScreen()
- getLocationInWindow()
- getGlobalVisibleRect()
- getLocalVisibleRect()
方式1:getLeft()姨伟、getTop()惩琉、getRight()、getBottom()
1. 應(yīng)用場景
獲得 View
相對 父View
的坐標(biāo)
2. 使用
view.getLeft();
view.getTop();
view.getRight();
view.getBottom();
3. 具體描述
View的位置由4個頂點決定的(如下A授滓、B琳水、C、D)
View的頂點
4個頂點的位置描述分別由4個值決定:(請記装愣选:View的位置是相對于父控件而言的)
方式2:getX()在孝、getY()、getRawX()淮摔、getRawY()
1. 應(yīng)用場景
獲得點擊事件處 相對點擊控件 & 屏幕的坐標(biāo)
2. 使用
該方式是通過motionEvent獲取的
motionEvent event;
event.getX();
event.getY();
event.getRawX();
event.getRawY();
3. 具體介紹
方式3:getLocationInWindow()
1. 應(yīng)用場景
獲取控件 相對 窗口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)用場景
獲得 View 相對 屏幕 的絕對坐標(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)用場景
View可見部分 相對于 屏幕的坐標(biāo)和橙。
2. 具體使用
Rect globalRect = new Rect();
view.getGlobalVisibleRect(globalRect);
globalRect.getLeft();
globalRect.getRight();
globalRect.getTop();
globalRect.getBottom();
3. 示意圖
方式6:getLocalVisibleRect()
1. 應(yīng)用場景
View可見部分 相對于 自身View位置左上角的坐標(biāo)仔燕。
2. 具體使用
Rect localRect = new Rect();
view.getLocalVisibleRect(localRect);
localRect.getLeft();
localRect.getRight();
localRect.getTop();
localRect.getBottom();
3. 示意圖
總結(jié)
本文對Android獲取View坐標(biāo)位置的方式進(jìn)行了全面講解,總結(jié)如下:
接下來我將繼續(xù)介紹 Android
開發(fā)中的相關(guān)知識魔招,感興趣的同學(xué)可以繼續(xù)關(guān)注本人博客[Carson_Ho的開發(fā)筆記]
相關(guān)系列文章閱讀
Carson帶你學(xué)Android:學(xué)習(xí)方法
Carson帶你學(xué)Android:四大組件
Carson帶你學(xué)Android:自定義View
Carson帶你學(xué)Android:異步-多線程
Carson帶你學(xué)Android:性能優(yōu)化
Carson帶你學(xué)Android:動畫
歡迎關(guān)注Carson_Ho的簡書
不定期分享關(guān)于安卓開發(fā)的干貨晰搀,追求短、平办斑、快外恕,但卻不缺深度。