给app添加启动过度画面,优化跟手性

2019-07-27  本文已影响0人  金卡戴珊ugly

这个过度页面需设置在activity的theme属性background。第一步添加一个splashActivity

public class SplashActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                startActivity(new Intent(SplashActivity.this, MainActivity.class));
                finish();
            }
        },3000);
    }
}

其次,添加主题

<activity android:name=".SplashActivity" android:theme="@style/splahTheme">

主题style.xml

<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="splahTheme" parent="AppTheme">
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowBackground">@drawable/splash_layer</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
    </style>

splash_layer.xml

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

至此结束,启动后会显示splash_layer的画面,然后进入mainactivity。
这个属于app启动优化的一个细节。最近在做界面性能优化时用到traceview这个工具。
xml在inflate时,受节点个数和层级数影响比较大。复杂的页面可能需要计算很久。使用viewstub可以起到优化作用。图片加载也可以移到代码中执行。而不是在xml中设置。

2019年11月21日更新:layer是不支持文字的,可以在SplashActivity中插入一个layout,因为布局是透明的,所以会盖在layer上面。实现了text的插入。

上一篇 下一篇

猜你喜欢

热点阅读