一、Android UI渲染机制

人眼所能感觉到流畅的画面,最佳帧数为60帧每秒。在Android中,系统通过VSYNC信号触发对UI的渲染以及重绘,间隔时间为16ms,其实就是1000ms内显示60帧,每帧花费的时间1000/60,如果系统发出VSYNC信号16ms无法绘制,就会丢弃该帧,继续下一次信号,这就是画面卡顿的原因。

二、布局优化

1、选择性能消耗较小的布局

性能消耗FrameLayout、LinearLayout < RelativeLayout。

2、减少布局嵌套层级

尽量用最少的布局层级完成布局,去除无用布局。

3、使用标签

一个程序一般为了风格统一,很多界面会有共通的UI,标签可以将一个指定的布局文件加载到当前的布局文件中。我们可以定义这个通用UI,使用标签添加这个通用UI的引用。

如:存在通用布局layout_a.xml

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="tv1"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="tv2"/>

在布局layout_b.xml中引用layout_a.xml

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

layout="@layout/layout_a" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="tv3"/>

4、使用标签

标签一般与标签一起使用以减少布局层数,如上面的layout_a是一个竖直方向的线性布局,而layout_b也是一个竖直方向的线性布局,很明显layout_a的线性布局是多余的,这时候就可以使用标签包裹去掉一层布局。

xmlns:android="http://schemas.android.com/apk/res/android">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="tv1"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="tv2"/>

5、使用实现View的延迟加载

ViewStub继承自View,不可见且大小为0,可以做到在使用的时候再加载,提高程序初始化性能。

android:id="@+id/vs"

android:layout="@layout/layout_b"

android:layout_width="match_parent"

android:layout_height="wrap_content"

/>

在需要加载布局的时候

ViewStub vs = findViewById(R.id.vs);

vs.inflate();

//或者

vs.setVisibility(View.VISIBLE);

6、移除多余背景

(1)如根布局背景为白色,子布局就不需要再设置白色背景

(2)移除系统主题默认的window背景

image

三、总结

1、选择性能消耗较小的布局

2、减少布局嵌套层级

3、使用标签

4、使用标签

5、使用

6、移除多余背景

android 程序界面美化,Android性能优化之界面优化总结相关推荐

  1. java写一个android程序_【Android开发笔记】3.编写第一个Android程序

    前言 上一节我们通过一个Demo熟悉了Eclipse的基本使用.如何在模拟器和手机中运行以及如何打包成APK,但没具体编写代码,相信很多同学已经按耐不住了吧,这一节我们会动手编写代码来熟悉Androi ...

  2. android 程序退出广播,android 利用广播实现程序的强制退出

    利用广播机制,实现程序的强制退出. 前面有篇博文,写到了一键退出,这里利用到了那里的ActivityCollector的集合和BaseActivity 功能:打开程序后,先登录,登录成功后,进入主页面 ...

  3. android 程序类图,Android模板设计模式之 - 构建整个应用的BaseActivity

    1. 模式介绍 模式的定义 定义一个操作中的算法的框架,而将一些步骤延迟到子类中.使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 模式的使用场景 多个子类有公有的方法,并且逻辑基本相 ...

  4. 拼图android程序,可视化开发Android应用程序:拼图开发模式App Inventor

    可视化开发Android应用程序:拼图开发模式App Inventor 作 者:王向辉 等编著 出版时间:2013 内容简介 <可视化开发Android应用程序:拼图开发模式App Invent ...

  5. android程序日历layout,Android使用GridLayout绘制自定义日历控件

    效果图 思路:就是先设置Gridlayout的行列数,然后往里面放置一定数目的自定义日历按钮控件,最后实现日历逻辑就可以了. 步骤: 第一步:自定义日历控件(初步) 第二步:实现自定义单个日期按钮控件 ...

  6. android程序启动动画,Android设置软件启动动画(以及初次安装的几张引导图)

    Android设置软件启动动画(以及初次安装的几张引导图) 设置软件启动动画 1 创建一个启动Activity 这里叫做QiDongActivity 它的XML中设置一个matchparent的背景图 ...

  7. android程序root权限,android – 如何从源代码授予对特定应用程序的root访问权限而不是root权限?...

    我正在从源代码编译Android ROM,我有一个应用程序,我希望它预先安装并让它以root权限运行. 如何在不支持整个ROM的情况下授予对此特定应用程序的root访问权限? 解决方法: 希望你不需要 ...

  8. android程序导入虚拟机,android项目打包成apk应用程序后部署到虚拟机上测试

    一:打包成apk包 这个比较简单,如下 右键点击项目--> export -->  android Project -->  选择密钥等信息  --> 填写密钥信息  --&g ...

  9. android 程序更换字体,Android修改自己程序字体的方法详解

    Android提供三种字体:"Sans","serif"和"monospace". 1.在Android XML文件中设置字体可以采用and ...

最新文章

  1. MySQL使用用户变量优化先更新后查询
  2. 趁webpack5还没出,先升级成webpack4吧
  3. Swift傻傻分不清楚系列(一)常量与变量
  4. 听说用 C# 写 TensorFlow 更高效?
  5. 第五十五期:MongoDB数据库误删后的恢复
  6. 《中国人工智能学会通讯》——11.28 统一先验建模框架 II:整数规划
  7. IOT(10)---NB-IOT的物联网十大典型应用场景
  8. 被骂垃圾货,却卖出8000万副,干翻国外大牌!这个产品杀手凭什么?
  9. python生成器的作用是什么_看完这篇,你就知道Python生成器是什么
  10. 华为 IPD 集成产品开发流程的缺点和适用局限性
  11. 想定制Android系统实现改机?看完我也会了
  12. 如何使用 CSS 颜色?
  13. outlook配置126邮箱
  14. 千兆网线 双机互联交叉线
  15. linux怎么把dos改成unix_如何将文本文件在 Unix和DOS格式之间转换
  16. Unity Shader入门精要 第2章 读书笔记
  17. 省市县结合身份证号6位码的三级联动
  18. tensorflow2.0 预测新文本(一)
  19. javascript 的 日期对象
  20. debugger小解

热门文章

  1. 苹果电脑显示隐藏文件的方法
  2. java字符串截取--截取倒数第二个指定字符之后的字符串
  3. kubernetes token问题
  4. Permissions 0777 for ‘***’ are too open
  5. 2006德国世界杯赛程
  6. 计算机辅助设计maya,计算机辅助设计——MAYA.docx
  7. Instagram,未来创业者的标杆
  8. 企业微信公众号的运营策略有哪些?
  9. 【读书笔记】《Windows游戏编程之从零开始》(一)
  10. 用python跳转网站