绘制整个窗口需要按顺序执行以下几个步骤:
1. 绘制背景。
2. 绘制View本身的内容。
3. 绘制子View。4. 绘制修饰内容(例如滚动条)。
在Theme
中可以指定窗口的背景,Activity
的ICON
,APP整体文字颜色等,如果说没有指定任何属性,就会用默认的属性,所以我们的白屏和黑屏和空DecorView
息息相关,我们给APP设置的Style就决定了是白屏还是黑屏。
1、如果选择了Black
的系列的主题那么Activity
跳转的时候就是黑屏:
- 1
- 1
2、如果选择了Light
的系列的主题那么Activity
跳转的时候就是白屏:
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
如上设置后APP和Activity
启动时,我们的StartingWindow
会应用我们这个透明背景的主题,跳转时确实没有白屏和黑屏了,但是这样设置会产生如下后果:
1、给SplashActivity
设置后,用户点击我们APP图标后,需要等待2秒左右的时候才会显示contentView。造成了APP启动速度慢的假象,其实Activity
已经启动了,只是background
是透明的,这时候你点击桌面的其他地方是无效的。这样就和Google的初衷背道而驰了,所以还要继续往下看。
2、给其他Activity设置后,会导致通过overridePendingTransition
设置的启动关闭Activity的动画无效。需要在style中重新写如下几个动画:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
3、Activity之间的跳转可能偶尔会看到桌面一闪而过(如果SplashActivity和其他Activity都设置了透明)。