안드로이드 프로그램에서 뷰를 가져오는 위치

2691 단어
View 클래스 인터페이스 컨트롤의 위치를 가져오면 새 컨트롤을 추가할 수 있습니다.
parent에서 상대 좌표 위치 가져오기 이것은 비교적 간단합니다. 더 말할 필요도 없이 뷰를 직접 호출하는 방법입니다. getLeft, getTop, getBottom, getRight.
화면에서 절대 위치 가져오기getLocalVisibleRect
getGlobalVisibleRect
getLocationOnScreen
getLocationInWindow
한 번은 잘 쓴 글이 있었는데, 댓글은 다음과 같다.http://www.fengfly.com/plus/view-209439-1.html)
=======================================================================
우리는view의 y 좌표를 가져오는 데 중점을 두고 있습니다. 알겠습니다.
다음 네 가지 방법에 대해 설명합니다.
 
1.getLocationInWindow
 
int[] position = new int[2]; 
textview.getLocationInWindow(position); 
System.out.println("getLocationInWindow:" + position[0] + "," + position[1]); 
이 방법은view의 왼쪽 상단 좌표를 그룹에 저장하는 것입니다.이 좌표는 현재activity에 비해
일반적인 activity라면 y 좌표는 보이는 상태 표시줄 높이 + 보이는 제목 표시줄 높이 +view 왼쪽 상단에서 제목 표시줄 밑까지의 거리입니다.
상태 표시줄/제목 표시줄을 숨긴 상태에서 그것들의 높이는 0으로 계산된다는 뜻이다.
대화상자식activity라면 y 좌표는 보이는 제목 표시줄 높이 +view 제목 표시줄 밑까지의 거리입니다.
이때는 상태막대의 유무를 무시합니다.
 
2.getLocationOnScreen
 
int[] position = new int[2]; 
textview.getLocationOnScreen(position); 
System.out.println("getLocationOnScreen:" + position[0] + "," + position[1]); 
이 방법은 위와 차이가 많지 않고view의 왼쪽 상단 좌표를 그룹에 저장합니다.그러나 이 좌표는 전체 화면에 비해
 
y 좌표는view 왼쪽 상단에서 화면 상단까지의 거리입니다.
 
 
3.getGlobalVisibleRect
 
Rect viewRect = new Rect(); 
textview.getGlobalVisibleRect(viewRect); 
System.out.println(viewRect); 
이 방법은 이view에 사용할 Rect를 구축하는 것입니다.이 Rect의 좌표는 현재 activity에 비해
일반적인 activity일 경우, Rect의 top은 보이는 상태 표시줄 높이 + 보이는 제목 표시줄 높이 + Rect의 왼쪽 상단에서 제목 표시줄 밑까지의 거리입니다.
대화상자식 activity라면 y 좌표는Rect의 top이고 보이는 제목 표시줄 높이 + Rect 왼쪽 상단에서 제목 표시줄 밑까지의 거리입니다.
이때는 상태막대의 유무를 무시합니다.
 
4.getLocalVisibleRect
 
Rect globeRect = new Rect(); 
button.getLocalVisibleRect(globeRect); 
참고:
위의 방법은 Oncreate 방법에서 호출되어 0으로 되돌아옵니다. 이것은 View가 아직 불러오지 않았기 때문입니다.
onWindow FocusChanged 방법에서 가져오는 것을 권장합니다. 어떤 경우 onWindow FocusChanged가 좋지 않을 때 (예:Activity Group) 이렇게 쓸 수 있습니다.
 
mTextView.post(new Runnable() { 
    @Override 
    public void run() { 
        Rect viewRect = new Rect(); 
        mTextView.getLocalVisibleRect(viewRect); 
        mTreeScrollView.setRect(viewRect); 
    } 
}); 
이렇게 하면 View가 로드된 후에 위치를 가져오는 방법이 실행됩니다.
=======================================================================
PS: View 클래스 컨트롤을 동적으로 만드는 방법:
1. new 방법을 통해 하나의 인터페이스 대상을 만든다.
2. Layout xml 리소스를 통해 만들고 Layout Inflater가 제공하는 방법을 이용한다.

좋은 웹페이지 즐겨찾기