武汉android培训
达内武汉民大中心

15271940953

热门课程

Android 开发项目中APP启动优化

  • 时间:2018-02-28
  • 发布:武汉android培训
  • 来源:互联网

    2、Activity的onCreate流程,特别是UI的布局与渲染操作,如果布局过于复杂很可能导致严重的启动性能问题; 建议:Activity仅初始化那些立即需要的对象,xml布局减少冗余或嵌套布局。

<a style='color:blue' href='http://wh.android.tedu.cn'>武汉android培训</a>班

    优化APP启动速度意义重大,启动时间过长,可能会使用户直接卸载APP.
    优化方案
    优化方案主要是从主题切换的方向着手:
    直接干掉
    既然有这个Activity启动界面,那能不能直接不要这个呢,当然是可以: 定义一个style:
    <style name=“AppTheme.Launcher”> <!--关闭启动窗口--> <item name=“android:windowDisablePreview”>true</item> </style>
    只需要再启动页面引用:
    <activity android:name=“.MainActivity” android:label=“@string/app_name” android:theme=“@style/AppTheme.Launcher”> <intent-filter> <action android:name=“android.intent.action.MAIN”/> <category android:name=“android.intent.category.LAUNCHER”/> </intent-filter> </activity>
    最后在MainActivity恢复正常主题:
    public class MainActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(R.style.AppTheme); setContentView(R.layout.activity_main); } }
    这样启动APP,就没有白屏,但会出现点击桌面图标而半天没有反应的现象,显然不好,很多APP把这个闪屏当做一个广告、品牌宣传的页面。
    Material Design
    其实Google针对APP闪屏,在Material Design规范launch-screens,也给出了非常详细的设计定义,有两种方案:
    品牌展示
    屏幕提供短暂的品牌曝光,来看看如何实现的,定义一个style:
    <style name=“AppTheme.Launcher”> <item name=“android:windowBackground”>@drawable/branded_launch_screens</item> </style>
    drawable/branded_launch_screens
    <?xml version=“1.0” encoding=“utf-8”?> <layer-list xmlns:android=“http://schemas.android.com/apk/res/android” android:opacity=“opaque”> <!--黑色背景颜色--> <item android:drawable=“@android:color/black” /> <!-- 产品logo--> <item> <bitmap android:gravity=“center” android:src=“@mipmap/empty_image01” /> </item> <!-- 右上角的图标元素 --> <item> <bitmap android:gravity=“top|right” android:src=“@mipmap/github” /> </item> <!--最下面的文字--> <item android:bottom=“50dp”> <bitmap android:gravity=“bottom” android:src=“@mipmap/ic_launcher” /> </item> </layer-list>
    其中android:opacity=“opaque”参数是为了防止在启动的时候出现背景的闪烁。关于layer-list介绍,见博客:用layer-list实现图片旋转叠加、错位叠加、阴影、按钮指示灯http://www.cnblogs.com/tianzhijiexian/p/3889770.html ,也同样只需要再启动页面引用和最后在MainActivity恢复正常主题。
    或者
    <style name=“AppTheme.Launcher”> <item name=“android:windowFullscreen”>true</item> <item name=“android:windowBackground”>@mipmap/app_welcome</item> </style>
    这里 windowBackground 直接用图片替换,更加简单。
    主页预加载
    使用与主界面UI一致的占位内容,给用户感觉已经在加载中了,这里模拟了一个高度为25dp的状态栏和一个高度为56dp的标题栏,定义一个style:
    <style name=“AppTheme.Launcher”> <item name=“android:windowBackground”>@drawable/placeholder_ui</item> </style>
    drawable/placeholder_ui

    <?xml version=“1.0” encoding=“utf-8”?> <layer-list xmlns:android=“http://schemas.android.com/apk/res/android” android:opacity=“opaque”> <!--状态栏颜色--> <item android:drawable=“@color/colorPrimaryDark” /> <!--假装这里是个toolbar--> <item android:drawable=“@color/colorPrimary” android:top=“25dp” /> <!--状态栏25+toolbar56=距离top81--> <item android:drawable=“@android:color/white” android:top=“81dp” /> </layer-list>

    本篇文章是有武汉android培训班为您呈现,希望给您带来更多更好的文章

    更多武汉android培训机构相关资讯,请扫描下方二维码

武汉android培训机构
上一篇:什么是APP启动屏幕?
下一篇:Android手机如何换肤原理

国产android手机系统哪家强?

Android手机如何换肤原理

Android 开发项目中APP启动优化

什么是APP启动屏幕?

选择城市和中心
贵州省

广西省

海南省