Android 獲取View繪製前的高度

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

private int getTargetHeight(View v) {code

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();
}

拿到這個高度以後咱們就能夠作咱們想作的動畫效果或者是其餘的事情了。事件

相關文章
相關標籤/搜索