我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android Splash界面白屏、黑屏问题的解决方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android Splash界面白屏、黑屏问题的解决方法

前言

我相信很多Android开发同学都遇到过这样的需求:

 1.实现一个Splash界面,界面上有应用相关的背景图片和一个开始按钮.
 2.点击按钮之后进入主页,以后用户再打开应用就不显示这个Splash界面了. 

也相信很多同学都遇到了这样的困惑:
 •第二次进入应用,尽管你在Splash界面已经直接跳转到首页了,但是还是有个白屏或者黑屏或者带ActionBar的白屏闪现一下. 

如果你也遇到这个问题,那就继续阅读这篇文章,我带大家去分析和解决这个问题.

解决方案

这里我们先给出解决方案,然后再具体分析产生原因哈.避免分析的大段文字阻碍了同学学习的热情.

解决方案非常简单,一句话概括是:给Splash Activity设置一个主题,主题内容是:全屏+透明.

style.xml增加SplashTheme主题:


<style name="SplashTheme" parent="AppTheme">
 <item name="android:windowFullscreen">true</item>
 <item name="android:windowIsTranslucent">true</item>
</style>

AndroidManifest.xml中为SplashActivity配置主题:


<activity android:name=".activity.SplashActivity"
 android:theme="@style/SplashTheme">
 <intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
</activity>

经过如上配置,困扰你的白屏、黑屏、ActionBar屏应该都已经烟消云散了.为了知其然,并知其所以然,希望同学能继续跟我一起分析一下这些白屏产生的原因.

Activity组件的窗口启动过程

首先声明,本段内容大量参考了罗升阳老师的博客。为了方便理解,对其内容进行了压缩。如果侵权,我立刻删掉这段分析哈。

想要了解白屏产生的根源,就不得不去跟踪Activity组件的窗口启动过程。Activity组件在启动的过程中,会调用ActivityStack类的成语函数startActivityLocked方法。注意,在调用ActivityStack类的成语函数startActivityLocked方法的时候,Activity组件还处于启动过程中,即它的窗口尚未显示出来,不过这时候ActivityManagerService服务会检查是否需要为正在启动的Activity组件显示一个启动窗口。如果需要的话,那么ActivityManagerService服务就会请求WindowManagerService服务为正在启动的Activity组件设置一个启动窗口(ps:而这个启动窗口就是白屏的由来)。

1. ActivityStack.startActivityLocked


public class ActivityStack {
 // set to false to disable the preview that is shown while a new activity
 // is being started.
 static final boolean SHOW_APP_STARTING_PREVIEW = true;
 private final void startActivityLocked(ActivityRecord r, boolean newTask, boolean doResume) {
  final int NH = mHistory.size();
  int addPos = -1;
  // Place to new activity at top of stack, so it is next to interact
  // with the user.
  if (addPos < 0) {
   addPos = NH;
  }
  // Slot the activity into the history stack and proceed
  mHistory.add(addPos, r);
  if (NH > 0) {
   // We want to show the starting preview window if we are
   // switching to a new task, or the next activity's process is
   // not currently running.
   boolean showStartingIcon = newTasks;
   ProcessRecord proc = r.app;
   if (proc == null) {
    proc = mService.mProcessNames.get(r.processName, r.info.applicationInfo.uid);
   }
   if (proc == null || proc.thread == null) {
    showStartingIcon = true;
   }
  }
 }
}

未完待续…希望大家继续关注。

您可能感兴趣的文章:Android开发之splash界面下详解及实例


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android Splash界面白屏、黑屏问题的解决方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android Splash界面白屏、黑屏问题的解决方法

前言 我相信很多Android开发同学都遇到过这样的需求: 1.实现一个Splash界面,界面上有应用相关的背景图片和一个开始按钮. 2.点击按钮之后进入主页,以后用户再打开应用就不显示这个Splash界面了. 也相信很多同学都遇到了这样
2022-06-06

Android中Splash应用启动白屏问题的解决方法

不久前项目开始了一段时间了,刚开始怀疑是Android Studio中新加入的Instant Run功能引起的,于是重新打release包后再次运行发现还是有这样的问题,突然想到了上次集成进来了云信,于是猜想可能的确是加入云信后Applic
2022-06-06

Android编程中activity启动时出现白屏、黑屏问题的解决方法

本文实例讲述了Android编程中activity启动时出现白屏、黑屏问题的解决方法。分享给大家供大家参考,具体如下: 默认情况下 activity 启动的时候先把屏幕刷成白色,再绘制界面,绘制界面或多或少有点延迟,这段时间中你看到的就是白
2022-06-06

Android界面切换出现短暂黑屏的解决方法

这种问题一般是因为一个Activity启动之后在显示视图之间时间太长导致的。 1、优化方式可以通过精简layout文件、多线程处理数据载入等。 2、但是有些Activity的layout文件可能比较大,如果不能动态载入,在显示之前解析xml
2022-06-06

Vue首屏白屏问题的原因和解决方法讲解

这篇文章主要介绍了Vue首屏白屏问题的原因和解决方法讲解,Vue首屏白屏问题是指在页面初次加载时,部分或全部内容无法正常显示,出现空白的情况。其原因可能是因为页面渲染速度过慢,或者是因为网络请求等问题导致数据无法及时加载
2023-05-19

