1、产生原因

其实显示黑屏或者白屏实属正常,这是因为还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景。

示例:

\"Android

 

2、解决办法

通过设置设置Style

(1)设置背景图Theme

通过设置一张背景图。 当程序启动时,首先显示这张背景图,避免出现黑屏

<style name=\"AppTheme\" parent=\"Theme.AppCompat.Light.DarkActionBar\">
        <item name=\"android:screenOrientation\">portrait</item>
        <item name=\"android:windowBackground\">>@mipmap/splash</item>
        <item name=\"android:windowIsTranslucent\">true</item>
        <item name=\"android:windowNo \">true</item>
</style>

 

(2)设置透明Theme

通过把样式设置为透明,程序启动后不会黑屏而是整个透明了,等到界面初始化完才一次性显示出来

<style name=\"AppTheme\" parent=\"Theme.AppCompat.Light.DarkActionBar\">
        <item name=\"android:windowNo \">true</item>
        <item name=\"android:windowBackground\">@android:color/transparent</item>
        <item name=\"android:windowIsTranslucent\">true</item>
        <item name=\"android:screenOrientation\">portrait</item>
    </style>

两者对比:

  • Theme1 程序启动快,界面先显示背景图,然后再刷新其他界面控件。给人刷新不同步感觉。
  • Theme2 给人程序启动慢感觉,界面一次性刷出来,刷新同步。

 

(3)修改AndroidManifest.

<application
        android:name=\".App\"
        android:allowBackup=\"true\"
        android:icon=\"@mipmap/ic_launcher\"
        android:label=\"@string/app_name\"
        android:supportsRtl=\"true\">
        <activity android:name=\".MainActivity\"
         android:theme=\"@style/AppTheme\">
            <intent-filter>
                <action android:name=\"android.intent.action.MAIN\" />

                <category android:name=\"android.intent.category.LAUNCHER\" />
            </intent-filter>
        </activity>

    //......

</application>

解决后示例:

\"Android

 

3、常见的Theme主题

android:theme=\"@android:style/Theme.Dialog\" //Activity显示为对话框模式

android:theme=\"@android:style/Theme.No Bar\" //不显示应用程序标题栏

android:theme=\"@android:style/Theme.No Bar.Fullscreen\" //不显示应用程序标题栏,并全屏

android:theme=\"Theme.Light \" //背景为白色

android:theme=\"Theme.Light.No Bar\" //白色背景并无标题栏

android:theme=\"Theme.Light.No Bar.Fullscreen\" //白色背景,无标题栏,全屏

android:theme=\"Theme.Black\" //背景黑色

android:theme=\"Theme.Black.No Bar\" //黑色背景并无标题栏

android:theme=\"Theme.Black.No Bar.Fullscreen\" //黑色背景,无标题栏,全屏

android:theme=\"Theme.Wallpaper\" //用系统桌面为应用程序背景

android:theme=\"Theme.Wallpaper.No Bar\" //用系统桌面为应用程序背景,且无标题栏

android:theme=\"Theme.Wallpaper.No Bar.Fullscreen\" //用系统桌面为应用程序背景,无标题栏,全屏

android:theme=\"Theme.Translucent\" //透明背景

android:theme=\"Theme.Translucent.No Bar\" //透明背景并无标题

android:theme=\"Theme.Translucent.No Bar.Fullscreen\" //透明背景并无标题,全屏

android:theme=\"Theme.Panel \" //面板风格显示

android:theme=\"Theme.Light.Panel\" //平板风格显示
收藏 打印