解决Activity启动黑屏及设置android:windowIsTranslucent不兼容activity切换动画问题

From:http://blog.csdn.net/fancylovejava/article/details/39643449

之前在做 APP 的时候不太关注这个问题,因为自己在使用其他 APP 的时候也会在应用启动的初始有一个黑屏闪过后才会出现应用的欢迎页。直到最近开发过程中发现自己在欢迎页启动的线程由于请求和处理的数据量过大而,导致欢迎页在出现之前界面上会有一个短暂的白色闪屏停留,当然白色闪屏的停留是因为 application 的主题样式 android:theme="@style/AppTheme" 使用了 Theme.Light 题导致的,Light 样式的 windowBackground、colorBackground、colorForeground 等属性的值均为 light 也就是白色偏亮,所以才会出现白色闪屏。下面是我的 APP 出现白色闪屏时样式引用的代码:

   <style name="AppTheme" parent="android:Theme.Light">

   </style>

简单的修改后,闪屏颜色为黑色,代码如下:

   <style name="AppTheme" parent="android:style/Theme.Black.NoTitleBar.Fullscreen">

   </style>

代码修改后引用的样式为黑色主题,但欢迎页仍然会有黑色闪屏短暂的停留。继续进行修改,设置透明属性为 true,代码如下:

    <style name="AppStartTheme" parent="android:style/Theme.Black.NoTitleBar.Fullscreen">
        <item name="android:windowIsTranslucent">true</item>
    </style>

经过这次的修改之后黑色闪屏现象消失了,最终达到了自己理想的效果。最后,经过查阅资料发现已经有人总结和处理过这类问题了,并且给出了优缺点的分析,我在这里以我的理解对其进行引用。

原来避免黑色闪屏有2种方法,分别为:1.为 Theme 设置背景图;2.为 Theme 设置透明属性。显然我采用的是第二种方式,先分别看看这2种方式所引用的代码:

    <!-- 为 Theme 设置背景图 -->
    <style name="AppStartTheme" parent="android:Theme">
        <item name="android:windowBackground">@drawable/splash_bg</item>
        <item name="android:windowNoTitle">true</item>
    </style>
    <!-- 为 Theme 设置透明属性 -->
    <style name="AppStartTheme" parent="android:Theme">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowNoTitle">true</item>
    </style>

    <!-- 为 Activity 设置 Theme -->
    <activity
        android:name="com.sunzn.act.SplashActivity"
        android:label="@string/app_name"
        android:theme="@style/AppStartLoadTranslucent"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

上面的2种 Theme 中,为 Theme 设置背景图后程序在启动的时候,会首先显示这张图,避免发生黑屏;为 Theme 设置透明属性,程序启动后不会黑屏而是透明,等到界面初始化完成后才一次性显示出来。下面是两种方式的优缺点:

  • 为 Theme 设置背景图       给人程序启动快的感觉,界面先显示背景图,然后再刷新其他界面控件,刷新不同步。
  • 为 Theme 设置透明属性    给人程序启动慢的感觉,界面会一次性刷出来,刷新同步。
时间: 2024-10-12 00:17:10

解决Activity启动黑屏及设置android:windowIsTranslucent不兼容activity切换动画问题的相关文章

[FMX] Android APP 启动黑屏优化补丁

使用说明 *************************************************** Android APP 启动黑屏优化补丁 作者: Swish, YangYxd 2016.01.16 Version: 1.0.0 QDAC官方群: 250530692 *************************************************** [安装方式] 双击Setup.bat安装补丁文件(安装时会作备份) 双击Uninstall.bat可以恢复. [

Android开发之解决APP启动白屏或者黑屏闪现的问题

在做搜芽的过程中,发现那个外包人缘做的不行,因为启动的时候会停顿,然后白屏一会,联想到几个月前我在我的三僚企业通信软件里面拉起9K-Mail的时候也会黑屏,所以决定学习一下.解决一下.这不,万能的网络还是非常有用的. 在这里总结一下. (参考及转载:http://www.2cto.com/kf/201409/339293.html) 欢迎页启动的线程由于请求和处理的数据量过大而,导致欢迎页在出现之前界面上会有一个短暂的白色闪屏停留,当然白色闪屏的停留是因为 application 的主题样式an

Android实例-解决启动黑屏问题(XE8+小米2)

结果: 1.在启动时马上出现图片界面,但在出现程序界面前会有黑屏,大约有0.2秒左右. 实现: 1.建立2个文件:loading.png和styles.xml: ①其中loading.png是启动时替代黑屏的图片. ②styles.xml是对背景图片的定义,其内容为: 1 <resources> 2 3 <!-- 4 Base application theme, dependent on API level. This theme is replaced 5 by AppBaseThe

Android启动黑屏白屏解决方案

在App的Splash页面启动时会出现短暂的黑屏或者白屏,会带来很不好的用户体验,究其原因是因为资源还未加载完成而导致的黑屏或白屏,而我们所看到的黑白屏其实就是顶层Window,下面总结两种解决方案. **设置Window层的界面为我们的Splash界面. <!--防止启动时黑屏,添加window图片--> <style name="Theme.AppStartLoad" parent="android:Theme"> <item na

Debian 系统安装后启动黑屏解决办法

这几天在尝试安装Debian系统,Debian 系统安装后启动黑,在网上搜索了各种解决方案(其中在WM安装3次,换不同版本还是不行),最终通过修改硬盘类型解决了,在此把各种经验与大家分享:1.最终成功办法:将原来的SCSI类型换为IDE,问题解决了:中途使用过的办法如下:1.宿主机(windows)管理员模式运行CMD, netsh winsock reset 然后重启电脑netsh winsock reset命令,作用是重置 Winsock 目录.如果一台机器上的Winsock协议配置有问题的

hp惠普工作站 安装ESXI 从U盘启动黑屏问题

[背景] 公司新买了一套hp z238 workstation需要安装esxi,我按照以前的方法制作好U盘后插入从U盘引导,显示屏一直黑屏,这个问题困扰了我一天....在网上找了好久无果 第二天终于在https://www.chiphell.com/thread-1740254-1-1.html找到了跟我类似问题的帖子 继续往下看,最后发现了原因,并通过一系列摸索解决 [问题原因] 现在最新的hp工作站都是UEFI模式大于传统模式,制作U盘得从传统模式legacy启动,如果是从UEFI引导U盘启

虚拟机启动黑屏

1.方法一(亲测能解决,但是用了一段时间又出现黑屏状况) 在虚拟机的设置中,选择显示器,取消加速3D图形 2.方法二(亲测,未解决黑屏问题) 管理员权限运行cmd,输入命令 netsh winsock reset 重启计算机 3.方法三(亲测能解决黑屏问题) 编辑-->首选项-->设备-->启用虚拟打印机 原文地址:https://www.cnblogs.com/Hunter-01001100/p/11625908.html

解决CentOS 自动黑屏问题

最近在学习CentOS5,但是CentOS5过了一会就自动黑屏,需要动一下鼠标才行,感觉很麻烦, 后来发现:系统->首选项->屏幕保护程序,在屏幕保护程序中进行相应设置就可以了的说.

安装ubuntu后启动黑屏

我是在windows7上的一个空闲盘上安装ubuntu 14,安装后重启没有ubuntu的启动项,然后用easybcd生成启动项,重启发现果然有,但是选择之后黑屏. 百度半天无果,后来无意发现ubuntn 14 的启动引导程序是grub2,我之前生成的是grub,重新生成之后果然ok. 版权声明:本文为博主原创文章,未经博主允许不得转载.