说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Instagram工程师教你如何改善App的性能

HTML文档下载 WORD文档下载 PDF文档下载
扁平化设计最核心的地方就是放弃一切装饰效果,诸如阴影、透视、纹理、渐变等等能做出3D 效果的元素一概不用,所有的元素的边界都干净俐落,扁平化设计不仅是一个美丽的外表,它带来的还有性能上的提升,

【编者按】扁平化设计由于其简洁的外表,更少的按钮和选项使得界面干净整齐,从而减少认知障碍的产生。扁平化设计更是功能上的简化于与重组,相比于拟物化而言,扁平风格的一个优势就在于它可以更加简单直接的将信息和事物的工作方式展示出来。本文来自Instagram一名工程师的分享。

以下为译文:

扁平化设计仅仅只是一个漂亮的外表,还是一个性能利器,从而触发一场UI革命?实践证明是后者。

Tyler Kieft 是Instagram一名工程师,他详细解释了这其中的缘由,更详细的内容请关注他在@scale会议上的演讲: 标准安卓手机上的Instagram 。这个演讲是由Facebook提供的,是“如何在实际情况下设计移动应用程序”系列的一部分,这里的“实际情况”是指那些手机速度更慢、屏幕更小、网络比美国更慢的地方。

为标准手机设计App和高端手机并不一样,Instagram团队需要重新思考他们的设计。从Tyler的谈话中得到的启示之一是转变到扁平化设计,因为这将让应用程序更美观、更实用、并且还能大大提高性能。

这的确出乎我的意料,我曾经认为扁平化设计只是构建更美观的UI。现在想想真是愚蠢之极。感谢Tyler如此详细的解释了扁平化设计的好处, Instagram说明了一切。

扁平化设计是反拟物化,它采用简单的元素、简单的排版、单调的颜色以及简单的设计。

使用扁平化设计,Instagram可以减少120 ms的冷启动时间,同时应用程序更美观、更好用、并且更专注将内容传送到不同大小的手机上。

那么扁平化设计是如何实现的呢?

转变到扁平化设计

  • 为了更专注性能,Instagram重写他们的UI。
  • Instagram在2012年发布Android版本时,只有3个人的团队,花了大约4个月完成。其中两个工程师,一个设计师。Android版本使用了和iOS版本相同的设计。
  • 使用的丰富的渐变特性和大量的UI元素。
  • 过渡到扁平化设计后,产品更简单和更美观。没有更多的渐变,没有更多的阴影。
  • 通过采用扁平化设计,他们得到的经验是:

  • 扁平化设计使开发量更小,开发代码更快、更新产品更快,这对开发人员来说是个好消息。
  • 扁平化设计带来的是性能的提升,不仅开发人员做的少,而且速度更快。

  • 新Android版本的目标就是利用他们从iOS7扁平化设计中学习到的经验来重新设计:

  • 让它更扁平、更快。这不是重写,导航模式并没有改变。
  • 要有强烈的屏幕空间意识。用全新的眼光看待每一块屏幕,尽量让设计能更好地适应所有的屏幕尺寸。
  • 让它更美观。这是Instagram团队所做一切的基础。

  • 整体效果发生了显著的简化,那么发生了那些变化呢?

  • 去掉所有的渐变和光滑按钮。让图标回归鲜明的轮廓,取代渐变效果。保留纯色和扁平形状,以便UI融入背景。
  • 去掉评论图标,使评论占据屏幕的全部宽度,给予评论更多的文本空间。屏幕上重点强调内容,让小屏幕手机用户有更多的空间来读正文内容。
  • 拍照功能的重新布局。在小手机上,动作按钮设计在屏幕的顶部,而大屏幕手机所有的命令在底部。
  • App上不必要的UI全部去掉,让用户更多的关注内容。chrome搜索屏幕从三层减为两层。这给了小手机很多空间,给内容很多空间。

为什么扁平化设计

  • APK将更小,这对小型网络非常适合。神奇的是Asset tinting(我从来没听说过的东西)。Asset tinting意味着assets,在这种情况下是图像、可以以编程方式着色。例如,一个灰色的心可以通过编程方式变为红色。
  • 加载较少的assets。这意味着UI显示更快并且以更少的内存来存储位图。每个需要被显示的assets必须以闪存的方式读取并且解码成一个位图。越少这么做,App就会越快。
  • 更快的迭代时间。如果你想改变颜色或重新开发,你不需要一个设计师了,需要的事更改代码和编译。
  • 结果:

  • 在扁平化设计之前,需要29个不同的assets显示feed screen。扁平化设计之后,只用了8个。仅凭这些,就在所有设备上减掉120 ms的冷启动时间。
  • 扁平化设计之后,整个App更快了。更少的assets被加载,整个App变得更灵巧,速度变得更快了。

