优雅的设计启动页

作者: A_si | 来源:发表于2020-02-07 23:38 被阅读0次

设计一个启动页的两种方式

app 越来越复杂,主页启动越来越耗时,并且往往需要预加载数据,这时候先展示一个启动页就显得十分有必要了。流行的 app 一般都采用这种做法。

我们知道,如果第一屏启动的慢,那么会默认展示一个黑屏的缺省页,这个黑色是默认的 windowBackground 的颜色,许多启动优化的操作里,会修改 windowBackground 默认展示一张启动图片。

更改启动背景

为了不和默认主题混淆,首先需要声明一个启动主题,只设置给启动页:

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    <!--    启动页主题-->
    <style name="AppTheme.Splash" parent="AppTheme">
        <item name="android:windowBackground">@drawable/splash_drawable</item>
    </style>

启动页一般是显示一个 logo ,下面使用 layer-list 描绘出启动页布局 splash_drawable :

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

然后设置给主页:

        <activity
            android:name=".MainActivity"
            android:theme="@style/AppTheme.Splash">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

启动应用,会看到先看到 splash_drawable 而不是原来默认的黑屏 ,但是 MainActivity 的 背景也和 splash_drawable 一样了。 因为窗口背景被设置成 splash_drawable ,通过 setContentView() 设置的布局都会在 这个背景上绘制,所以我们需要在 setContentView() 把主题设置为默认的:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setTheme(R.style.AppTheme)
        setContentView(R.layout.activity_splash)
    }
}
Screenshot_1578046141.png

设置启动页

上面的方法适合简单的静态的启动页,但是也有许多 app 会加上倒计时或者广告,那么只改启动背景就不能实现了。这是个需要一个单独的 activity 来实现:

class SplashActivity : AppCompatActivity() {

    /**
     * CountDownTimer 实现倒计时
     */
    private val countDownTimer = object : CountDownTimer(3000, 1000) {
        override fun onFinish() {
            Intent(this@SplashActivity, MainActivity::class.java).also {
                startActivity(it)
            }
        }

        override fun onTick(millisUntilFinished: Long) {
            (millisUntilFinished / 1000).toString().let {
                tvCountDown.text = it
            }
        }
    };


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setTheme(R.style.AppTheme)
        setContentView(R.layout.activity_splash)
        countDownTimer.start()
    }
}

这是一个3秒倒计时的启动页,3秒后跳转主页。当然别忘记在页面 destroy 的时候取消倒计时防止内存泄漏。

相关文章

  • 优雅的设计启动页

    设计一个启动页的两种方式 app 越来越复杂,主页启动越来越耗时,并且往往需要预加载数据,这时候先展示一个启动页就...

  • 如何优雅的设计App启动页

    好久不见,由于换了城市换了工作,两个月零五天没有发布文章,自责加愧疚加难为情,真心的,不要笑。我会反省,之后会定期...

  • 产品经理如何设计APP启动页

    本文大纲:1)APP启动页的设计初衷;2)APP启动页的分类;3)APP启动页的设计方法和原则 1 为什么要做启动...

  • 启动页和引导页(笔记)

    整理来源: 1、[系列]APP设计之一:启动页 APP设计之启动页.闪屏.mmap_微盘下载 2、移动端引导设计技...

  • Android 优雅的启动页方案

    App的启动页非常的常见,几乎现在所有的APP都会有吧~实现的方式也各种各样,那在这里我就记录一下我的实现方案,方...

  • APP启动页设计

    一、启动页的意义 即时启动(Start Instantly)我们通常认为用户不会花超过一两分钟去评价一款新应用。当...

  • APP设计尺寸那些事!

    IOS 设计尺寸 桌面图标导出尺寸 上传AppStore所需尺寸 启动页/引导页 导出尺寸 Android 设计尺...

  • 启动页动画设计

    1.飞信视频v2.0版本启动页首页动画设计 2.飞信视频v2.1版本启动页动画设计

  • iOS 启动页设置

    iOS设计启动页,有几种表现形式,下面我自己总结了五种常见的启动页设置方式: 1.系统自带的启动功能(Launch...

  • 启动体验设计-闪屏,启动页,引导页

    冷启动(cold start) 冷启动是指应用尚未运行,系统创建进程并初始化应用。 热启动是指应用已经运行但是在后...

网友评论

    本文标题:优雅的设计启动页

    本文链接:https://www.haomeiwen.com/subject/bkvvrctx.html