【Android - View】之View的位置參數

來源:互聯網
上載者:User

標籤:相對   text   距離   一段   hang   ext   調用   參數   布局   

  View是Android中所有控制項的基類,不管是簡單的Button和TextView,還是複雜的RelativeLayout和ListView,其基類都是View類;ViewGroup也繼承了View類,這意味著View本身就可以代表簡單的和複雜的所有控制項和布局,通過這種關係,就形成了View樹的結構。

  在操作View的時候,尤其是在處理自訂View的一些事件的時候,我們往往需要擷取到目標View的這樣或那樣的參數。下面就來簡單介紹一下View的各種參數及其用法。

  View有這樣的一些屬性:x、y、z、left、right、top、bottom、elevation、translationX、translationY、translationZ、rawX、rawY等等,下面一一介紹這些參數的意義及如何擷取這些參數。

  這裡需要注意一點:以下方法,如果直接在Activity的onCreate()方法中調用,則可能會返回0,這是因為在程式剛剛啟動,剛剛開始繪製這個View的時候,我們就要擷取這個View的各個位置參數,當然會返回0。解決方案是:在Activity的 onWindowFocusChanged() 方法中擷取;或者可以建立一個線程,先 Thread.sleep() 一段時間之後,再擷取這些參數。

 

left、right、top、bottom、elevation

  這五個參數代表的是View的原始位置相對於其父控制項邊緣的距離:

  • left:目標View的最左邊和這個View所在父控制項的最左邊的距離,通過view.getLeft()方法擷取;
  • right:目標View的最右邊和這個View所在父控制項的最左邊的距離,通過view.getRight()方法擷取;
  • top:目標View的最上邊和這個View所在父控制項的最上邊的距離,通過view.getTop()方法擷取;
  • bottom:目標View的最下邊和這個View所在父控制項的最上邊的距離,通過view.getBottom()方法擷取;
  • elevation:目標View的Z軸高度和這個View所在的父控制項所在的Z軸高度的距離,通過view.getElevation()方法擷取(這個屬性是Android 5.0之後添加的新屬性)。

  注意:View的這五個屬性值代表的是View的原始位置座標值,無論這個View被移動到了什麼位置,或者被縮放、旋轉了多少,這五個值都是永久不變的。

 

translationX、translationY、translationZ

  這三個參數代表的是在動畫或者滑動View的時候,View的當前位置相對於其原始位置平移的距離:

  • translationX:在滑動過程中,View當前位置的最左邊和這個View原始位置的最左邊的距離,通過view.getTranslationX()方法擷取;
  • translationY:在滑動過程中,View當前位置的最上邊和這個View原始位置的最上邊的距離,通過view.getTranslationY()方法擷取;
  • translationZ:在動畫過程中,View當前位置的Z軸高度和這個View原始Z軸高度的距離,通過view.getTranslationZ()方法擷取(這個方法是Android 5.0之後添加的新方法)。

 

x、y、z

  這三個參數代表的是View的當前位置相對於其父控制項的距離:

  • x:目標View的當前位置的最左邊和這個View所在父布局的最左邊的距離,通過view.getX()方法擷取;
  • y:目標View的當前位置的最上邊和這個View所在父布局的最上邊的距離,通過view.getY()方法擷取;
  • z:目標View的當前位置的Z軸位置和這個View所在父布局的Z軸位置的距離,通過view.getZ()方法擷取(這個方法是Android 5.0之後添加的新方法)。

  這三個參數和前面的幾個參數的關係公式如下:

  • x = left + translationX;
  • y = top + translationY;
  • z = elevation + translationZ;

 

【Android - View】之View的位置參數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.