Android: сводка способов получения вида View в экранных координатах

Занятая область, область отображения и область рисования представления на экране

вставьте сюда описание изображения
вставьте сюда описание изображения

Получение двух значений заполнения и значения поля

Согласно приведенному выше рисунку мы можем знать, что заполнение фактически представляет собой расстояние между содержимым представления и представлением, а значение Margin представляет собой расстояние между представлением и родительским представлением.Значение заполнения и поля можно установить
в файл xml, так что пока загружается xml файл, и эти значения можно получить независимо от того, отрисовывается View или нет.
вставьте сюда описание изображения

Методы getLeft(), getTop(), getRight(), getBottom() в Three View

вставьте сюда описание изображения
Если вы хотите получить ширину и высоту подпредставления, вы также можете получить его с помощью этих четырех значений:

childview_width=getRight()-getLeft();
childview_height=getBottom()-getTop();

Однако, в отличие от значений magin и padding выше, эти четыре значения можно получить только после завершения измерения.Вызов метода перед измерением вернет 0, например: его можно вызвать в посте (Runnable
) представления, или в представлении, вызываемом в событии клика onClick, или в методе onPause() действия (или фрагмента). Его нельзя вызвать в onResume() Activity (или Fragment), потому что View рисуется при выполнении метода onResume(). В настоящее время View может быть еще не отрисован, поэтому возвращаемое значение равно 0.

Четыре метода получения координат в MotionEvent

MotionEvent: getX(),getY(),getX(int),getY(int),getRawX(),getRawY(),getRawX(int),getRawY(int)方法:
вставьте сюда описание изображения

Пять getLocationInWindow() и getLocationOnScreen()

вставьте сюда описание изображения

getLocationInWindow — координаты C с B в качестве источника
getLocationOnScreen — с A в качестве источника.

5.1 getLocationInWindow()

:
getLocationInWindow(): координатная позиция элемента управления в его родительском окне
Метод использования: View.getLocationInWindow(int[] location)

start = (Button) findViewById(R.id.start);  
        int []location=new int[2];  
        start.getLocationOnScreen(location);  
        int x=location[0];//获取当前位置的横坐标  
        int y=location[1];//获取当前位置的纵坐标  

вставьте сюда описание изображения

5.2 getLocationOnScreen():

Координата положения элемента управления на всем его экране.
Метод использования: View.getLocationOnScreen(int[] location)

start = (Button) findViewById(R.id.start);  
        int []location=new int[2];  
        start.getLocationOnScreen(location);  
        int x=location[0];//获取当前位置的横坐标  
        int y=location[1];//获取当前位置的纵坐标  

вставьте сюда описание изображения

Шесть getGlobalVisibleRect(): глобальная видимая область

Координаты видимой части представления относительно экрана.
Пример кода:

Rect globalRect = new Rect();
view.getGlobalVisibleRect(globalRect);
 
globalRect.getLeft();
globalRect.getRight();
globalRect.getTop();
globalRect.getBottom();

Схематическая диаграмма:
вставьте сюда описание изображения

Семь getLocalVisibleRect(): локальная видимая область

Координаты видимой части Вида относительно левого верхнего угла его собственного положения Вида.

Образец кода:

Rect localRect = new Rect();
view.getLocalVisibleRect(localRect);

localRect.getLeft();
localRect.getRight();
localRect.getTop();
localRect.getBottom();

示意图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/6c91e110dd2a416cbe820b59531e3b3f.png)

Восьмое резюме

вставьте сюда описание изображения
Справочный пример: https://zhuanlan.zhihu.com/p/274321442

Supongo que te gusta

Origin blog.csdn.net/qq_39431405/article/details/124888496
Recomendado
Clasificación