android 跳转动画黑屏,Android8.0 适配解决页面跳转过程出现短暂黑屏的问题
小菜在适配 Android8.0 过程中,遇到很多问题,有很多很常见的问题,今天来整理一下页面跳转时黑屏的问题。
问题猜测
猜测一:
显示 Activity 页面之前会优先开启一个 Starting Window(Preview Window),等待 Activity 加载完成之后显示 UI 界面,猜测在这个等待过程中可能会出现页面跳转时的短暂黑屏。
猜测二:
小菜的 BaseActivity 页面中在 onCreate() 和 finish(),方法中添加了进入页面和退出页面时的动画效果,猜测可能是动画效果不兼容引起页面跳转时的短暂黑屏。
@Override
public void onCreate(Bundle savedInstanceState) {
if (toggleOverridePendingTransitionStart()) {
overridePendingTransition(R.anim.slide_right_in, 0);
}
super.onCreate(savedInstanceState);
}
@Override
public void finish() {
super.finish();
BaseAppManager.getInstance().removeActivity(this);
if (toggleOverridePendingTransitionFinish()) {
overridePendingTransition(0, R.anim.slide_right_out);
}
}
尝试解决
优先尝试修改主题样式,小菜前段时间整理 解决 Android 升级 SDK API 27 过程中遇到的问题 中有一个 Only fullscreen opaque activities can request orientation 问题,对于透明或半透明页面,Android8.0 需要将主题中的 android:windowActionBar 属性设为 false;小菜理解这个属性设为 true 是设置本页面为透明页面,小菜以为如果去掉相当于省略这个过渡效果,等待 1-2s 时间进入新页面;测试在小菜的 Android8.0 应用里面依旧会出现跳转短暂黑屏现象,故尝试方式一失败!
再次尝试修改主题样式,以为万能的添加主题背景图,设置主题 windowBackground,小菜以为添加一张透明背景图就可以解决;测试在小菜的应用背景图是有的,但还是会出现跳转短暂黑屏现象,故尝试方式二失败!
false
false
@null
@drawable/background_splash
@null
@color/colorPrimary
@color/colorPrimaryDark
@color/colorAccent
小菜担心页面中会有其他因素影响,新建一个 AppCompatActivity 进行测试,以上两种方法均不会出现黑屏问题;因此小菜开始考虑 overridePendingTransition 动画效果的影响,把 BaseActivity 中的动画效果去掉;测试一切正常,没有出现短暂黑屏现象,因此确定是 overridePendingTransition 问题;
小菜测试发现是在 Android8.0 中 overridePendingTransition 若设为进入和进出为 0 时会出现黑屏,解决方案是:将 0 换为固定的进入和退出的 anim 即可,如下:
// 原来
overridePendingTransition(R.anim.slide_right_in, 0);
// 替换为
overridePendingTransition(R.anim.slide_right_in, R.anim.slide_right_out);
// 原来
overridePendingTransition(0, R.anim.slide_right_out);
// 替换为
overridePendingTransition(R.anim.slide_right_in, R.anim.slide_right_out);
Tip:若只想有进入或退出时的动画,另一个动画去掉呢,可以自定义个 no_anim,替换上即可:
android:duration="0">
// 原来
overridePendingTransition(0, R.anim.slide_right_out);
// 替换为
overridePendingTransition(R.anim.no_anim, R.anim.slide_right_out);
插曲总结
overridePendingTransition 第一个参数为页面进入时动画,第二个参数为页面退出时动画,不要记反了;
小菜的 BaseActivity 是在 onCreate() 和 finish() 中分别调用 overridePendingTransition 的,所以想调整个别页面其他动画效果时,需要在 onCreate() 和 finish() 方法中方分别定义。
至此,小菜的应用在 Android8.0 中页面跳转短暂黑屏问题已解决,测试正常;小菜发现在优化和适配的道路上还有很多意想不到的问题,随时调整随时记录,希望可以顺利解决!
来源: 阿策小和尚
android 跳转动画黑屏,Android8.0 适配解决页面跳转过程出现短暂黑屏的问题相关推荐
- Android 8.0 学习(14)---Android8.0适配分析
公司项目Android8.0适配分析 1. 官方推荐的兼容测试方式 2. Android8.0行为变更说明 Android 8.0 行为变更包括两个部分:针对所有 API 级别的应用和针对 And ...
- js请求返回一个页面html页面跳转页面,JS cookie操作 解决页面跳转返回
在HTML中,页面跳转后,js和HTML都会刷新,这样数据就会初始化,如果要解决页面跳转互传数据,可以考虑cookie. 对于页面跳转,然后页面返回等一系列操作,cookie中数据模拟堆栈出栈可以实现 ...
- 【Vue2.0】—解决页面闪烁的问题(八)
[Vue2.0]-解决页面闪烁的问题(八) v-cloak指令(没有值) 1.本质上是一个特殊属性,Vue实例创建完毕并接管容器后,会删掉v-cloak属性 2. 使用css配合v-cloak可解决网 ...
- django解决页面跳转问题
django解决页面跳转问题 参考文章: (1)django解决页面跳转问题 (2)https://www.cnblogs.com/studong/p/9181524.html 备忘一下.
- nwjs解决页面透明化,启动时显示白屏的问题
nwjs解决页面透明化,启动时显示白屏的问题 参考文章: (1)nwjs解决页面透明化,启动时显示白屏的问题 (2)https://www.cnblogs.com/jinling/p/6068918. ...
- android烤机按键变慢,Android8.0平台Camera monkey拷机卡死异常
Android8.0平台Camera monkey拷机卡死异常 最近在处理一个camera monkey拷机卡死的问题,卡死在停止录像的画面. monkey测试命令 monkey -p com.and ...
- android 强制打开gps定位_Android 6.0动态权限及跳转GPS设置界面的方法
1.动态权限申请 模糊的位置信息android.permission.ACCESS_COARSE_LOCATION权限为例 在AndroidManifest文件中加入权限 然后java代码中动态申请 ...
- Android8.0适配那点事(二)
小伙伴们,咱们今天咱继续对Android8.0的适配进行分解,今天将针对启动页,版本适配和系统限制等进行"啃食" 1.启动页适配 近日,我无意中发现应用在8.0系统上面启动页崩溃, ...
- Android8.0适配方案
准备工作 将我们项目中的targetSdkVersion改为 26(8.0) 或者 27(8.1) 1运行时权限 首先引用官方的原文. https://developer.android.google ...
最新文章
- 重磅!腾讯发布AI生态计划将赋能1000合作伙伴!
- 网路游侠:某厂家新发布的数据销毁工具
- 华为云FusionInsight+永洪BI共建政企用数之道,普惠千行百业
- 【Python基础】入门Pandas不可不知的技巧
- 阿里云大数据计算服务MaxCompute命令行工具——odpscmd的操作使用
- C程序对整数中设置为1的位数进行计数
- Win11系统如何解除网络限制
- php的错误是什么原因,php异常和错误的区别是什么
- 江西 高职 分数 计算机,快讯!江西高职(专科)批次各高校投档分数线出炉…...
- 哈工大2015秋 编译原理课程实验1:词法分析
- MonkeyTest——简单无脑的移动端自动化测试(初级篇)
- php设置时区的两种方法
- Mac配置docker镜像源
- 【图片按钮】在微信小程序中实现图片按钮
- 2021年材料员-通用基础(材料员)考试试题及材料员-通用基础(材料员)作业模拟考试
- EWSTM8系列教程03_主窗口、工具栏的概述
- 小度机器人小胖机器人_小度机器人怎么升级?智能机器人百小度快速升级全攻略[多图]...
- 华为鸿蒙应用名称,国产自主系统名字定了 华为鸿蒙商标已注册公告
- 游戏服务器 c语言,C++游戏服务器编程从入门到掌握视频教程(全)
- c语言将英文月份转化为数字,用C语言进行数值月份向英文月份的转换 为什么输入两位数的月份只能识别第一个数字 求解答!!...
热门文章
- SpringBoot官方热部署和远程调试神器,真带劲!
- Java对象都是在堆上分配空间吗?答案竟然是...
- 第十章数据库恢复技术
- 一起玩Docker之1——Ubuntu配置安装Docker运行环境并安装(Ubuntu、Centos)镜像
- 蓝桥杯试题 算法提高 数组求和
- 复习----使用链表实现队列(先进先出)及迭代
- 线程池三种队列使用,SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue
- 在网络上提供资源的计算机,在计算机网络中通常把提供并管理共享资源的计算机称为...
- c语言 1 %3c%3c -253,结构体嵌套 姓名前后怎么输出两次??
- android按钮旋转,单击一个按钮在android中顺时针旋转图像