APP的统一转场动画

1,054 阅读1分钟

主要有几种情形:

1.点击icon冷启动的动画

在LaunchActivity的onCreate()中设置

2.Back键退出的动画

设置rootActivity的finish()退出动画

3.Home键之后重新从桌面icon进入的动画

观察到每次重新打开都会再次调用launchActivity的
launchA.onCreate()
lanuchA.finish()------------>在此重写需要的动画
xxx.onRestart()
xxx.onStart()
xxx.onResume()
lanuchA.onDestroyed()

4.页面间的转场动画

通过以下几个方法的重写设置
startActivity
startActivities
startActivityForResult
finish

5.转场过程中出现黑屏和白屏的情况:

正确做法:先startActivity, 再finish的顺序。建立新task栈也会有延迟。

白屏原因:是因为先finish再startActivity,    
可能在activity页面未绘制完成时就执行上一个页面的finish动画,
造成下一个页面首先展示的是windowBackground(通常是白底)给人感觉切换的过程很卡顿。


黑屏原因:即时如上述操作后,在一些性能较差的机器上也很明显地看到几百毫秒的黑屏现象。
是因为onResume()和onAttachedToWindow()之间还是有执行时间间隙。
这个间隙之间的时间取决于view的复杂度

正确做法:多层级的嵌套视图使用viewStub进行懒加载处理,提供一个加载中...提示用户
最好可以在onAttachedToWindow()之后再结束需要结束的上一个Activity