首页 > 代码库 > WindowManagerService之AppWindowAnimator笔记

WindowManagerService之AppWindowAnimator笔记

文章仅记录自己的一点理解,仅供自己参考。

这篇文章将详细记录AppWindowAnimator中的主要成员变量及函数的作用。

AppWindowAnimator是Activity动画类。每一个Activity对象在WMS中对应一个AppWindowToken对象,而AppWindowToken中包含一个AppWindowAnimator对象,也就是说一个Activity便对应有一个AppWindowAnimator对象,这个对象保存在与Activity对应的AppWindowToken中。这个从AppWindowToken的构造函数中可以看出来:

    AppWindowToken(WindowManagerService _service, IApplicationToken _token) {
        super(_service, _token.asBinder(),
                WindowManager.LayoutParams.TYPE_APPLICATION, true);
        appWindowToken = this;
        appToken = _token;
        mInputApplicationHandle = new InputApplicationHandle(this);
        mAnimator = service.mAnimator;
        mAppAnimator = new <span style="color:#cc0000;background-color: rgb(255, 255, 255);">AppWindowAnimator</span>(this);
    }

1、mAppToken

new一个AppWindowAnimator时把this(AppWindowToken)作为参数传进去,保存在AppWindowAnimator.mAppToken中,换句话说就是mAppToken保存的是该动画是属于哪个AppWindowToken的,进一步说就是属于哪个Activity的。

    public AppWindowAnimator(final AppWindowToken atoken) {
        <span style="color:#ff6666;">mAppToken </span>= <span style="color:#ff6666;">atoken</span>;
        mService = atoken.service;
        mAnimator = atoken.mAnimator;
    }
2、