- Android View 相关源码分析之三 View的绘制过程
- Android View 相关源码分析之五 RelativeLa
- Android View 相关源码分析之四 LinearLayo
- Android View体系(二)实现View滑动的六种方法
- Android View体系(十一)自定义ViewGroup
- Android View体系(八)从源码解析View的layou
- Android View体系(七)从源码解析View的measu
- Android View体系(三)属性动画
- Android View体系(四)从源码解析Scroller
- Android View体系(五)从源码解析View的事件分发机
view 的绘制流程 onmeasure (),onlayout(),ondraw(),
当前activity必须onpause()! 下一个activity才能onresume()!
可以用以下几种方法计算view的宽高
1、待activity界面完全展示出来再去调用getmeasureheight()和getmeasurewidth()方法获取
2 、 使用ViewTreeObserver
ViewTreeObserver作为View事件的观察者,可以通过View的getViewTreeObserver()方法来获得他的实例,注意并不是通过new关键字来创建的,当视图树中全局布局或者视图树中某一个视图的可视状态发生变化的时候,会调用回调接口类onGlobalLayoutListener里面的onGlobalLayout方法,这样的话,我们就可以在onGlobalLayout里面来获取View的宽高
当然你也可以使用ViewTreeObserver里面的其他监听方法,比如OnPreDrawListener,这会在你执行onDraw方法之前进行调用,在View视图的绘制中执行onDraw之前已经执行过onMeasure以及onLayout了,所以这时候是一定可以获取到宽高的;
网友评论