美文网首页
安卓ui学习_第一部分

安卓ui学习_第一部分

作者: vb12 | 来源:发表于2017-10-17 22:58 被阅读14次

    1. AttachInfo为View 里的一个静态内部类

    看它的构造函数, 它关联了window, windowsession, viewrootImpl, windowToken, display, handler等元素

    2. 关于ViewRootImpl

    在View中 和 PhoneWindow中都可以得到这个对象

    ViewRootImpl的setView()方法, 只会在第一次有用, 后续如果mView已经不为空了,  那么这个方法将什么都不做.

    3. Choreographer  这个类的作用

    关于这个类有个博文:http://www.jianshu.com/p/6f2043570de4

    学到一个开源项目 TinyDancer   可以检查帧率.

    先看注释,  CP(Choreographer)的作用是为了协调输入, 动画, 绘制(渲染)三者的关系.

    每个线程一个Choreographer对象.

    先看一个内部handler子类: FrameHandler   一个标准的Handler类, 处理三种事件:

    MSG_DO_FRAME

    MSG_DO_SCHEDULE_VSYNC

    MSG_DO_SCHEDULE_CALLBACK

    -----以上这三个消息是干啥的?

    内部类FrameDisplayEventReceiver   继承自DisplayEventReceiver  ,   这里又延伸出一个重要的类DisplayEventReceiver.

    简单来说FrameDisplayEventReceiver实例被native层的vsync信号触发onVsync()方法调用

    创建了包含4个CallbackQueue元素的数组,  分别对应: input, animation , traversal, commit 四种类型,   前三种就不说了.  最后一个commit的逻辑是这样的:

    4.DisplayEventReceiver类相关

    public void onVsync(long timestampNanos, int builtInDisplayId, int frame)   被native层调用dispatchVsync()

    另外一个hotPlug事件是干什么的?

    相关文章

      网友评论

          本文标题:安卓ui学习_第一部分

          本文链接:https://www.haomeiwen.com/subject/qtwjuxtx.html