3-1 帧率与流畅度

心理感知

  • app需要运行更快一些/感觉有点慢

比较笼统,表达了以上意,但是不明确;终端用户的期望到底是什么,有没有量化的数值?

  • 心理学研究:

不同延时长度下人的心理认知

  1. 0 ~ 100 ms 瞬间发生的 instantaneous
  2. 100 ~ 300 ms 缓慢的 sluggish
  3. 300 ~1000 ms 设备还在工作 the machine is working
  4. 1000+ ms 想要切换场景/离开 a context switch
  • 页面加载速度

1秒法则 在一秒钟之内在视觉上赢得用户

3-4秒 用户失去耐心/流失

Jank

  • Jank

Android team经常提到jerky, unsmooth motion, jank, laggy,表达的意思都是页面/动画不流畅

  • 60FPS

绝大多数Andorid设备的屏幕是60Hz,一秒刷60次(也有个别列外,比如50或者更少)

1s/60 fps = 16ms 保持每一帧在16ms之内完成

跳帧导致用户感觉不流畅

  • Android对UI渲染的优化
  1. Gingerbread及更早的设备,全部靠软件绘制屏幕,没有GPU要求;但是设备尺寸和像素密度在不断增长,直线加剧了渲染压力
  2. Honeycomb引入tablet,增加GPU芯片,可选择性启用硬件加速来渲染
  3. Ice Cream Sadwich, 硬件加速默认开启,大幅提高渲染速度
  4. Jelly Bean "Project Butter"黄油项目,进一步提升性能减少jank。优化VSYNC时间,增加frame buffering是的掉帧减少。提供以协议工具
  5. 降低屏幕绘制的时延
  6. 快速创建,一致的帧率

Android系统在不断优化,流畅性越来越好

流畅度

现在我们基本了解了帧率和用户感知到的流畅度是相关的。现在我反问一句:

  1. 为什么电影24帧,我们就觉得很流畅?
  2. 帧率低于60FPS是不是一定感觉卡?

心理预期,人眼对输入速度的变化感知明显,电影的每一帧的内容和时间是均匀的,给人的预期是恒定的,所以24帧已经足够让人感觉流畅。 但是app的每一帧消耗时间不同,导致预期是不一致的。 时间渲染需求,比如一个静止的页面没有额外的业务渲染需求,那么他的帧率很低,但并不能说明不流畅。

帧率的=帧数/时间差

流畅度=单位时间回调次数

参考

  1. http://blog.csdn.net/tencent_bugly/article/details/51354517
powered by Gitbook更新: 2018-03-21

results matching ""

    No results matching ""