android开发主界面 WindowBackGround 添加启动页显示解决白屏问题

20 篇文章 0 订阅
18 篇文章 0 订阅

以下只是我解决问题过程中的一点点个人总结,点滴积累,贵在坚持,感谢你的阅览!


前言:为解决应用启动白屏和黑屏问题,设置了 windowDisablePreview 属性为 true ,导致应用从启动到显示 view 较慢,产品要求加一个启动页,快速响应桌面图标点击事件;下面是添加启动页的方法;


该方法存在一个问题,就是横屏状态启动竖屏应用或者竖屏状态启动横屏应用时,该方法失效,目前我还不知道解决方案,初步分析是横竖屏切换导致 WindowBackGround 属性设置失效,知道解决方法的欢迎留言告知,不胜感激!


方法有两种,分别是:

1. 新建一个启动页 Activity 作为应用入口,启动后立马显示启动页并自动跳转主界面;

2. 直接在主界面添加 WindowBackGround 显示启动页;


在这里我使用的是方法2,方法一只是在方法二的基础上,换了一个 activity 来实现并多了一个自动跳转而已,完全可以复制粘贴,实现起来很简单!

步骤:

1. 添加启动页图片到资源目录,在这里我添加的是一张图片,命名为 start_activity_layout_bg;

2. 新建 style,设置 windowBackground 为上述图片;

<style name="main_activity_style" parent="@android:style/Theme.Light.NoTitleBar.Fullscreen">
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowDisablePreview">false</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowBackground">@drawable/start_activity_layout_bg</item>
        <item name="android:background">@null</item>
    </style>

3. 在 AndroidManifest 中主界面 Activity 的 theme 设置为该主题;

<activity
            android:name="com.text.ok100.MainActivity"
	        android:launchMode="singleTask"
            android:theme="@style/main_activity_style" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data
                android:name="AppTab"
                android:value="NurserySchool/XiGuanAnQuan" >
            </meta-data>
        </activity>

4. 经过上述操作,启动时就会即时响应桌面图标点击事件,但是还要做下一步,在主界面 Activity 的 onCreate() 的 setContentView() 之前设置 windowBackground 为空或者为透明,否则的话,整个主界面 Activity 就会多一层全屏 view,容易导致过度绘制,代码如下:

@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.getWindow().getDecorView().setBackground(null);
		setContentView(R.layout.activity_main);
	}


最后,如果你要用方法 1 的话,只需要将上述操作替换到你的启动页界面,再将启动页 activity 设置为桌面入口 activity ,然后加一个自动跳转即可!



1. 在Android Studio中创建一个新项目或打开现有项目。 2. 在res目录下创建一个新的drawable文件夹,然后在该文件夹中添加一张启动界面图片。 3. 在res目录下创建一个新的layout文件夹,然后在该文件夹中创建一个新的布局文件,用于显示启动界面。 4. 打开AndroidManifest.xml文件,在<application>标签中添加以下属性: ``` android:theme="@style/AppTheme.NoActionBar" ``` 这将指定应用程序的题为没有ActionBar的题,以便启动界面可以全屏显示。 5. 在res目录下创建一个新的values文件夹,然后在该文件夹中创建一个新的styles.xml文件。 6. 在styles.xml文件中添加以下样式: ``` <style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowBackground">@drawable/splash_screen</item> </style> ``` 这将指定启动界面题,其中windowBackground属性将指定启动界面的背景图片。 7. 在AndroidManifest.xml文件中,在<activity>标签中添加以下属性: ``` android:theme="@style/SplashTheme" ``` 这将指定应用程序的启动Activity使用启动界面题。 8. 在启动Activity的Java类中,添加以下代码: ``` @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = new Intent(this, MainActivity.class); startActivity(intent); finish(); } ``` 这将在启动Activity中立即启动应用程序的Activity,并关闭启动Activity。 9. 运行应用程序,你应该能够看到启动界面显示,然后立即跳转到应用程序的Activity。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

却染人间愁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值