冷启动时间是指当用户点击你的app那一刻到系统调用Activity.onCreate()之间的时间段。在这个时间段内,WindowManager会先加载app主题样式中的windowBackground做为app的预览元素,然后再真正去加载activity的layout布局

冷启动时间优化

知道了Android冷启动时间的原理之后,就可以通过一些小技巧来对冷启动时间进行优化,从而让你app加载变得”快“一些(视觉体验上的快)。我们可制作一个启动Activity的背景样式的.9图片,然后把这个.9图片做为windowBackground。

这里推荐使用 MaterialColdStart 这个库来制作我们.9图片。首先git clone https://github.com/DreaminginCodeZH/MaterialColdStart

由于该库中引用了子模块 AndroidSVGScripts, 所以我们需要把该子模块也update下来,否则无法运行。但是作者定义该子模块的时候使用了ssh协议,所以会导致我们无法update,这里我们要先修改.gitmodules文件将里面所有的https://github.com/就可以了,然后执行git submodule init 和 git submodule update命令就可在把子模块update下来了

在生成.9图片之前,我们还需要根据自己的项目修改生成.9图片的配置文件,打开colors.conf文件,可以配置statusbar、actionbar、background的颜色等,修改raw-xxx目录下的window_background_statusbar_toolbar_tab.9.shsvg.conf文件可以配置statusbar、actionbar的高度等

最后执行./gen-png.sh命令,就可以在gen目录下生成我们所需的.9图片了

图片制作好之后,我们就可以用它做为app冷启动阶段的预览元素,如下设置:为启动的Activity自定义一个Theme

@drawable/window_background_statusbar_toolbar_tab

将新的Theme应用到设置到AndroidManifest.xml中

android:name=".MainActivity"

android:theme="@style/AppTheme.Launcher">

由于给MainActivity设置了一个新的Theme,这样做会覆盖原来的Theme,所以在MainActivity中需要设置回原来的Themepublic class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

// Make sure this line comes before calling super.onCreate().

setTheme(R.style.AppTheme);

super.onCreate(savedInstanceState);

}

}

效果预览

第一张是启用了冷启动优化,第二张是没有启用冷启动优化

android动态设置冷启动图片拉伸变形,Android冷启动时间优化相关推荐

  1. android动态设置maxWidth,如何使用android:maxWidth?

    I want to set a maximum width of an edit box. 在你的例子中: android:layout_width="fill_parent" a ...

  2. android 动态设置style属性值,android中的style属性值,以及一些预定义样式

    Android平台定义的主题样式:android:theme="@android:style/Theme.Dialog" // 将一个Activity显示为对话框模式 androi ...

  3. 如何在android中设置背景图片,在Android中设置窗口背景图

    Android窗口管理 在整个控件树的最顶端,是一个逻辑的树顶,ViewParent,在源码中的实现是ViewRoot(ViewRoot extends Handler implements View ...

  4. android 动态设置padding,Android动态设置控件大小以及设定margin以及padding值

    http://www.aichengxu.com/Java/73893.htm Android动态设置控件大小以及设定margin以及padding值,有需要的朋友可以参考下. 一.概述 在andro ...

  5. android 动态改变语言,android动态设置app当前运行语言的方法

    android开发中有时候碰到切换语言的需求,这时候需要通过代码动态改变当前运行语言. package com.example.androidtest; import java.util.Locale ...

  6. Android如何设置按钮图片(控件图片)大小自适应

    Android如何设置按钮图片(控件图片)大小自适应 在你的button中放入图片:drawble属性,你可以选择它的位置上下左右, 如何让图片自适应? 把图片放入res-drawable-mipma ...

  7. Android Activity 设置背景图片

    设置Activity图片背景 Android(Activity)设置背景图片方法: xml布局中用andriod:background = "@drawable/bgimage"或 ...

  8. Android 动态设置宽高

    Android 动态设置宽高 val params: FrameLayout.LayoutParams = view?.layoutParams as FrameLayout.LayoutParams ...

  9. android 动态设边距,在代码中动态设置页边距 - android

    我有一个只包含ScrollView和TableLayout的活动.在我的代码我加入tablerows,一切工作正常,除了利润 - 它不工作(没有任何反应),下面是代码:在代码中动态设置页边距 - an ...

最新文章

  1. Linux7 CENTOS7修改root密码
  2. 卷积神经网络数学原理解析
  3. numpy amin amax
  4. tensorflow命令行安装失败_2019-1 强化学习入坑记之ancanda安装
  5. 安卓短信加密_发短信控制车辆!苹果发布ios14,手机可作车钥匙
  6. 基于DBUtils实现数据库连接池
  7. win7连接sftp_SFTP远程连接服务器上传下载文件-vs2013项目实例
  8. 网站优化之Ajax优化及相关工具
  9. nvidia的jetson系列的方案_NVIDIA Jetson Xavier NX开发者套件主要应用于自主机器边缘计算产品系列...
  10. 微信小程序在当前页面设置其他页面的数据
  11. 深度学习(七十四)半监督Mean teachers
  12. HTML5-A*寻路算法2
  13. Redis面试题及分布式集群
  14. 记录——《C Primer Plus (第五版)》第八章编程练习第八题
  15. 《ANSYS Workbench 14有限元分析自学手册》——1.3 ANSYS 14的界面
  16. SpringBoot中@Email报错解决
  17. linux 实用命令 —— cut、tr、sort、touch
  18. 配置ssh免密码登录
  19. 移动硬盘弹出文件或目录损坏且无法读取解决办法
  20. python绘制黑白棋盘_生成黑白棋盘标定图和单目相机标定(python+opencv实现)

热门文章

  1. 服务器上装centos系统花屏,CentOS系统如何解决鼠标花屏的问题
  2. 坐标系转换公式_【技术】西安80坐标与地方坐标系的转换方法技巧
  3. c++ 使用 math库笔记
  4. qthread destroyed while thread is still running
  5. pytorch mseloss测试
  6. 九丶青龙运行聚看点教程
  7. Cissp-【第1章 安全和风险管理】-2020-12-03(1页-32页)
  8. 三、MySql查询语句执行的特征
  9. 天润融通java面试_【天润融通面试|面试题】-看准网
  10. java调用存储过程 oracle_java调用oracle存储过程