Android 启动APP时黑屏白屏的三个解决方案

Android 启动APP时黑屏白屏的三个解决方案,第1张

概述你会很奇怪,为什么有些app启动时,会出现一会儿的黑屏或者白屏才进入Activity的界面显示,但是有些app却不会如QQ手机端,的确这里要做处理一下。这里先了解一下为什么会出现这样的现象,其实很简单

你会很奇怪,为什么有些app启动时,会出现一会儿的黑屏或者白屏才进入Activity的界面显示,但是有些app却不会如QQ手机端,的确这里要做处理一下。这里先了解一下为什么会出现这样的现象,其实很简单,简历一个简单的例子就可以理解了。

其实,黑屏或者白屏这里并不是不正常,而是还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景。代码如下,可以自己写个小demo就理解了。

	@OverrIDe	protected voID onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		// 注意:添加3秒睡眠,以确保黑屏一会儿的效果明显,在项目应用要去掉这3秒睡眠		try {			Thread.sleep(3000);		} catch (InterruptedException e) {			e.printstacktrace();		}		// 在这里之前,黑屏或者白屏都是window的背景颜色,是窗口背景,还没到界面的布局呢,要执行setContentVIEw后才显示布局		setContentVIEw(R.layout.activity_launcher);	}

那window窗口背景在那里提供呢?在提供theme里面,如下提供的是白色背景,那就是启动时白屏一会儿的颜色设置。

    <!-- Application theme. -->    <style name="Apptheme" parent="AppBasetheme">        <item name="androID:windowNoTitle">true</item>        <item name="androID:windowBackground">@color/white</item>        <!-- All customizations that are NOT specific to a particular API-level can go here. -->    </style>

所以,在theme设置windowBackground就可以解决启动时白屏黑屏一会儿了,下面提供三种解决方案:

一、提供.png背景图

提供背景图是解决的一个方法,但是要适配各种屏幕,提供很多张图片。除非图片非常复杂只能用背景图了就用这种方法吧,否则个人不建议。

二、提供.9.png(NinePatch)背景图片

如果图片不是很复杂,可以做成NinePatch图片,那就直接制作NinePatch图片,提供一张就可以适配任何手机,何乐而不为呢。

三、使用Layout-List制作背景图片

如果可以使用这种方式,推荐使用这种Layout-List制作背景图片。前2种都是使用图片占用内存啊,使用Layout-List比较省内存,做出app也不会说因为图片多体积变大吧。

 下面给出代码。

LaunchActivity为启动界面停留3秒后跳转到主页面MainActivity,为了达到显示黑屏白屏的效果更明显,在setContentVIEw之前线程睡眠3秒。

