android应用程序启动时短暂白屏或者黑屏的解决处理方案

时间:2024-04-06 22:20:08
 

android应用程序启动时短暂白屏或者黑屏的解决处理方案

标签: androidapp启动白屏splash页面白屏
2016-04-12 16:30 5123人阅读 评论(0) 收藏 举报

         最近在研究使用app的过程中发现有的app首次启动的时候会有短暂的白屏,而有些app则不会出现这样的情况.起初我以为是手机的问题.但是当我换了几个手机进行测试的时候仍然会出现这样的状况.当然出现白屏这样的效果肯定是不会给用户行云流水般的感觉了,接下来我们就来着手解决这样的问题.

        转载请标明出处:http://blog.csdn.NET/unreliable_narrator?viewmode=contents

         老规矩,文字的描述可能略显苍白,我们先来看看解决问题前后的效果对比.android应用程序启动时短暂白屏或者黑屏的解决处理方案

         处理前效果,我们可以明显的看到有短暂的白屏.

           android应用程序启动时短暂白屏或者黑屏的解决处理方案

        处理后效果:可以明显的看到基本解决了白屏的问题.

            android应用程序启动时短暂白屏或者黑屏的解决处理方案

        猜想可能是由于先加载窗体再加载activity的布局才引起这样的问题.

       解决的方式方式有两种.

      一种是自己定义theme,在values文件夹下面找到styles文件自己创建一个主题将background属性设置为我们需要的背景图片,然后在清单文件中设置启动的activity去使用该主题即可.

[html] view plain copy
  1. <resources>  
  2.   
  3.     <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">  
  4.         <!-- Customize your theme here. -->  
  5.         <item name="colorPrimary">@color/colorPrimary</item>  
  6.         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>  
  7.         <item name="colorAccent">@color/colorAccent</item>  
  8.     </style>  
  9.   
  10.     <style name="AppThemeTwo" parent="Theme.AppCompat.NoActionBar">  
  11.         <item name="android:windowBackground">@android:color/holo_red_light</item>  
  12.         <!-- Customize your theme here. -->  
  13.         <item name="colorPrimary">@color/colorPrimary</item>  
  14.         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>  
  15.         <item name="colorAccent">@color/colorAccent</item>  
  16.     </style>  
  17. </resources>  

[html] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest  
  3.     package="com.dapeng.laucherdemo"  
  4.     xmlns:android="http://schemas.android.com/apk/res/android">  
  5.   
  6.     <application  
  7.         android:allowBackup="true"  
  8.         android:icon="@mipmap/ic_launcher"  
  9.         android:label="@string/app_name"  
  10.         android:supportsRtl="true"  
  11.         android:theme="@style/AppTheme">  
  12.         <activity  
  13.             android:name=".MainActivity"  
  14.             android:theme="@style/AppThemeTwo"  
  15.             >  
  16.             <intent-filter>  
  17.                 <action android:name="android.intent.action.MAIN"/>  
  18.   
  19.                 <category android:name="android.intent.category.LAUNCHER"/>  
  20.             </intent-filter>  
  21.         </activity>  
  22.     </application>  
  23.   
  24. </manifest>  

第二种是直接将窗体的背景颜色设置为透明的.方法和上面的类似,

[html] view plain copy
  1. <resources>  
  2.   
  3.     <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">  
  4.         <!-- Customize your theme here. -->  
  5.         <item name="colorPrimary">@color/colorPrimary</item>  
  6.         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>  
  7.         <item name="colorAccent">@color/colorAccent</item>  
  8.     </style>  
  9.   
  10.     <style name="AppThemeTwo" parent="Theme.AppCompat.NoActionBar">  
  11.         <item name="android:windowBackground">@android:color/transparent</item>  
  12.         <!-- Customize your theme here. -->  
  13.         <item name="colorPrimary">@color/colorPrimary</item>  
  14.         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>  
  15.         <item name="colorAccent">@color/colorAccent</item>  
  16.     </style>  
  17. </resources>  

[html] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest  
  3.     package="com.dapeng.laucherdemo"  
  4.     xmlns:android="http://schemas.android.com/apk/res/android">  
  5.   
  6.     <application  
  7.         android:allowBackup="true"  
  8.         android:icon="@mipmap/ic_launcher"  
  9.         android:label="@string/app_name"  
  10.         android:supportsRtl="true"  
  11.         android:theme="@style/AppTheme">  
  12.         <activity  
  13.             android:name=".MainActivity"  
  14.             android:theme="@style/AppThemeTwo"  
  15.             >  
  16.             <intent-filter>  
  17.                 <action android:name="android.intent.action.MAIN"/>  
  18.   
  19.                 <category android:name="android.intent.category.LAUNCHER"/>  
  20.             </intent-filter>  
  21.         </activity>  
  22.     </application>  
  23.   
  24. </manifest>  

如此一来问题就迎刃而解了.