Re: activity最终显示时间

14 views
Skip to first unread message

Kerr Yuandan

unread,
Nov 24, 2011, 8:27:28 PM11/24/11
to yunjun yang, keyu...@googlegroups.com
Window的本质是内部包含一个窗口,这个窗口实际上是View对象,因此这个visiblity属性实际上是View对象的,而Window中包含的View对象又是一个FrameLayout对象,这个对象不能重载,否则可以重载该FrameLayout的onWindowVisibilityChanged即可。

我看你使用相机拍摄?是显示到屏幕上吗?如果你所谓的显示就是指真正绘制到屏幕上的话,那么,你需要给当前的TreeObserver增加一个Listener对象,因为在ViewRoot的traversal方法中,绘制之前,总是回调该Listener,如下源码所示:

        boolean cancelDraw = attachInfo.mTreeObserver.dispatchOnPreDraw();


        if (!cancelDraw && !newSurface) {

            mFullRedrawNeeded = false;

            draw(fullRedrawNeeded);



给当前的Window所在的View对象添加一个Listener的方法是首相获得当前的ViewTreeObserver对象,然后调用其addOnPreDrawListener即可,在你的Listener方法中去计算时间。

总体流程如下:

Activity中getWindow(),然后Window中getDecorView(),然后在返回的View中addOnPreDrawListener()。


元旦


2011/11/24 yunjun yang <yangy...@gmail.com>
元旦
我看了下
this.getWindow()就是当前activity的窗口吧?可没有找到visibility的接口阿?


在 2011年11月24日 下午5:03,yunjun yang <yangy...@gmail.com>写道:

元旦
Displayed的时间是开始时间。那结束时间就是activity所在window的visibility?这个visibility是完全显示时间?我用相机看的,displayed到UI完全显示的最后一帧,还有一段时间,大概200ms


在 2011年11月24日 下午4:45,Kerr Yuandan <yuan...@gmail.com>写道:

监控Activity所在的window的visibility就可以了。


2011/11/24 yunjun yang <yangy...@gmail.com>
元旦。
请问有办法监控activity最终显示时间吗?
就是所有元素完全显示在屏幕上的时间。




Reply all
Reply to author
Forward
0 new messages