闪黑屏的原因主要是我们启动Activity的时候,需要跑完onCreate和onResume才会显示界面

前几天Boss就反应说,机器每次启动程序都会闪一下黑屏,这个客户不接受。没办法,只能想想怎么解决,最后找到了下面的方法。闪黑屏的原因主要是 我们启动Activity的时候,需要跑完onCreate和onResume才会显示界面。也就是说需要处理一些数据后,才会显示。按照这种思路,是不 是我把初始化的工作尽量减少就可以避免黑屏?事实是,就算你onCreate啥都不做,仍然会闪一下黑屏,因为初始化解析界面时需要一定时间。下面是解决 办法:
1、自定义Theme

复制代码  代码如下:

设置背景图Theme
<style name="Theme.AppStartLoad" parent="android:Theme">   
    <item name="android:windowBackground">@drawable/ipod_bg</item>   
    <item name="android:windowNoTitle">true</item>   
</style>
//2、设置透明Theme
<style name="Theme.AppStartLoadTranslucent" parent="android:Theme">   
    <item name="android:windowIsTranslucent">true</item>  
    <item name="android:windowNoTitle">true</item>   
</style>

上面我定义了两种Theme,第一种Theme就是设置一张背景图。当程序启动时,首先显示这张背景图,避免出现黑屏。第二种Theme是把样式设置为透明,程序启动后不会黑屏而是整个透明了,等到界面初始化完才一次性显示出来。下面说说两种方式的优缺点:
•Theme1 程序启动快,界面先显示背景图,然后再刷新其他界面控件。给人刷新不同步感觉。
•Theme2 给人程序启动慢感觉,界面一次性刷出来,刷新同步。
 9
2、修改AndroidManifest.xml
为了使上面Theme生效,我们需要设置一些Activity的Theme

复制代码  代码如下:

<application
    android:allowBackup="true"
    android:icon="@drawable/ipod_icon"
    android:label="@string/app_name"
    android:launchMode="singleTask">
<!-- iPod主界面 -->
<activity
    android:name="com.apical.apicalipod.IPodMainActivity"
<!-- 使用上面定义的样式 mythou-->
    android:theme="@style/Theme.AppStartLoad"
    android:label="@string/app_name" >
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
//......
</application>

•可以在Activity里面增加上面自定义的样式。另外在Application里面增加也是可以的,而且是全局效果。
•自定义Theme放在 /res/values/styles.xml 里面。如果没有这个文件,自己添加一个即可。
•如果存在多个Activity切换,中间也可能会存在短暂黑屏问题。原因也是Activity启动的时候需要初始化加载数据,如果想避免这种情况,可以在你切换的Activity里面增加上面的样式。
•上面两种样式都可以避免黑屏。可以实际测试一下你的程序选择一种效果。
•这个只是把黑屏避免了,但是如果你程序初始化启动慢,还是会给人程序启动慢的感觉。需要自行优化程序初始化过程。

3、Theme属性详解

复制代码  代码如下:

android:theme="@android:style/Theme.Dialog" //Activity显示为对话框模式
android:theme="@android:style/Theme.NoTitleBar" //不显示应用程序标题栏
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" //不显示应用程序标题栏,并全屏
android:theme="Theme.Light " //背景为白色
android:theme="Theme.Light.NoTitleBar" //白色背景并无标题栏
android:theme="Theme.Light.NoTitleBar.Fullscreen" //白色背景,无标题栏,全屏
android:theme="Theme.Black" //背景黑色
android:theme="Theme.Black.NoTitleBar" //黑色背景并无标题栏
android:theme="Theme.Black.NoTitleBar.Fullscreen" //黑色背景,无标题栏,全屏
android:theme="Theme.Wallpaper" //用系统桌面为应用程序背景
android:theme="Theme.Wallpaper.NoTitleBar" //用系统桌面为应用程序背景,且无标题栏
android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen" //用系统桌面为应用程序背景,无标题栏,全屏
android:theme="Theme.Translucent" //透明背景
android:theme="Theme.Translucent.NoTitleBar" //透明背景并无标题
android:theme="Theme.Translucent.NoTitleBar.Fullscreen" //透明背景并无标题,全屏
android:theme="Theme.Panel " //面板风格显示
android:theme="Theme.Light.Panel" //平板风格显示

4、Theme和Style
Android里面除了Theme外还有Style,例如下面是Launcher里面配置workspace的一个Style

复制代码  代码如下:

<style name="WorkspaceIcon">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">match_parent</item>
        <item name="android:layout_gravity">center</item>
        <item name="android:gravity">center_horizontal</item>
        <item name="android:singleLine">true</item>
        <item name="android:ellipsize">marquee</item>
        <item name="android:textSize">12sp</item>
        <item name="android:textColor">#FFF</item>
        <item name="android:shadowRadius">2.0</item>
        <item name="android:shadowColor">#B0000000</item>
    </style>

Style可以理解为一组属性集合,方便不同的View设置使用,我们在View里面使用Style的时候,跟使用Theme是一样的应用方法。那么Style和Theme有什么区别?

下面列出两者区别:
•样式用在单独的View,如:Button、TextView等

•主题通过AndroidManifest.xml中的<application>和<activity>用在整个应用或者某个 Activity,主题对整个应用或某个Activity存在全局性影响。

•如果一个应用使用了主题,同时应用下的view也使用了样式,那么当主题与样式属性发生冲突时,样式的优先级高于主题。

