app启动优化和启动页适配方案

2020-03-10  本文已影响0人  nade_s

app启动优化和启动页适配方案

写在前面,关于启动页适配方案,百度了一下网上的解决办法,发现很多人使用xml布局文件和启动大图的方式进行启动页适配,
还有进行了宽高比进行多图适配,我反复实验后,发现这两种方式并不是很好,大部分主流机型都存在拉伸和变形的情况。
我就写下我的方案,供大家讨论。

app启动优化,目的是喂了提升用户体验。防止出现启动慢,启动白屏问题。
一般在启动app时,我们会在application中初始化一些工具和加载大量的资源。
这就会导致app启动速度慢,启动速度会直接导致启动白屏的时间。
反映给客户时,会造成很不好的视觉体验。
本文直接说明我的优化方案。
方案分为两步,一是加载优化,二是视觉优化。

一:加载优化:
app内部包含了很多的资源,这些事必须加载的,此处不做过多的描述,重点放在初始化工具上。
在application的oncreate()方法中,不做初始化处理,尽可能的在可视化界面处理初始化工作。
例如启动页startActivity的oncreate()方法中进行初始化工作。这会直接提升application 的启动速度。
因为application的oncreate()方法是创建进程的,过多的进行初始化或者加载函数,就会增加耗时。

public class App extends BaseApplication {

@Override
public void onCreate() {
    super.onCreate();
    
}

}

二 视觉优化:

视觉优化,如同字面意思,目的是为了瞬启动。当然做到瞬启动是不可能的,因为app内部不可能做到一点资源都没有,
就算没有资源,app也需要创建进程,这也需要时间。我们只能努力优化启动时间,做到快速启动。

以startActivity(启动页)为例

首先绘制一个图层start_xml内容如下:

<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="@color/color_FFFFFF"/>
</shape>
</item>
<item android:top="@dimen/dp_160">
<bitmap android:src="@mipmap/startlogo"
android:gravity="top|center_horizontal"/>
</item>
<item android:bottom="@dimen/dp_68">
<bitmap android:src="@mipmap/starttxt"
android:gravity="bottom|center_horizontal"/>
</item>

</layer-list>

这是启动页效果,具体以你设计为准。

自定义主题,给startActivity使用:
<style name="AppTheme.Launcher">
<item name="android:windowBackground">@drawable/start_xml</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowContentOverlay">@null</item>
</style>

然后是startActivity布局文件activity_start xml文件

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/color_transparent"
tools:ignore="ResourceName"/>
这里什么都没有,为节省activity ui绘制时间.

下面是使用startActivity:

<activity
android:theme="@style/AppTheme.Launcher"
android:configChanges="orientation|keyboardHidden|screenSize"
android:resizeableActivity="true"
android:screenOrientation="portrait"
android:name=".ui.StartActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

说一下这样使用的好处。适配率更高,能节省资源空间,缩小apk体积。

本方案能很好的适配大部分机型,例如4.0-10.0的都能适配,并保证图片和页面无变形拉伸。

本文完,欢迎评论探讨。

上一篇 下一篇

猜你喜欢

热点阅读