Android 獲取View繪制前的高度

n7w77 9年前發布 | 1K 次閱讀 Java Android

在Android開發過程中,我們可能需要獲取View繪制前的高度或者寬度,一種的可能情形是我們初始化的時候讓某個View是Visible = Gone的,當我們觸發某個事件的時候需要它顯示并且希望有一些動畫效果。這時候我們就要獲取這個View顯示前即繪制前的寬度或者高度。原理很簡單,我 們知道,View的繪制過程發生之前,會先執行onMeasure方法。那么我們就可以利用反射來或者我們需要的值。下面給出獲取高度的代碼,寬度同理。

private int getTargetHeight(View v) {

try {
    Method m = v.getClass().getDeclaredMethod("onMeasure", int.class,
            int.class);
    m.setAccessible(true);
    m.invoke(v, MeasureSpec.makeMeasureSpec(
            ((View) v.getParent()).getMeasuredWidth(),
            MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(0,
            MeasureSpec.UNSPECIFIED));
} catch (Exception e) {

}
return v.getMeasuredHeight();

} </pre>

拿到這個高度之后我們就可以做我們想做的動畫效果或者是其他的事情了。

 本文由用戶 n7w77 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!