public class LauncherActivity extends Activity {	public final int MSG_FINISH_LAUNCHERACTIVITY = 500;		public Handler mHandler = new Handler(){		public voID handleMessage(Message msg) {			switch (msg.what) {			case MSG_FINISH_LAUNCHERACTIVITY:				//跳转到MainActivity,并结束当前的LauncherActivity				Intent intent = new Intent(LauncherActivity.this,MainActivity.class);				startActivity(intent);				finish();				break;			default:				break;			}		};	};	@OverrIDe	protected voID onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		// 不显示系统的标题栏,保证windowBackground和界面activity_main的大小一样,显示在屏幕不会有错位(去掉这一行试试就知道效果了)		getwindow().setFlags(WindowManager.LayoutParams.FLAG_FulLSCREEN,WindowManager.LayoutParams.FLAG_FulLSCREEN);				// 注意:添加3秒睡眠,以确保黑屏一会儿的效果明显,在项目应用要去掉这3秒睡眠		try {			Thread.sleep(3000);		} catch (InterruptedException e) {			e.printstacktrace();		}				setContentVIEw(R.layout.activity_launcher);				// 停留3秒后发送消息,跳转到MainActivity		mHandler.sendEmptyMessageDelayed(MSG_FINISH_LAUNCHERACTIVITY,3000);	}}

activity_launcher.xml布局文件,很简单,要记住这里的linearLayout使用的背景是layout_List_start_pic,跟主题theme使用一样的背景,这样就消除了背景不一样的效果。这里要自己试试才知道这样做的好处和效果。

<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="fill_parent"    androID:layout_height="fill_parent"    androID:background="@drawable/layout_List_start_pic" >    <TextVIEw        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:textcolor="#ffffff"        androID:text="@string/hello_world" /></linearLayout>

AndroIDManifest.xml,这里注意application使用的theme是Apptheme,而LauncherActivity使用的主题是StartApptheme。这样做的效果是只要LauncherActivity使用StartApptheme主题,其他Activity都是用Apptheme主题哦。

<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID"    package="com.example.launcheractivity"    androID:versionCode="1"    androID:versionname="1.0" >    <uses-sdk        androID:minSdkVersion="8"        androID:targetSdkVersion="18" />    <application        androID:allowBackup="true"        androID:icon="@drawable/ic_launcher"        androID:label="@string/app_name"        androID:theme="@style/Apptheme" >        <activity            androID:name=".LauncherActivity"            androID:label="@string/app_name"            androID:theme="@style/StartApptheme" >            <intent-filter>                <action androID:name="androID.intent.action.MAIN" />                <category androID:name="androID.intent.category.LAUNCHER" />            </intent-filter>        </activity>                <activity androID:name=".MainActivity"></activity>    </application></manifest>

styles.xml,2个主题设置

<resources xmlns:androID="http://schemas.androID.com/apk/res/androID">    <!--        Base application theme,dependent on API level. This theme is replaced        by AppBasetheme from res/values-vXX/styles.xml on newer devices.    -->    <style name="AppBasetheme" parent="androID:theme.light.NoTitlebar">        <!--            theme customizations available in newer API levels can go in            res/values-vXX/styles.xml,while customizations related to            backward-compatibility can go here.        -->    </style>    <!-- Application theme. -->    <style name="Apptheme" parent="AppBasetheme">        <item name="androID:windowNoTitle">true</item>        <item name="androID:windowBackground">@color/white</item>        <!-- All customizations that are NOT specific to a particular API-level can go here. -->    </style>    <style name="StartApptheme" parent="AppBasetheme">        <item name="androID:windowNoTitle">true</item>        <item name="androID:windowBackground">@drawable/layout_List_start_pic</item>        <!-- All customizations that are NOT specific to a particular API-level can go here. -->    </style></resources>

layout_List_start_pic.xml 启动页面使用这个作为背景图片

<?xml version="1.0" enCoding="utf-8"?><@R_615_3419@ xmlns:androID="http://schemas.androID.com/apk/res/androID" >    <!-- 设置整个屏幕背景为白色 -->    <item >        <color androID:color="@color/white"/>    </item>    <!-- 中间logo -->    <item >        <bitmap            androID:gravity="center"            androID:src="@drawable/ic_launcher" />    </item>    <!-- 底部图表 -->    <item androID:bottom="10dp">        <bitmap            androID:gravity="bottom|center_horizontal"            androID:src="@drawable/copyright" />    </item></@R_615_3419@>

还有一张图片copyright.png

好了现在提供下效果图吧

启动时,黑屏白屏改造成这图片样子,哈哈~

启动完成后加装的LauncherActivity界面

调整到MainActivity界面

 就这样了,本来想给gif动画的,用微信拍下来,澳澳不知道怎么发到电脑呜呜~~~后来才知道可以发到网页微信。。。

 下载链接迟点发上来,哎呀妈的,要睡觉了~~·~~

若本文对你有帮助请点点赞支持,有疑问请留言共同探讨~

本文链接:http://www.cnblogs.com/liqw/p/4263418.html

下载地址:http://download.csdn.net/detail/lqw770737185/8411705

总结

以上是内存溢出为你收集整理的Android 启动APP时黑屏白屏的三个解决方案全部内容,希望文章能够帮你解决Android 启动APP时黑屏白屏的三个解决方案所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1119274.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存