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

拿到这个高度以后咱们就能够作咱们想作的动画效果或者是其余的事情了。事件

相关文章
相关标签/搜索