改善冷启动时间

  • 冷启动时间是指应用程序启动和响应的时间。目标就是让应用程序启动更快,让用户在低端手机上有一个好的体验。
  • 几年前,在低端三星Y系列手机上 Instagram的启动时间是3秒,在高端三星S5上,启动时间是750 ms。
  • 现在三星Y系列上 Instagram启动需要1.5秒。在三星S5上是400 ms。
  • 怎么做?

  • 配置App。

  • 找出是什么减慢了这个App的速度。
  • 在Android上你可以使用method tracing,以及timing statements,两者兼用会事半功倍。

  • 修复最慢的部分。

  • 延迟加载。将项目从冷启动路径删除。
  • 重写代码。例如,缓慢的JSON解析代码重写后会更快。
  • 遵从后台线程。能在后台完成的不要在UI线程上做。

  • 迭代。再次启动配置步骤。

  • App-wide 单例模式被发现是缓慢的。

  • 很多重度单例模式先于App启动:HTTP客户机、Cookie存储、图像缓存、视频缓存。真的不需要这些东西来显示UI给用户。它们可以并行地在后台加载。
  • Two-part 延迟加载

  • 在后台初始化单例模式,不要让程序员必须检查一个单例模式是否是可用的。

  • 在UI线程上创建足够的对象,以便完善公共API功能。将功夫用到后台线程上。缓存从磁盘存储打开和阅读,客户端证书在后台加载。Cookies反序列化和解码在后台。通过这些改变,UI将更快地出现在屏幕上。

  • Newsview变慢。通过method tracing发现。

  • Newsview,显示你所有的喜好和评论,最初作为webview编写。它需要在启动时加载,以便尽可能快的显示用户数据。
  • 问题是没有控制webview,它有它自己的堆栈和缓存系统。转换到本地,需要2 - 4周。本地转换后的冷启动时间减少了30%。

经验

  • 快速冷启动时间是可以实现的,通过配置、修复、迭代。
  • 审慎使用像素。看看每一个屏幕不需要什么。其他国家用户手机的屏幕显著小于美国的。
  • 移动手机喜欢简单的设计,移动开发者也是如此,他们喜欢更简单、更快的设计。

原文链接:Instagram Improved Their App's Performance. Here's How. (责编/魏伟)

