您的位置:首页 > 产品设计 > UI/UE

微信团队讲课笔记 Android 开发(二)UI设计

2016-03-03 00:07 330 查看
校企合作 微信团队开讲

所有章节:

第一章 Android应用设计与开发 --后面补上

第二章 UI技术研究与应用

第三章 终端网络技术

第四章 终端存储技术

第五章 Android安全开发

第六章 多终端平台技术

--------------------------------------------------------------------

今天晚上讲的是第二章,注意!不是UI的入门教程,不是讲类的,偏重于系统原理,比较底层。

由于比较困,下面就简单写写或者列下keyword

-------------------------------------------------------------------------

UI技术的本质:静态资源+运行时渲染

目录:

I. 静态资源

II. UI渲染技术

III. UI性能优化实践

------------------------------------正文 -------------------------

I 静态资源

资源定义:从代码中分离,用于UI呈现和存储其他逻辑数据的静态内容,就是图片,字符串,界面布局等

Resources类:http://developer.android.com/reference/android/content/res/Resources.html

资源组织:放置在project的

/res 实现系统化机制的指定目录

/assets 扩展资源目录

/res下又有很多子目录,比如/values /color等,要严格放在默认目录中,因为是通过目录来声明类型的

资源配置、适配过程。

资源编译:

AAPT(Android Assets Packaging Tool)赋予每个非assets资源一个ID值,ID值一常量的形式定义在R.java文件中,生成resources.arsc文件,用来描述具有ID值的资源的配置信息,内容相当于资源索引表。

apk包解压出来的:/assets 目录完全保留,/res除了/value /xml目录保存外其他都被编译成二进制文件,然后多了个resources.arsc

为什么要编译?

--索引,提高读取速度 (资源查找)

--编译成二进制提高解析速度 (二进制比JSON等格式都快吧,显然)

--减小资源的大小 (打包apk可选择完全不压缩或者压缩,流媒体/arsc不压缩,其他的可以,压缩率很高)

resouces.arsc结构

Lint工具:

用于检查资源正确性/重复的工具。如id冲突,API冲突(使用了不支持的API),无用参数,未被使用的资源等等

总结:

1. 介绍资源组织和适配方式的设计思想

2. 资源编译和访问的方式

3. 资源压缩的方式

II UI渲染技术

图片是怎样被显示的?

me: 驱动的API接口,opengl的渲染流程,浏览器的渲染过程

UI是什么?

控件,View是基类,被ImageView TextView等继承

界面是一颗抽象的View树

关于显示原理有篇文章讲得很清晰些,也是来自鹅厂的,传送门: http://djt.qq.com/article/view/987

摘抄:

显示的过程:Android应用程序调用SurfaceFlinger服务把经过测量、布局和绘制后的Surface渲染到显示屏幕上。

SurfaceFlinger:Android系统服务,负责管理Android系统的帧缓冲区,即显示屏幕。

Surface:Android应用的每个窗口对应一个画布(Canvas),即Surface,可以理解为Android应用程序的一个窗口。

VIEW渲染过程:measure -> layout -> draw

skia

垂直同步、双缓冲、VSYNC、BufferQueue (老师念vsync时我在百度看surfaceFlinger听他讲“微信微信”楞到了,翻了下ppt才发现是vsync哈哈,后来讲微信我刚开始又以为是vsync)

--垂直同步,画面撕裂(screen tearing)现象

软件渲染和硬件渲染,在提供canvas的接口是一样的。

III. UI性能实践优化

什么叫流畅?

60帧/s人眼感受不到。

如何达到? UI由单个线程绘制。

-- 避免过度绘制

--优化layout,减少层级

--主线程不要做IO或其他耗时操作,最好只有UI操作

--自己绘制,从底层系统上优化

这部分我记下了一些微信的实例,非常困所以后续补充。

工具:

TraceVIew:每个function的耗时,java的method profiling

dumpsys: dump系统信息

Systrace: 提供了针对系统侧渲染的分析能力

关于优化,非常像去年的体系结构课,又像是编译原理。关于架构。

关于技术的本质,好喜欢这句话

mark下另一篇UI硬件渲染加速 :http://blog.csdn.net/luoshengyang/article/details/45601143

Android应用程序显示的过程:Android应用程序调用SurfaceFlinger服务把经过测量、布局和绘制后的Surface渲染到显示屏幕上。

名词解释

SurfaceFlinger:Android系统服务,负责管理Android系统的帧缓冲区,即显示屏幕。

Surface:Android应用的每个窗口对应一个画布(Canvas),即Surface,可以理解为Android应用程序的一个窗口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: