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的都能适配,并保证图片和页面无变形拉伸。

本文完,欢迎评论探讨。

发布了75 篇原创文章 · 获赞 81 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/Naide_S/article/details/104781063