给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的插入。