Android 添加启动页 解决应用启动时白(黑)屏问题

实现一个启动页面(Splash Screen)

实现一个启动页面可能和你想象的有点不一样。这个启动的页面必须是立即准备好的页面,即使是在Activity中加载一个xml页面也要是立刻加载好的。
所以,一般不会用layout来当启动页面。取而代之的是用一个颜色作为你的Activity的主题背景,接下来,在你的res/drawable文件夹下创建一个XML的drawable。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:drawable="@color/gray"/>

    <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/ic_launcher"/>
    </item>

</layer-list>

这里,设置的是背景颜色和一张居中的图片。当然也可以直接是一张存在drawable中的图片,如果ui有提供的话,最好是点9图,不然适配可能会不好

然后,在主题中,将这个设置为Activity的背景。打开你的styles.xml然后为你的Activity添加一个新的主题。

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/background_splash</item>
    </style>

</resources>

在你新的SplashTheme中,设置窗口背景属性为我们之前写的XML的drawable,就是layer-list的xml。然后在你的AndroidManifest.xml中配置一下就好了。

<activity
    android:name=".SplashActivity"
    android:theme="@style/SplashTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

最后,在SplashActivity.class文件中,编码直接进入主页面就行了。

public class SplashActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
    }
}

这里发现你并没有为Activity设置layout视图,视图来自于主题!所以,这应该是最快的方法启动页面了(相比较加载layout视图)。如果你一定要通过加载layout来显示页面,可能你初始化完了才跳出页面,这时已经有点迟了,所以,你应该考虑用极短的时间来显示加载layout视图。

当然还有一种方法就是我直接在主页面设置,就省去了一个界面,还有就是有时候我们希望启动页全屏显示,那么我们只要在onCreate中设置以下代码即可

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

可是今天发现这样设置并没有起作用,最后还是选择在style中设置

style name="SplashTheme" parent="android:style/Theme.NoTitleBar.Fullscreen">
        <item name="android:windowBackground">@drawable/background_splash</item>
    </style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嘟嘟嘟~~~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值