用Visual Basic设计更好的用户界面 用Visual Basic设计三维图形按钮 用VisualBasic制作半透明窗体 运行时改变控件大小的两种方法-VB资料 运行中隐藏/显示窗口标题栏-VB资料 在ListBox适当设定水平滚动条的宽度-VB资料 在VB中利用API实现窗体的平滑显示 在vb中让控件大小和位置随着表单的大小成比例变化的方法 在VB中实现闪动标题栏 在VB中实现位图的透明放置 在VB中使用数据窗体设计器插件 在VB中制作单独程序封面的两种方法 在VB中制作透明按钮 在Visual Basic中如何拖动窗体或控件 在Visual Basic中显示动态运行进度 在菜单中加入图标 -VB资料 在程序中调用关闭Windows对话框-VB资料 在任务栏中显示无边框窗体的图标-VB资料 在系统菜单上添加自定义菜单项 -VB资料 在运行时动态生成多个相同的控件?-VB资料 在最小化状态时提供提示 -VB资料 暂时禁止窗口更新-VB资料 VB怎样得到文本框(TextBox)中的文本行数? 制造出透明的Form -VB资料 VB制作半透明窗体和形状不规则的窗体 VB制作方向按钮 VB制作渐变的窗口背景色 字体闪烁 -VB资料 自动改变控件大小-VB资料 自制IE风格按纽控件-VB资料 VB6.0中通过MSChart控件调用数据库 我也很着急,拜托~~~~~~~~~(关于发布和订阅的简单问题) 在pb中如何自激动窗口,急! 遍了一个简单的servlet,编译时提示:package javax.servlet does not exist! 怎样统计新闻发布系统的新闻点击数 小弟是新手,用GCC编译了一个源文件,生成一个叫a.out的文件,好像是可执行文件,但不知怎样执行,请告知!!! 请问怎样才能用MainFrame类中的函数来控制同一项目中的视(View类)的操作??? 搞个调查:在杭州的程序员年薪有多少K? 请问大虾,Active Dictroy有什么作用,另外到什么地方可以下载? 请问各位仁兄,珠海的2002年程序员考试在哪里报名?谢谢! 如何绕过禁止IP?请指点? 小和尚想开网吧!请问各位高手!网吧应该用什么样的的配置比较好!扩朴方式那总比较好! Question:有没有_获取“视频采集卡”的AV信号 的控件? win98下能安装oracle8i吗? 如何在ASP页面中对XML文档进行询?(问题较多) Insert into TableName values(?,?,?,?,?) 为何写入中文时数据库会是乱码??? 有几个技术问题求助!!!! 有人要去参加Visual studio.net发布会吗 失落中 如何打开被屏蔽的“运行”窗口、注册表编辑器?? 小和尚想开网吧!请问各位高手!网吧应该用什么样的的配置比较好!扩朴方式那总比较好! 哪位能给个简单的dll例子吗?我不知怎样写。 简单问题:谁知道改变屏幕的一块区域的颜色的函数是什末? 有关数字视频监控系统的问题!!! 改错误 打算用PB做个Oracle管理器,请给点意见参考参考 如何在APPLET中读入 HTTP中将其他网页的内容 小女子求教!对您可能非常easy的问题! pb6.5做b/s!求救!送分! 这个问题,我都不好意思问,pb70如何编译成exe文件啊? 集成主板的声、显、网卡的问题。(内详) 怎么连sybase 数据库! 怎样用vb实现ctrl + alt + delete键的功能 求超级兔子魔法设置4.2的注册码,一定高分相送 如何调用数据库中带输入、输出参数的存储过程 ASP页面里用下拉框控制日期显示时,没有31号的月份怎么控制不显示31号呢? 寻EPOC高手。 刚学VC要注意点什么哈 如何将BMP图形转成JPEG后,存入数据呢?请教! 脸红请教! 先装好了linux还能加装windows吗? 请问高手:怎样在interDev6.0中调试ASP?? 高手请教,在线等待 一段代码整体一定的快捷方式 MSHFlexGrid的数据显示问题!(40) 使用ADO时,说interface not supported是怎么回事? 请教! 谁知哪儿有flash控制影片的源文件? 怎样把SQL Server中的数据库导出成*.sql文件? 2000SERVER 奇怪:0x80004005 错误,但是在以前的帖子里没有提到 建议:加入精华区的帖子可以改名。有的帖子内容很好,但标题说得不清楚。这样也方便于分类。 正确描述金属通性的是( )A.具有金属光泽 B.具有良好延展性、易导电导热C.具有高熔点 D.具有强还原性 有的同学认为:摩擦起电创造了电荷,放电现象以又使得电荷消失,你的看法? 年降水量单位 in 1in相当于多少mm? 大学普通物理 静电场环路定律 相关的数学知识 人际交往, 请问摩擦起电产生的都是同种电荷还是异种电荷?还是两者兼存? 求名词解释“结构第一” 沟通里面的名词解释.第三只耳朵现象 为什么摩擦起电后形成异种电荷? 选择结构的名词解释using System;public class switchTest{public static void Main(){int num;Console.WriteLine("请输入一个1-7之间的数字:");string input = Console.ReadLine();num = int.Parse(input);switch (num){case 1:Console.WriteLine 沟通的名词解释 对于你说的摩擦起电结果,两个不同的物质带上了等量异种电荷我有些疑问,希望得到您的帮助.在我的资料书上说:两个完全相同的导体相互接触后,总电荷量平均分配.与你所说的等量有歧义. 身体结构的名词解释什么是身体结构?能不能一句话概括? 人际关系理论 请问公式怎么定义,谁能教我 名词解释社会情绪 横向信息沟通 x(n)是一个序列,k=0,1...n-1数学老师死的早,求教下Wn kn那部分是啥意思? 摩擦起电不是创造了电荷,只是电荷从一个物体__到另一个物体,使正,负电荷__了. 求下列表达式的值20mod19,15mod9,7div8,19div3(4>5)and(79)or(9 做爱什么样的器具比较好一些?不知道到现在世界上有多少性爱器具 文献上看到浓度单位 μM 是指 μmol/ml 那么 mM 给出下列表达式的值设变量说明为:int a=1,b=2,c=3,d;double x=2.0,y=7.7;(1) ++a*b-- (2)d=a++,a*=b+1 文学传播 如图所示,放在水平桌面上的如图所示,放在水平桌面上的薄壁圆柱器重4N,底面积100CM2,弹簧测力计的挂钩如图所示,放在水平桌面上的薄壁圆柱器重4N,底面积100CM2,弹簧测力计的挂钩上的挂的重 下列反应的符合表达式,并注明基本反应类型1碳在空气中燃烧2赛跑发令枪打响后,产生大量白烟3汞在空气中加强热以上反应的共同特征. 传播学 教育性信息的名词解释到底是什么啊! 放在水平桌面上的薄壁圆柱形容器底面积为100cm2,弹簧测力计的挂钩上挂着重为10N放在水平桌面上的薄壁圆柱形容器底面积为100cm2,弹簧测力计的挂钩上挂着重为10N的物体,现将物体浸没在水 1.C语言函数默认的返回值类型是_____.2.下列条件:10 wokakan 放在水平桌面上的薄壁圆柱形容器重4N,底面积100cm2,弹簧测力计的挂钩上挂着重为10N的物体,先将物体浸没于水中,容器内水面由16cm上升到20cm.求(1)物体放入水中时,容器底受到的水的压强(2 密度计算题. 8年级下册的物理(关于密度),1、 如果砖的密度是2×10³千克/米³,一块砖的体积是1.4×10³/厘米³,那么,一辆装载4吨的汽车最多能运多少块砖?2、柏油路面维修的时候,要铺设路面面 matlab如何在圆内随机画点 烟、泪读什么,是什么意思? 超声波探伤题,根据标准GB/T6402-2008探测钢棒超声波探伤题,根据GB/T6402-2008A级标准探测fai80✖️100mm的钢棒,已知钢棒纵波声速为5900m/s,选择探头并计算灵敏度.领导出的题,初学者完全不知 虚假购买力(附例子) 灵敏度的单位:μw 怎么读我很穷,给不了分数,看着回答吧 关于:奶茶饮料中茶多酚的检测——gb/t 21733—2008标准中的奶茶在加无水乙醇定容后再用慢速定量滤纸过滤,但是慢速定量滤纸的过滤完50ml试液的话需要几个小时,茶多酚在空气中会被氧化,请 名词解释 公民不要太长 不透光烟度计的英文 分析性测试名词解释审计学,分析性测试是指(名词解释) 有效的公共关系 在C程序中,表达式200|10的值是多少? Private Sub Worksheet_Change(ByVal Target As Range)Dim ii = Target.RowActiveSheet.Cells(i,15) = Now()End Sub这是EXCEL里一个自动显示数据更改时间的宏程式,另外我就是想能不能帮忙做一下更改,它现在是显示的是横排 公共关系名词解释揭丑运动.全员公关.交际型公关.进攻型公关.媒介公关.公关危机.危机公关.企业使命.公关礼仪.4C'S理论.麻烦知道的人帮我答一下, 为什么降水量的单位是mm?表示的是什么意思? 在一个二值图象上,用matlab画圆.(白色的线来画,只画在图像范围中部分就可以了)以图象的左上角为坐标圆点.圆心为::x =1255y =1133半径为::r =2517希望知道的给个程序.十分感谢.半径,圆心都是以像 名词解释:公关传播急用,谢谢 降水量用mm做单位,怎么看的?是不是指雨滴的直径? matlab怎么画圆给了30组数据 (X,Y)..没半径 怎么通过这些数据画图,还能求出圆的半径的 求大神指导...MATLAB新手啊 2.4g金属Mg变成Mg离子后失去的电子数为0.1NA 请高手一字一字的说明 公共关系中“政府形象”的名词解释 降水量为什么以”mm”为单位?它是如何测量的? Mg金属是什么 LP/mm什么单位 怎么读啊 降水量的单位mm表示的是多大面积上的降水量?大家都知道降水量的单位是mm,但究竟是多大面积上的深度? 马氏体不锈钢,如何调制?调质 摩擦起电现象表明,电荷是什么创造的,也被什么消灭 密度的应用题一个质量为5KG的合金球,其中含铅和铁各占总体积的1/2.1.此合金的密度是多少2.此合金的体积是多少P铁=7900KG/M P铅=11300KG/M
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