Android学习之实现启动页面


实现一个启动页面

在res/drawable下,创建一个xml文件,即为启动页面的效果:

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

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

这里关于layer-list的使用可以移步:

例子使用的启动页为两层,第一层为程序的主色调,第二层为程序的图标,并且位于中间位置;

绑定到活动

在values/style.xml内新建一个主题:

<resources>
        <!--设置启动页的主题,防止黑屏(闪黑)或者白屏(闪白)-->
    <style name="SplashTheme" parent="AppTheme">
        <!--去掉windowTitle-->
        <item name="windowNoTitle">true</item>
        <!--设置全屏状态-->
        <item name="android:windowFullscreen">true</item>
        <!--设置背景图片-->
        <item name="android:windowBackground">@drawable/splash</item>
        <!--设置内容覆盖-->
        <item name="android:windowContentOverlay">@null</item>
    </style>

<resources>

主题选择继承Theme.AppCompat.Light.NoActionBar,并且指定背景为刚才创建的界面;

新建一个SplashActivity活动,在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代码,设置启动逻辑:

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

如果页面跳转过快,可以设置程序休眠:

Thread mythread = new Thread(){
    @Override
    public void run() {
        try {
            sleep(1500);
            Intent intent = new Intent(getApplicationContext(),MainActivity.class);
            startActivity(intent);
            finish();
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
};
mythread.start();

到这里就大功告成了:


文章作者: Mahoo Huang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Mahoo Huang !
评论
 上一篇
Android学习之MD设计模式 Android学习之MD设计模式
添加库依赖implementation 'com.android.support:design:28.0.0' Snackbar控件提供一个可供响应的通知提醒 Snackbar.make(view,"这是一个Snackbar",Snackb
2019-08-15
下一篇 
Android学习之掉坑记录 Android学习之掉坑记录
Android8.0及以上版本自定义广播无法接收问题今天在学习广播过程中发现,自定义广播无效,由于使用的学习参考书是基于Android7.0的,所以,很自然的想到了可能由于版本问题,网上一查,果然。 原因:Android8在静态广播的使用上
2019-07-25
  目录