Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> android應用程序中獲取view的位置

android應用程序中獲取view的位置

編輯:Android開發實例

 我們重點在獲取view的y坐標,你懂的...

依次介紹以下四個方法:

 

1.getLocationInWindow

 

  1. int[] position = new int[2]; 
  2. textview.getLocationInWindow(position); 
  3. System.out.println("getLocationInWindow:" + position[0] + "," + position[1]); 

這個方法是將view的左上角坐標存入數組中.此坐標是相對當前activity而言.

若是普通activity,則y坐標為可見的狀態欄高度+可見的標題欄高度+view左上角到標題欄底部的距離.

可見的意思是:在隱藏了狀態欄/標題欄的情況下,它們的高度以0計算.

若是對話框式的activity,則y坐標為可見的標題欄高度+view到標題欄底部的距離.

此時是無視狀態欄的有無的.

 

2.getLocationOnScreen

 

  1. int[] position = new int[2]; 
  2. textview.getLocationOnScreen(position); 
  3. System.out.println("getLocationOnScreen:" + position[0] + "," + position[1]); 

這個方法跟上面的差不多,也是將view的左上角坐標存入數組中.但此坐標是相對整個屏幕而言.

 

y坐標為view左上角到屏幕頂部的距離.

 

 

3.getGlobalVisibleRect

 

  1. Rect viewRect = new Rect(); 
  2. textview.getGlobalVisibleRect(viewRect); 
  3. System.out.println(viewRect); 

這個方法是構建一個Rect用來"套"這個view.此Rect的坐標是相對當前activity而言.

若是普通activity,則Rect的top為可見的狀態欄高度+可見的標題欄高度+Rect左上角到標題欄底部的距離.

若是對話框式的activity,則y坐標為Rect的top為可見的標題欄高度+Rect左上角到標題欄底部的距離.

此時是無視狀態欄的有無的.

 

4.getLocalVisibleRect

 

  1. Rect globeRect = new Rect(); 
  2. button.getLocalVisibleRect(globeRect); 

注意:

以上方法在OnCreate方法中調用,都會返回0,這是因為View還未加載完畢.

建議在onWindowFocusChanged方法中進行獲取,有些情況下onWindowFocusChanged不好用的時候(比如ActivityGroup),可以這樣寫:

 

  1. mTextView.post(new Runnable() { 
  2.     @Override 
  3.     public void run() { 
  4.         Rect viewRect = new Rect(); 
  5.         mTextView.getGlobalVisibleRect(viewRect); 
  6.         mTreeScrollView.setRect(viewRect); 
  7.     } 
  8. }); 

這樣在View加載完畢之後會執行獲取位置的方法.

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved