標籤:相對 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的位置參數