XP里所有视频无法播放、黑屏或者白屏问题解决方法

昨天朋友询问了个问题,XP系统,所有视频无android法播放,因渲染方式不一样,有的视频是一片白色,有的视频是一片php黑色,都无图像。 我尝试安装多款播放器都无法解决问题,使用系统解码包和ffshow解码包均无效。 折腾半天编程,最后百
2023-06-03

Android切换至SurfaceView时闪屏(黑屏闪一下)以及黑屏移动问题的解决方法

1.最近的项目中,有一个Activity用到Fragment+ViewPager,其中一个fragment中实现了视频播放的功能,包含有SurfaceView。结果,每次打开程序第一次进入到该Activity时都会闪屏黑一下。原因就出在Su
2022-06-06

Android app启动时黑屏或者白屏的原因及解决办法

1、产生原因 其实显示黑屏或者白屏实属正常,这是因为还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景。 示例:2、解决办法 通过设置设置Style (1)设置背景图Theme 通过设置一张背景图。 当程
2022-06-06

Android问题笔记 - 解决WebView白屏空白的九种方案,AutoSize?

专栏分享 点击跳转=>Unity3D特效百例点击跳转=>案例项目实战源码点击跳转=>游戏脚本-辅助自动化点击跳转=>Android控件全解手册点击跳转=>Scratch编程案例 👉关于作者 众所周知,人生是一个漫长
2023-08-17

Android程序启动时出现黑屏问题的解决方法

本文实例讲述了Android程序启动时出现黑屏问题的解决方法。分享给大家供大家参考,具体如下: 关于黑屏: 默认的情况下,程序启动时,会有一个黑屏的时期,原因是,首个activity会加载一些数据,比如初始化列表数据、向服务器发送请求获取数
2022-06-06

Google Analytics白屏问题的解决方法是什么

Google Analytics白屏问题的解决方法是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1 在C:Windows System32 drivers etc下用记事
2023-06-12

云服务器游戏黑屏问题的解决方法

1.检查网络连接首先,确保你的云服务器和游戏客户端都正常连接到互联网。检查网络连接是否稳定,可以尝试重新启动路由器或更换网络连接方式,例如使用有线连接代替无线连接。2.更新显卡驱动程序黑屏问题可能是由于过时的显卡驱动程序引起的。请确保你的云服务器上的显卡驱动程序是最新版本。你可以访问显卡制造商的官方网站,下载并安装最新的驱动程序。3.调整游戏设置有时候,游戏的图形设置可能会导致黑屏问题。尝试将游戏的图形...
2023-10-27

Windows 7黑屏怎么办?Windows 7黑屏问题解决及避免方法介绍

Windows 7黑屏怎么办?如何解决Windows 7黑屏问题?不用担心,本文将为大家相信介绍解决Windows 7黑屏问题以及如何避免的办法,相信大家看了之后再也不用担心黑屏问题了!一、win7已经黑python屏的解决方法(1)重启电
2023-06-05

Win10预览版10061登录界面黑屏的彻底解决方法

Win10预览版的小问题层出不穷,日前推出的Win10预览版10061被爆登录界面出现黑屏问题,因此也就无法正www.cppcns.com常登陆系统。要彻底解决这个问题,我们需要安装微软推出的修复补丁。有些升级到Win10 10061预览版
2023-06-14

阿里云服务器进入图形界面黑屏问原因及解决方法

在使用阿里云服务器的过程中,有时候可能会遇到进入图形界面后出现黑屏的情况。本文将探讨这个问题的原因,并提供一些解决方法,帮助用户解决这一困扰。1.问题原因当我们在阿里云服务器上打开图形界面时,如果出现了黑屏,可能有以下几个原因:(1)硬件故障可能是由于服务器内部的硬件设备出现故障,例如显卡驱动程序损坏或显示器故障
阿里云服务器进入图形界面黑屏问原因及解决方法
2024-01-19

Windows7开机黑屏但能看到鼠标问题的解决方法

生活中常常会遇到开机黑屏问题,开机黑屏的可能性有很多,可能是软件问题、硬件问题、病毒问题等。那么遇到开机黑屏编程的情况我们该如何解决问题呢?下面就一www.cppcns.com起来看看win7开机黑屏但能看到鼠标解决方案。 1.按下键盘Ct
2023-06-07

解决Android横竖屏切换数据丢失问题的方法

Android横竖屏切换时,当前的Activity会被销毁,然后Activity上面的数据将会全部丢失。 如Listview上面每个item的checkbox,横竖屏切换时,复选框就丢失所有选中信息。 解决方案1:在Androidmanif
2022-06-06

解决Android studio虚拟机在启动界面和桌面出现画面模糊花屏问题

1.之前自己的虚拟机这样设置没问题,今天突然出现这样的花屏2.最后解决了,解决方法,按照下边红框设置3.问题方法说明:之前看不太明白,就找的翻译反思:之前是Graphic设置的Automatic(默认是Hardware硬件渲染)可以,今天突
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录