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

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

本文完,欢迎评论探讨。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.操作系统启动流程和Launcher点击事件流程2.启动方式以及首次启动3.黑白屏优化4.启动时间内代码优化 操...
    ArcherZang阅读 5,046评论 1 11
  • 应用启动类型 冷启动 冷启动指的是:用户在 Launcher 程序里点击应用图标时,会通知ActivityMana...
    JunL_Dev阅读 5,853评论 4 5
  • 前言目前市面上的刘海屏和水滴屏手机越来越多了,颜值方面是因人而异,有的人觉得很好看,也有人觉得丑爆了,我个人觉得是...
    飘逸解构阅读 12,296评论 6 42
  • 你曾说,漫步在洒满落叶的街道,沙沙声能填满你的心扉。 忘了从什么时候开始,小鹿爱上了走在秋天的街道,看着落叶...
    卿玖玖玖阅读 2,806评论 0 4
  • 问题源于一个很奇怪的bug:Android 9.0机型上,直播间评论列表刷新后的emoji符号会乱码,在iphon...
    虚假雨阅读 5,522评论 0 1

友情链接更多精彩内容