设计Android启动页

Android启动页一般来说是全屏的,而且需要快速显示,那么就需要处理这两方面。

先来看全屏的设置,样式中的设置需要设置全屏的一些属性

    <style name="FullScreenTheme" parent="BaseTheme">
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item>
        <item name="windowActionBar">false</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowIsTranslucent">false</item>
        <!-- api 19添加,使导航栏透明-->
        <item name="android:windowTranslucentNavigation">true</item> 
    </style>

主要是windowFullscreen,windowNoTitle这两个属性,但是只设置样式还不够,还需要在代码中设置全屏,主要代码如下

        mUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
                View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
                View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
                View.SYSTEM_UI_FLAG_FULLSCREEN;


        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            mUiVisibility = mUiVisibility | View.SYSTEM_UI_FLAG_IMMERSIVE;
        }
        getWindow().getDecorView().setSystemUiVisibility(mUiVisibility);

然后来看启动页的背景设置,Android启动有冷启动(进程不存在),热启动之分(进程已创建),当热启动时不会重建Application,界面显示比较快;冷启动就比较慢,需要初始化Application,默认显示的是启动页背景,Application初始化完成才会初始化启动页。一般有两种方式,一是设置启动页背景透明,冷启动时不会显示一个白屏的背景,启动页初始化后显示启动页的页面,但是如果初始化比较慢的话会好些启动无效一样。二是设置启动页的背景为自定义图片,这样一开始启动时就显示背景,好像启动很快。但是因为每种机型分辨率不同,如果是设置背景为图片可能为变形,所以需要自定义这个背景。常用的方法是自定义一个xml,使用layer-list的层级方式显示整个背景,除了背景图,其他图片不会变形,bg_splash.xml代码如下

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <solid android:color="@color/white" />
        </shape>
    </item>
    <item
        android:gravity="top|center_horizontal"
        android:top="300dp">
        <bitmap
            android:dither="true"
            android:filter="true"
            android:gravity="top|center_horizontal"
            android:src="@drawable/splash_center" />
    </item>
    <item
        android:bottom="60dp"
        android:gravity="bottom|center_horizontal">
        <bitmap
            android:dither="true"
            android:filter="true"
            android:gravity="bottom|center_horizontal"
            android:src="@drawable/splash_logo" />
    </item>
</layer-list>

其中splash_center,splash_logo分别是两张启动页中的切图,如果是1080p的设计稿切图放到drawable-xxhdpi中。

这样启动页大致完成了,不会变形,只是平板可能显示比较小。参考代码链接https://github.com/jklwan/NoteApplication/blob/master/app/src/main/java/com/chends/note/SplashActivity.java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值