标签:android style blog color java 使用 io for ar
文章仅记录自己的一点理解,仅供自己参考。
WindowAnimator是一个窗口动画推进类,从成员变量mAnimationRunnable可以看出来。google源码对应这个类的解释:“Singleton class that carries out the animations and Surface operations in a separate task on behalf of WindowManagerService.”,意思是代表WMS在一次分割的任务中执行动画和操作Surface。Android中动画就是被分割成多次任务,每次任务,WMS都会使用这个类来执行,说白了就是推进动画。
1、mAnimationRunnable
这个变量是动画中一次任务的入口。
mAnimationRunnable = new Runnable() { @Override public void run() { synchronized (mService.mWindowMap) { mService.mAnimationScheduled = false; animateLocked(); } } };对animateLocked()代码添加了同步锁,意味着同一时刻最多只有一个线程执行这个段代码。
2、mDisplayContentsAnimators
表示Display动画。该变量对于只有一个显示屏幕的手机来说只有一个成员。
private class DisplayContentsAnimator { ScreenRotationAnimation mScreenRotationAnimation = null; }DisplayContentsAnimator只包含一个ScreenRotationAnimation成员变量,用来保存屏幕旋转动画,从日志看mScreenRotationAnimation一直为null,不知道为什么,屏幕旋转动画后续再研究。
3、mAnimTransactionSequence
记录播动画时调用WindowAnimator.updateWindowsLocked()的序列。
4、mForceHiding
mForceHiding主要有四种状态:KEYGUARD_NOT_SHOWN、KEYGUARD_ANIMATING_IN、KEYGUARD_SHOWN、KEYGUARD_ANIMATING_OUT。主要用来保存播动画过程中keyguard状态。如果出现keyguard界面,就需要重新考虑keyguard窗口之下的所有窗口的可见性,因为keyguard会强制性的隐藏keyguard窗口之下的所有其他窗口(状态栏、壁纸等除外)。对于没有设置FLAG_SHOW_WHEN_LOCKED属性的窗口,当keyguard来临时会将该窗口隐藏掉。在keyguard退出动画时会将隐藏的窗口显示出来,这时如果窗口的高度高于keyguard,那么焦点窗口可能就会发生变化。
5、
标签:android style blog color java 使用 io for ar
原文地址:http://blog.csdn.net/guoqifa29/article/details/38842885