关于Activity切换动画(overridePendingTransition)的黑色背景问题
2016-01-27 16:36
706 查看
前阵子遇到一个 Bug。一个 activity 的启动动画需要自定义为从屏幕底部升起。当时是这样写的:
之所以在 overridePendingTransition的第二个参数写0,是以为在这里只需要设定启动动画。然而实测结果,是 activity在升起时,露出的背景是黑色的。这显然错误。
修改方法是:
一定要添加结束动画,这里的 fake_anim 其实就是保持屏幕位置,什么动画也不做。但是这能保证切换动画背景的正确。
究其原因,就是因为 overridePendingTransition(int enterAnim, int exitAnim) 这个方法的第二个参数是设定即将结束的那个 activity 的结束动画。如果设置为0,那么它会直接不可见,即变成黑色,造成错误。
这个问题其实还有一个解决方法,就是设置 activity 的主题,在主题中设置 windowBackground 为透明。但这会在该 activity 启动新 activity 时,出现背景透明的错误。
startActivity(new Intent(this, SettingActivity_.class)); overridePendingTransition(R.anim.slide_in_from_bottom, 0);
之所以在 overridePendingTransition的第二个参数写0,是以为在这里只需要设定启动动画。然而实测结果,是 activity在升起时,露出的背景是黑色的。这显然错误。
修改方法是:
overridePendingTransition(R.anim.slide_in_from_bottom, R.anim.fake_anim);
一定要添加结束动画,这里的 fake_anim 其实就是保持屏幕位置,什么动画也不做。但是这能保证切换动画背景的正确。
究其原因,就是因为 overridePendingTransition(int enterAnim, int exitAnim) 这个方法的第二个参数是设定即将结束的那个 activity 的结束动画。如果设置为0,那么它会直接不可见,即变成黑色,造成错误。
这个问题其实还有一个解决方法,就是设置 activity 的主题,在主题中设置 windowBackground 为透明。但这会在该 activity 启动新 activity 时,出现背景透明的错误。
相关文章推荐
- JS柯里化
- linux 中的rime 输入法 自定义 新世纪五笔输入法
- Powershell 批量移动计算机到指定ou
- python 自动化部署工具Fabric简介
- iOS Crash 分析
- Linux 常用命令
- 14.IDA-XREF(交叉引用)概述
- JUNIT 入门2(语法及应用)
- c语言中“在xxxx处有未经处理的异常”问题的分析与解决
- linux实现针对文本统计字母出现的次数(所有的可打印的字符)
- 并发和并行的区别
- ajax - get() 方法
- kafka本地存储5-LogManager
- Rufus安装Win7操作系统出现“press any key to boot from usb”解决方案
- 二进制安装MySQL
- managedQuery 和 getContentResolver().query的区别
- 一个通过shell脚本实现首页静态化的例子
- 单例
- iOS:iOS 的 APP 如何适应 iPhone 5s/6/6Plus 三种屏幕的尺寸?
- .bat 处理错误码