上面就是通过Theme解决程序启动闪黑屏问题,并且讲解了Theme和Style,通过Theme配置,其实还可以做个欢迎页面。不过我们都希望程序启动速度越快越好,因此还是需要多多优化自己的程序。

Android 避免APP启动闪黑屏的解决办法相关推荐

  1. 【转】Android 避免APP启动闪黑屏(Theme和Style)

    前几天Boss就反应说,机器每次启动程序都会闪一下黑屏,这个客户不接受.没办法,只能想想怎么解决,最后找到了下面的方法.闪黑屏的原因主要是我们启动Activity的时候,需要跑完onCreate和on ...

  2. android启动画面白屏,Android app启动时黑屏或者白屏的原因及解决办法

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

  3. Android应用启动闪黑屏

    闪黑屏的原因主要是我们启动Activity的时候,需要跑完onCreate和onResume才会显示界面.也就是说需要处理一些数据后,才会显示.按照这种思路,是不是我把初始化的工作尽量减少就可以避免黑 ...

  4. 1.VMwareTools的安装,vmware启动的时候,虚拟机黑屏,解决办法

     1 选中虚拟机,右击,然后点击:安装Vmware-tool(最好是有网络的情况下安装) 2 将Vmware-tool的安装文件拷贝到临时目录下,截图如下: 3 解压VMwareTools-9.6 ...

  5. 计算机开机桌面黑屏怎么办,电脑启动后黑屏怎么解决

    黑屏是我们使用电脑过程中遇到的常见问题之一,但是万变不离其宗,无法就是硬件和软件问题,电脑启动后黑屏的原因一般就是软件问题了.如果是设置问题鼠标右键显示桌面就可以了.如果不能解决就来详细了解下面解决方 ...

  6. html5 拍照 苹果手机黑屏,苹果手机拍照黑屏怎么办?iphone拍照黑屏的解决办法...

    很多用户在使用iPhone相机时都遇到过打开相机黑屏的情况,今天教大家遇到这种情况后的解决方法,一起了解一下! iphone拍照黑屏的解决办法 常常遇到的情况时点击QQ或者微信的相机按钮进入相机,如下 ...

  7. 计算机显示器黑屏首先检查,蓝快干货 | 电脑黑屏的解决办法

    原标题:蓝快干货 | 电脑黑屏的解决办法 我们在日常工作中会突然遇到电脑黑屏的故障,这会让很多电脑小白措手不及,影响工作进度.今天小编就用通俗易懂的语言来给大家科普一下,电脑黑屏的快速解决办法,大家可 ...

  8. 虚拟机安装时黑屏的解决办法

    虚拟机安装时黑屏的解决办法 描述: 最近在VM安装一些虚拟系统,有在网上下载一些ubuntu以及Windows镜像系统,在安装ubuntu正常且可以启动,但在安装windows 7 以及windows ...

  9. MacOS 苹果系统下 OBS黑屏(屏幕录制黑屏)解决办法

    MacOS 苹果系统下 OBS黑屏(屏幕录制黑屏)解决办法 第一步: 打开「系统偏好设置」「安全性与隐私」,点击左下角的锁图标,输入密码解开锁定. 第二步: 在"屏幕录制"中勾选O ...

最新文章

  1. TCP/IP 笔记 1.3 IP:网际协议
  2. 线上直播丨KDD 2021预训练Workshop,谷歌MSRA等5位顶尖研究者参与研讨
  3. QT的QStackedWidget类的使用
  4. 服务器控件HtmlTable下控件赋值问题
  5. mysql新增范围之外数据_mysql第二天 数据的增删改查补充及外键
  6. 排序 -> 快速排序
  7. 疫情之下欧洲初创投资,德国竟成最大输家
  8. Django的rom
  9. 性能优化–查找和解决僵尸对象
  10. 金蝶k3服务器系统吗,金蝶k3能在云服务器上吗
  11. C++大法:举世闻名之BOOST大法精华浅析(三)内存管理库(小白piao分享)
  12. 电信ZNHG60光猫信息虚标
  13. slamugv小车使用说明--1材料准备
  14. Android用Canvas画钟表仪
  15. mysql保留小数位数函数
  16. 猕猴桃酵素的功效_过路老熊_新浪博客
  17. 《IT老外在中国》第29期:这位美籍华裔兜兜转转又回到了心心念念的故乡
  18. bcc云服务器远程,云服务器BCC操作操作手册.pdf
  19. SpringBoot发生404跳转404页面
  20. 你为什么不敢重构代码?

热门文章

  1. 电脑主屏幕黑屏但有计算机硬盘显示,显示器黑屏 但电脑一直在运行 诊断卡代码A2错误原因及解决方法...
  2. js判断是否是数字简单方法
  3. 01 【Vue简介 初识Vue 模板语法和数据绑定】
  4. 电脑屏幕显示变得又大又模糊,修改分辨率
  5. JAVA电商项目面试题(一)
  6. 智能手表UX开发的4条基本经验
  7. 漫画衣服褶皱怎么画?怎样才能画好漫画衣服褶皱?
  8. 使用python获取邮箱邮件
  9. 【C#+SQL Server】实现模仿QQ的交友软件 一:系统简介、功能展示与数据库设计(附源码和资源)
  10. 荣耀Magic人工智能手机发布,买不到不如选择荣耀8