solidworks composerr纹理为什么不能调整角度

扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
3DVIA Composer 2009-官方初级教程-中文
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口当前位置: >>
3D VIA Composer在重型加工制造业上的应用
3D VIA Composer在重型加工制造业上的应用
16:09:01&&作者:太原重工股份有限公司技术中心 吴青 宋丽 郭希斌 陕西美德资讯有限公司 程龙&&来源:
本文以国内某特大型骨干企业中锻压操作机的升降、摆移和缓冲装置的三维模型为实例,介绍了3DVIA
Composer在重型加工制造业上的应用。
  随着国内经济建设形势的逐年好转以及扩大内需的需要,为加快生产步伐、提高生产效率、增加经济收益,重型加工制造业的产品正在向大、快、稳的方向发展,即产品重量大、生产速度快、产品质量稳。在向大、快、稳的方向发展的同时,虽然的确缩短了产品设计周期,但是,也带来了一系列的、不可避免的问题。
  一、重型加工制造业普遍存在的问题
  重型机械产品结构复杂、零部件多,在安装、拆卸以及日常维护时经常出现某个零部件无法正确安装或拆卸不下来的现象,或者在维护需要查找技术文档时才发现技术文档已经与当时的设计不一致。在投标报价时,由于没有三维模型、图片等相关技术资料或提交的技术资料已经与现有的产品设计有较大出入,而导致流标的现象也时有发生,毕竟重新制作技术文档不是短时间就能完成的。
可以说,到目前为止,产品设计已经不是阻碍产品上市的唯一因素了,那么,是什么原因导致产品推迟上市呢?
产品设计之后的技术文档资料的制作,这是耗费设计人员大量时间、精力的一个比较突出的问题,产品设计已经结束,甚至已经加工制造完成,但是,由于企业未能及时提供该产品的使用说明书、安装调试手册、现场服务手册或备件清单等相关技术文档,客户不予验收,导致产品推迟上市,会使企业遭受巨大损失,尤其是重型机械产品,产品结构复杂、零部件总数比较多,少则几千个,多则上万个,如果客户不予验收,已经加工制造出来的产品还要占用企业场地,增加产品维护、看护的费用,稍有不慎还会造成产品部分零部件的损坏或丢失,进一步加大企业损失。
  损失企业财物事小,砸了企业自己的品牌事大,所以,为解决上述问题以及更好地完善设计,减少安装、拆卸过程中的意外,保持技术文档随设计更改而更改的一致性,本文以3DVIAComposer为基础,着重解决产品设计之后的技术文档制作的问题。
  二、3DVIA Composer简介
  3DVIA Composer是由达索公司出品的一款技术文档制作软件,它具有非常高的集成度,操作简便,非常适合于非专业设计人员使用,3DVIAcomposer制作出的文档,并非狭义上的图样或者图文,而是广义上的图文并茂、图片动画并茂等。利用3DVIAComposer,非CAD用户可直接从3D CAD数据中创建相关的2D和3D产品文档,通过直接利用Solidworks3D数据和其他3D软件的几何体、结构、元数据,
  3DVIAComposer可在文档编制、销售、市场推广、客户服务、培训、支持和制造等方面助用户一臂之力。通过对3D数据的编辑,它能够产生出精确的工装工艺手册,专业和详细的技术文档手册,生动、逼真的维修和拆卸动画仿真。
  3DVIAComposer使用3D模型中的信息,将设计更改以无缝方式直接更新到产品文档中,从而创建精确和最新的印刷及交互材料。这种快速、简单的方式,大大缩短了产品的上市周期,为用户减少了前期的投资成本。
  3DVIAComposer可无缝读取SolidWorks数据,同时还可以采用CATIA、Pro/ENGINEER和其他许多标准CAD格式的3D CAD数据,还可创建高度压缩的轻化文件格式。3DVIAComposer可输出许多标准文件格式,包括Microsoft Office、PDF、HTML、Office、SVG或CGM等,允许用户将3DVIAComposer生成的内容集成到现有产品文档中。
  三、应用3DVIAComposer之前的准备工作
  1.三维数字模型的准备
由于通过3DVIAComposer制作技术文档的所有数据均直接来源于3D模型,所以操作者可以使用关键部位结构的部分装配体来制作文档资料,也可以在使用3DVIAComposer之前提前建立好完整的(不缺少零部件)、包含零部件属性信息(材料、重量、图号和名称等)的三维数字模型,甚至一些辅助的场景角色(如地面、厂房等)都要事先建立三维模型并添加到三维装配体中。可通过目前比较主流的三维设计软件来建立三维模型,在本文中,操作机的三维模型是通过SolidWorks2008建立的,模型整体效果如图1所示。
  图1整体模型
  2.设置零部件颜色
  一般情况下,大多数的设计师在进行机械产品三维设计时往往采用三维机械设计软件默认的颜色,对于重型机械产品和复杂零部件来说,采用同一种颜色或比较相近的颜色会给人一种非常单调的感觉,难以吸引别人的眼球,很难制作出图文并茂的技术文档资料和生动的动画。图1给人的感觉就比较灰白,所以在利用3DVIAComposer时,可按照产品外观实际RGB值设定零部件的颜色。
  设置零部件的颜色有两种方法:一是在三维机械设计软件中设置好每一个零部件的颜色,保存后再导入3DVIAComposer中。二是将三维数据模型直接导入3DVIAComposer中,在3DVIAComposer中设置每一个角色的颜色属性、纹理以及背景和光源(注:角色为3DVIAComposer中的专用术语,每一个零部件或一个装配体均可看成是一个角色),如图2所示。
本文中升降、摆移和缓冲装置的颜色就是在SolidWorks中直接设置好后导入3DVIAComposer里的,如图3所示。
两种颜色设置方法并没有太大区别,应用时效果都差不多。具体应用时可根据实际情况选择。同时我们在颜色设置完成之后还可以进行光源的添加,以便于更好地渲染产品。
  3.创建选择集
选择集也是3DVIAComposer中的专业术语,可以是一个角色,也可以是多个角色的组合,目的是在制作技术文档时便于选择角色,通过属性设置可使被选择的角色,即选择集内的所有角色具有相同的属性信息。本例中在升降、摆移和缓冲装置中零部件总数达到1000个,共创建选择集256个,每个选择集内包含的角色数量不等。选择集的设置为操作者进行相同颜色和相同属性的角色创建提供了强有力的帮助,通过这样的选择集设置,大大减少了重复性工作,节省了大量的时间,如图4所示。
  四、制作技术文档
  在本文中,我们的目的之一是想制作出升降、摆移和缓冲装置的安装、拆卸说明书。单纯的文字说明书,会让用户难以理解,同时由于文字的多样性,也可能带来很多的理解偏差,所以用尽可能多的视图来表达要比枯燥的文字叙述要好得多。
在3DVIAComposer中打开锻压操作机后,在工作区的左上角有一个“影片”样的按钮,当鼠标放置在该按钮上时,显示“切换到视图模式”,点击该按钮并切换到视图模式,如图5所示。
  图5切换视图工具
在工作区中,按住鼠标右键(该按键可以根据操作习惯进行设置)来旋转升降、摆移和缓冲装置,摆放到满意的位置,松开鼠标右键,这时,在“视图”标签下单击“创建视图”按钮,保存后系统自动生成一张包含所有角色的视图,如图6所示。
如果要生成下一张视图,则需要:(1)首先对工作区内的角色进行编辑,将角色旋转或者平移到合适的位置达到满意的效果;(2)点击“创建视图”,即可生成新的视图,如果要对当前试图进行更改,那么改变当前角色的位置或其他属性,点击“更新视图”选项即时更新,如图7所示;(3)保存视图。
  1.隐藏不需要的角色
  打开的升降、摆移和缓冲装置角色中,包含我们需要的角色,也包含一些我们不需要的角色,这时为了便于说明,需要隐藏一部分角色(在需要时还可以显示出来)。
方法一:在装配体标签下,直接将所需要隐藏的角色前面的勾去掉便可以隐藏。方法二:在“装配”标签下的“选择集”中,选择前6个角色,然后在“属性”的“不透明性”中将滑块滑到最左端,将其隐藏。方法三:直接选择角色,点击右键,然后选择“隐藏选定角色”。如图8和图9所示。
  2.添加必要的标注
只有图片没有文字描述的说明是不完整的说明,所以,两者必须结合才能表达出更完美的效果。(1)在3DVIAComposer中依次选择“协同→标注→标签”,如图10所示。(2)在工作区,添加“标签”后,在属性管理器中设置“标签”的相关属性(如名称、不透明性、文本内容、大小、颜色和附加线类型等),这些属性信息以达到说明效果、美观为主,如图11所示。(3)所添加的“标签”在“协同”下的“标注”勾选状态下均为可见,如图12所示,添加标签后的效果如图13所示。
  3.安装、拆卸过程的表达
在工作区中看见的是完整装配后的状态,要表达装配过程,方法一:(1)事先移动或旋转角色至另一位置,记住移动的距离或旋转角度,保存视图状态;(2)在此基础上反向移动或旋转上一步中的距离或角度,保存视图状态。
方法二:(1)保持装配后的状态,保存当前视图;(2)移动或旋转角色至另一位置,保存当前视图状态;(3)在“视图”标签下将步骤1中保存的视图移动到步骤2中保存的视图之后。
相比较而言,实践中多采用方法二,不易出错,效果如图14所示。
  4.Digger的应用
  重型机械结构复杂、零部件多,在某些特殊部件环节我们既想让购买的客户看见整体效果,同时,又想表达出某些细节或关键位置的零部件间位置关系。在本文中,我们应用Digger工具来创建局部放大视图和一些特殊效果图。
Digger工具(如图16所示)包含以下功能:(1)局部放大;(2)切除面;(3)X射线;(4)洋葱皮;(5)改变光源。
  图16Digger工具
应用Digger的一般过程:(1)将主要角色位置摆放到合适位置,并预留出放置Digger工具的位置,该位置以不遮挡其他角色为宜;(2)按住鼠标左键,更改兴趣点(即需要放大的位置);(3)根据实际情况,确定使用哪种功能;(4)对2D图像进行截图;(5)更新、保存视图。其中,图17~图21分别为应用Digger不同功能后的效果。
  五、技术文档随设计的更改而更改
  按照上述方法和过程,制作出升降、摆移和缓冲装置的安装、拆卸说明文档。同样,也能制作出其他的技术文档,如技术图解、高分辨率图像和零件手册等。但是,如果在制作技术文档的过程中,设计更改了怎么办?如何保持技术文档与设计更改的一致性?
  传统的技术文档资料在制作的时候大多使用一些和设计软件脱节的图形制作软件,当设计发生更改时,产品文档不能得到即时的更新,导致了生产周期加长,但是由于通过3DVIAComposer制作的技术文档信息完全来源于3D模型数据,设计更改之后,3D数据模型必然也要修改,3D VIA composer提供了即时更新功能,当3D模型发生更改时,可以通过3DVIAcomposer对模型的元数据和几何体进行快捷更新;具体步骤为:(1)在“视图”标签内选择需要更新的视图;(2)选择菜单“文件→更新SMG”,在弹出的对话框中,选择更新的文件;(3)按“确定”后即可实现技术文档与设计的一致性。
  六、技术文档的发布
  利用3DVIAComposer自带的3DVIASync插件,可以轻松将技术文档嵌入到PDF、PowerPoint和Word等办公应用程序中,还可以将文档发布为HTML格式,便于用户查看。对于没有安装3DVIAComposer软件的人员,仍然可以利用3DVIAComposer生成的EXE文件,与设计人员进行技术交流。
  七、结语
  利用3DVIAComposer,由上述方法和过程制作的升降、摆移和缓冲装置的安装、拆卸说明,图文并茂、美观大方,既能使客户满意,减轻维护人员负担,又能减少纸质文件的浪费,增加投标报价时的中标率,最重要的是能保持技术文档与设计更改的一致性,缩短技术文档制作周期,加快产品上市时间。
本文引用地址:
版权所有:智造网为什么加上图层蒙版用黑色画笔不能把人物肤色部分擦出来
为什么加上图层蒙版用黑色画笔不能把人物肤色部分擦出来
09-10-14 &匿名提问 发布
一种简单的数码照片后期润饰 1 打开图片,执行色像/饱和度(-40)降低饱和度。 2 新建一图层,将图层模式改为柔光,用画笔工具将需要润饰的部分画几下,这里可以利用色板方便的提取颜色 3 图片色彩过渡不够柔和,再执行一下滤镜下面的高斯模糊(+85) 简单处理照片爆光不足 1 打开图片,复制背景层,对背景层的模式改为滤色 2 对背景层的色阶进行调整 30秒搞定Plmm艺术照 1 打开图片,复制背景层两次 2 对复制背景层一进行高斯模糊(半径4~6),将复制背景层二的模式改为强光 3 新建一图层,添充图案(预先作好并定义的半灰半白的横条纹图案),设置混合模式为正片叠底 图象错位效果 1 打开图片,新建一图层,选择视图-标尺,选择移动工具,分别从上方和下方拖曳出两条蓝色标线(9格) 2 利用矩形选取工具,填充方格(1,9暗灰,5,7黑,3亮灰),以psd格式储存,然后关闭文件 3 执行滤镜-扭曲-置换,选择刚才储存的psd文件 备注(“置换滤镜”是利用置换图的颜色值使选区发生位移:白色(色调值=0)是最大负位移,即将要处理图象相应的象素向左和向上移动;黑色(色调值=255)是最大正位移,即把图象中相应的象素向右和向下移动;灰色(色调值=128)不产生位移) 照片底纹效果 1 打开图片,执行选择-全选,然后编辑-复制,建一新通道,编辑-粘贴将拷贝图象贴入新建通道中] 2 执行图象-调整-反像,回到RGB通道,编辑-清除,删除原图象 3 执行选择-载入选区,调用新通道,执行编辑-填充(所需颜色) 雾化效果 1 打开图片,新建图层一,设前景色/背景色(黑色/白色),执行滤镜-渲染-云彩,将图层添加图层蒙版 2 重复执行滤镜-渲染-云彩,图象-调整-亮度/对比度(80,0,图层一模式改为滤色) 人物插画效果 1 打开图片,复制背景层,执行图象-调整-通道混合器(灰色,+30,+60,+10,单色),执行滤镜-风格化-查找边缘,用色阶去掉杂点 2 将混合模式设为“叠加”,填充不透明度打到50% 3 背景层上加一个色阶调整图层,调整输出色阶(0,+155)形色主义 4 执行图象-调整-可选颜色,对色彩进行微调(红色,0,+100,+100,-75;黄色,0,-40,+100,-40) 利用颜色叠加给旧照片添加光色效果 1 打开图片,复制背景层,执行图象-调整-去色,调整亮度/对比度(-42,+18) 2 添加“颜色叠加”图层样式,混合模式改为“正片叠底”,点小色块,选择需要颜色(红色),再合并可见图层 3 添加滤镜-镜头光晕(亮度+100) 4 复制背景图层,再次添加 “颜色叠加”图层样式,混合模式改为“正片叠底”(黄色) 给照片添加蓝天 1 打开图片并复制一&背景副本&. 2 再新建一图层并填充蓝色背景. 3 将混合模式改为“正片叠底” 4 在背景副本的图层上在复制一“背景副本2” 5 将“背景副本2”放在最上一层,并为其添加蒙版 6 选取“渐变工具”,由上而下拖动鼠标,天空变成选定的蓝色 处理朦胧艺术照 1.复制一个原图层(Ctrl+J). 2.对复制层使用高斯模糊滤镜(+4.0). 3.做色彩调整(+50,0,-64) 4.用边缘模糊的橡皮擦擦去需要清晰的部分. 5.适当运用图层混合模式. 打造朦胧中的鲜艳(风景,生态类) 1 打开图片,复制图层. 2 将副本层的图层模式该为“滤色”. 3 使用高斯模糊(+8.6 像素).L 4 调节色像/饱和度(Ctrl+U)(0,+12,0). 5 加些锐化,在降低透明度 . 给照片加个玻璃的效果 1 选取区域,按Ctrl+J 2 对剪切层进行高斯模糊(+3.1 像素). 3 调整色彩平衡(-39,+29,+16). 4 新建图层。选择玻璃的厚度区域进行渐变自定义添充(黑白灰色调,顺序是暗,高光,暗,高光),再按Ctrl+T对玻璃的厚度选区进行调整. 5 滤镜-扭曲-玻璃,选择喜欢的图案(扭曲度、平滑度为1,缩放50%). 烧纸效果的旧照片--纯PS处理$1 打开一张图片,执行图象-调整-色相/饱和度(+1,-58,+1). 2 图象-调整-变化(中间色调,加深黄色,加深红色,加亮). 3 复制背景层,执行滤镜-纹理-颗粒(9,56,垂直). 4 新建一图层,执行滤镜-渲染-云彩. 5 再执行图象-调整-亮度/对比度(+27,+100). 6 用魔棒工具,选定图层一中的黑色选区. 7 关闭图层一的预览,点击复制背景层,将前景色改为暗棕色. 8 执行选择-修改-扩展(5像素),选择-羽化(5像素) 9 编辑-填充(前景色),选定图层一,用魔棒选取黑色选区 10 关闭背景层和图层一的预览,选定复制背景层,执行编辑-清除. 11 图象-画布大小,高度/宽度均增加一厘米,定位(中). 12 打开背景层预览,选定背景层,填充前景色(浅棕色). 13 选定复制背景层,执行图层-图层样式-投影.(正底叠片,不透明度45%,角度45,距离7,扩展2%,大小10). 14 合并所有图层. 斑驳效果艺术相框另一制法 1 新建一个文件 按D键 填充背景为白色 2 接着,滤镜---渲染---云彩 . 3 CTRL+M 调整下曲线(黑白对比度强). 4 完成好后的效果再接着 滤镜-扭曲-玻璃(扭曲度7,平滑度3,纹理-画布,缩放50%). 6 新建一个图层,背景为黑色,另新建一图层,添充白色矩形. 7 在矩形所在的层上执行滤镜-扭曲-置换,选择默认的选项。然后找到刚保存的PSD文件进行置换即可. PS渲染你的照片气氛(风景) 1 图象-调整-色阶(RGB +29,1.0,+234).形色主义 l2wv g.V'T @4I 2 执行色相/饱和度命令(全图 -14,+41,-1). 3 继续执行色相/饱和度(红色,色相值降低,饱和度增加). 4 继续执行色相/饱和度(黄色,-22,+45,-1).5 继续执行色相/饱和度(绿色,+15,0,0). 6 调节亮度/对比度(亮度降低/对比度增加).形色主义(H{ T2P4c c N 简单轻松实现素描效果 1 打开图片,执行去色,调整亮度/对比度(亮度降低/对比度增加). 2 复制背景层(Ctrl+J),选定背景层,执行滤镜-风格-查找边缘,再进行UXXXXX锐化,再将图层模式改为叠加. 3 新建一图层,填充白色,添加杂色,再进行动感模糊,将图层模式改为正片叠底. 4 用橡皮工具(不透明度改为15%),对高光部分擦拭. 笔触素描效果的绘制 1 打开一副图片,复制背景图层,选定复制图层1执行滤镜-模糊-高斯模糊(2.0像素) 2 再次复制背景图层,选定复制图层2,执行滤镜-素描-水彩画笔(20,60,80),将图层混合模式设为变暗. 3 再次复制背景图层,选定复制图层3,将前景色设为红色,执行滤镜-素描-便条纸(25,7,10),不透明度设为30%. 4 再次复制背景图层,选定复制图层4,将前景色设为黑色,前景色/背景色设为黑/白,执行滤镜-素描-影印(1,50),执行色阶调整(RGB,157,.0,159),填充值30%. 用简单的方法做特别的照片 1 打开一副图片. 2 在通道中选蓝色通道,然后在蓝色通道执行滤镜-风格化-暴光过度,点回RGB通道即可. 黑客帝国特效 1.新建一个大小为500X300,RGB模式,白色背景的文件. 2.用文字输入工具随意输入一窜01代码,并按CTRL+T把它垂直旋转过来放,并多复制几个拉成不等大小,随意摆放几个。还有一种方法,是用滤镜,也可以达到很不错的效果。就是菜单-滤镜-纹理-颗粒,把强度和对比度都调至100,颗粒类型选择垂直就可以了. 3.把那些01代码的文字层和背景层全都合并起来,并把前景色设置为R:100、G:255、B:0左右的绿色,背景色设置为黑色. 4 选择菜单-滤镜-霓虹灯光效果,发光大小设置为10,发光亮度为15. 5.选择菜单-滤镜-风格化-照亮边缘,边缘宽度设置为1、亮度设置为20、平滑度设置为1左右. 6.选择菜单-图象-调整-亮度/对比度,将亮度调至-10,将对比度调至60左右 Ps“反转负冲”人像处理一例 “反转负冲”是在胶片拍摄中比较特殊的一种手法。就是用负片的冲洗工艺来冲洗反转片,这样会得到比较诡异而且有趣的色彩。如果用在MM人像照片上,则会令弥漫着一种前卫甚至颓颓的色彩. 1 打开图象,并让右边显示“通道面板”. 2 在通道控制面板选蓝色通道,进入“图象”菜单,选“应用图象”,选中“反相”,混合模式用“正片叠底”,不透明度为50%,确认. 3 在通道控制面板选绿色通道,进入“图象”菜单,选“应用图象”,选中“反相”,混合模式用“正片叠底”,不透明度为20%,确认. 4 在通道控制面板选红色通道,进入“图象”菜单,选“应用图象”, 混合模式用“颜色加深”,确认 . 5 在通道控制面板选蓝色通道,进入“图象”-“调整”菜单,选“色阶”(或者直接用快捷键“Ctrl+L”调出) 在“输入色阶”三栏输入:25、0.75、150,确认. 6 在通道控制面板选绿色通道,进入“图象”-“调整”菜单,选“色阶”(或者直接用快捷键“Ctrl+L”调出) 在“输入色阶”三栏输入:40、1.20、220,确认. 7 在通道控制面板选红色通道,进入“图象”-“调整”菜单,选“色阶”(或者直接用快捷键“Ctrl+L”调出)在“输入色阶”三栏输入:50、1.30、255,确认. 8 在通道控制面板选全部RGB通道,进入“图象”-“调整”菜单,选“亮度/对比度” 调整对比度亮度-5,对比度+20,确认. 9 在通道控制面板选全部RGB通道,进入“图象”-“调整”菜单,选“色相/饱和度”(或者直接用快捷键“Ctrl+U”调出) 调整饱和度+15,确认 1. 曲线。色彩调整之王,神通广大,变幻无穷,但在作业实践中,曲线却并非首选。首选的是东西什么呢?首选的东西是——  2. 色阶。拉动三个滑标,足以解决大部分问题,但亲和力远在曲线之上。打个比方说,曲线是元帅,那么色阶便是先锋了。 3. 色相、饱和度和色彩平衡,并列第三位。 4. 尽量不要使用“图像调整-变化”菜单。这个菜单无法量化,而且不能加蒙板,是专留给学徒们用的。 5. 不到万不得已,不要使用“图像调整-亮度和对比度”菜单。这里的亮度常常带来白翳,对比又常常失衡。 6. 如果你想用“图像调整-明度”菜单做点儿什么,那么你死定了。切记:这儿讨论的是调整色彩而不是着色,明度在这儿是100%的狗屎指标,成事不足败事有余,永远不要去理它! 7. 归纳言之,一个色彩调整问题如果有解,那么用曲线、色阶、色相、饱和度和色彩平衡这五个手段,就一定可解,而且我们强烈建议,除了这五个手段以外,不要再使用任何其他手段。 8. 除非极其简单的调整,一切调整工作,都绝对应当在调整图层(可变蒙板)上进行。这样做起码有四大好处: a、色彩调整的每一步都是不可逆的,使用调整图层,使逆过程成为可能,历史记录远远不能望其项背。 b、耗时越多的色彩调整,图像损失越大,使用调整图层,完全避免了这一弊病。 c、操作者可以通过图层开关,逐一比较每一块蒙板的作用,这对于总结经验有不可替代的重要作用。 d、调整图层可以简单重现或者拷贝,这对于成组成套成系列的色彩调整极其方便,你只要精心做好一张就可以了,其余的,统统依样画葫芦。 9. 质言之,可变蒙板实际上也是一种通道,而且是比较高级的一种通道,除此而外,一般不必另外建立什么特别的通道或在单通道中进行什么特别的调整。事实上,上帝安排的诸色并不是孤立的(更确切点儿,我想借用一个医学上的名词说,诸种颜色彼此间是有所代偿的),个别调整常常顾此失彼,事与愿违。 10. 饱和度不可不用,但必须慎用。白皙的肤色本质上是饱和度很低的肤色,但不能忘记,死亡的肤色也是饱和度很低的肤色。而且饱和度过低,容易导致画面平板;为了“白皙”而牺牲了画面的层次,为设计之大忌。 11. 眼睛切不可一味求亮,一个有趣的事实是,亮灼灼的眼睛不是*提高亮度做成,恰恰相反,是通过降低亮度做成的。你应当提高的是对比度。 12. 但对比度和饱和度一样亦须慎用。一个经验是:对比度太高,眼睛倒是黑白分明了,但同时就带来了上视感,给人的第一印象是,你的主人公好像在瞻仰我佛。 13. 轻易不要尝试用图层混合模式解决什么问题,如果仔细研究一下的话,你就会发现,混合模式其实是或多或少损害画面清晰度的。 14. 白种人皮肤比较粗,必要的时候,你可以加一个图层,弄一点柔光效果。但切记不可过分,要让人看不出才行。 15. 某些细部是需要特别处理的,指望一切都通过全图调整完成,是懒汉和傻瓜的想法。 16. 一个图,奇怪得很,有时会调得山穷水尽,这时候你把它存盘退出,然后重新打开它,就是柳暗花明了。相信我,魔鬼有时的确是存在的。 17. 我所做过的最快的肤色调整,耗时20秒钟;最艰苦的调整,耗时一天一夜,而且……真是不幸,最后仍然以失败告终。 18. 真彩色数以千万计,常见的黄肤色调节宏就可以搞出几十个,包治百病的宏是没有的。色彩调整方案象围棋一样不可重复。 19. 色彩调整的学问,无边无际,每当我又学到了一点什么,都发现我知道的更少了
请登录后再发表评论!Android 的屏幕滚动操作不如 iPhone 流畅顺滑,是什么原因导致的?
如题,比如刷微博时上下滚屏明显不如iPhone跟手(即便是13,14年的旗舰机,拖动起来也没有10年的iPhone4跟手),这是安卓系统底层跟iOS的差距,还是说安卓手机的屏幕反应速度都不如iPhone的?
按投票排序
109 个回答
几个高票答案说的都是现象而非原因。对 @劉長曦 专栏提到的 g+ 讨论做了个摘要,出处在此首先,安卓不缺硬件加速的支持。从安卓 1.0 开始,安卓就支持硬件加速。菜单的显示/隐藏、提醒的滑动渐变、Activity 之间的过渡以及对话框的显示/隐藏等都是经过硬件加速的。但硬件加速与安卓「窗口」的概念有关。比如以下这张截图,就包含四个窗口: 状态栏窗口 / 壁纸窗口 / 壁纸上的启动器窗口 / 菜单窗口安卓一开始的设计目标是「提供开放的应用平台」,在这种设计思路下,安卓通过许多个独立的 UI 元素来分享屏幕:比如输入法窗口和应用窗口就是两个不同的窗口。而同一个安卓应用,也由许多 Activity 组成(比如联系人列表是一个 Activity,联系人详情是另一个 Activity),每个 Activity 又有自己的窗口。发现了吗?安卓 UI 一切皆窗口:从主屏打开联系人应用,你看到的是主屏窗口和联系人列表窗口的动画;按下联系人查看详情,是联系人列表窗口和联系人详情窗口的动画;显示输入法,是键盘窗口的动画...早期的安卓使用软件来渲染窗口内的内容:在 2.3 前,窗口内容由软件渲染,而窗口的组合 / 移动则通过硬件加速绘制。安卓 3.0 起,改进了对硬件加速的支持,可以用硬件加速绘制一些窗口内的内容,(感谢
指正,还是有些绘图的API没有完全用硬件加速实现,需要开发者手动选择渲染方式。老应用跑在新版系统上强制开启硬件加速有可能出现异常,就是因为系统的某些绘图 API 没有完全实现硬件加速,而强制使用可能就会出现问题。)随着安卓版本更新,窗口内容对硬件加速的支持一直在改进,可以参考这里 。但为什么即便支持了硬件加速,也不能完全保证流畅度呢?事实上,安卓的这个多窗口设计,意味着 GPU 需要同时支持不同进程的多个活动 GL 上下文。而即便到现在,多数移动 GPU 执行上下文切换的代价还是相当高的。虽然安卓有堆硬件这一说,但硬件加速的资源也很容易被安卓的渲染机制吃光。比方说,Tegra 2 足够在 60 帧下把
屏幕的每个像素点渲染 2.5 次。但安卓 3.0 中,光是打开「所有应用」的视图,就需要绘制许多不同的窗口:需要对所有像素绘制一次背景;(往少了说)需要对一半的像素绘制一次 shortcut 和 widget 层;需要对一半的像素绘制一次图标和标签;也需要对所有像素绘制一次「所有应用」视图的黑色背景,还有「所有应用」视图的图标和标签...还不算对这些窗口做最后的组合,就把 GPU 的资源吃光了。当然,安卓对这个机制也有优化,比如把壁纸做成一个比屏幕大的窗口,这样在主屏滚屏时就不需要重绘,只要移动窗口就行。而这个绘制好了的窗口,就不需要额外的 GPU 计算量了。另一方面,OpenGL 硬件加速绘图也不是万能的,Nexus S 和 Galaxy Nexus 中,每个 OpenGL 应用会占用 8MB 内存。要知道 2MB 的进程开支都是个不小的代价。这 8MB 内存可能从后台进程那里分配而来,造成应用切换速度的下降。为了提升流畅度,还需要许多其他方面的努力:安卓 1.6 对前后台进程调度的优化、2.3 中对输入系统的重写、 加入并发的垃圾收集等。举一个流畅度不由硬件加速决定的例子:对滚屏操作,Nexus S 在 ICS 上的流畅度比在 2.3 中要低。这其实是因为计时机制发生了变化,有时在 ICS 中,当应用接收触摸事件并绘图时,可能在尚未准备好的情况下就获得了下一个事件,从而导致跟踪手指移动时可能错过一帧,但这时帧率仍然是 60fps (这个 bug 已经修复了)。@Julius 提到的是关于浏览器的渲染情况。在这方面,安卓和 iOS 的主要差别并非来自硬件加速绘图。早期安卓在渲染网页时做了与 iOS 不同的折衷:将网页以序列方式连续显示,而非贴片方式。这样在滚屏和缩放时不会出现 Safari 那样的占位符,但渲染的帧率不够快。安卓 3.0 后改用了贴片方式,改善了滚屏和缩放的体验。但不论是安卓还是 iOS,贴片都是由 CPU 渲染的。还有,「安卓后台应用太多吃资源」的说法也有问题。安卓的 UI 线程以默认优先级运行,后台线程以后台优先级运行。切换到后台的应用强制以后台优先级运行。而后台优先级利用了 Linux 的 cgroup 机制,它将所有的后台线程放进一个特别的调度组中,它们满打满算也无法占用超过 10% 的 CPU 资源。「安卓的触摸事件不像 iOS 那样优先」的说法也是错的。你可以架梯子看看安卓进程的优先级设定总的来说,根据 Dianne 的说法,多窗口设计对屏幕绘制的开销,是影响安卓的流畅度的已知因素之一。但决定「流畅」的因素还有很多,抓住某个特定技术细节不放的说法都是有失偏颇的。以上。
目前绝大多数主流Android手机性能都是过硬的,以Nexus 5为例,刷了Android L以后在Art环境和硬件加速的双重作用下,Google+列表也是极为跟手的,但对比iOS上相同应用,你或许还是会觉得iOS更为流畅。我认为主要原因是列表滚动的算法的差异,滑动流畅是一种视觉上的感觉,受到阻尼,动画曲线等各方面影响,并不是帧率能说明问题的(现在还写不出60帧列表的程序员该打板子好吗),Android scroller算法虽然一直在优化,但就目前的效果来看也就是刚好能work并不能实现非常自然的滚动效果,举个栗子:当你以极快的速度滚动列表时,在Android上列表会加速到一个超出预期的滚动速度,视觉上会觉得非常生硬,而iOS列表会保持一个合理的滚动速度,每一帧都如丝般顺滑。
日更新:上次主要针对题主说的具体问题“刷微博在苹果和Android手机上的差异”在具体的设备上做实验后进行了分析。今天我对“Android的流畅性”做个更进一步的讨论。加在后面。===============================================================我来说下我所知道的事情。我不知道iOS为什么流畅,但我知道一些Android为什么不流畅的原因。首先,就题主所说的问题,我用iPad和小米Pad对比了一下微博滑动滚屏这件事情(日目前微博app最新版本,打开的是“首页”和“发现”栏)。正如题主所说,直观感受上明显感觉iOS要流畅、舒服。在这件事情上我认为主要是这三个原因:速度曲线。当你滑动界面然后松手,这时界面会继续滑动,然后速度减小,直到速度为0时停止。iOS下速度减小的这个过程比较慢,尤其是快要停的时候是慢慢停的,视觉上有种很顺滑的感觉;Android下则从松手到停要快很多,相比之下有种戛然而止的感觉。从数据/技术角度来看这个事情,我们滑动界面的最终目的不是为了“动”,而是为了“停”,因此只要平滑的到达目的地,似乎越快完成这个过程越好,所以Android的选择是理所当然的。但事实是,大家普遍更喜欢iOS的方式,这样做显得更顺滑、更优雅。帧率。绝大部分时间两者都能保持60FPS左右的满帧率。但都会有偶尔的掉帧。并且Android上要比iOS上严重很多。(好吧,比起前两年,已经好太多了。)我前前后后滑动了几十次,iOS在前面遇到1次掉帧,后面就很稳定了。而Android几乎每滑动一次都会伴随一次掉帧。这完全就是真真实实的卡顿,用户必然会感觉到那一刻的不流畅。Android掉帧的原因我后面再详细分析。触摸响应速度。从手指碰到触摸屏,到屏幕上显示处理这次触摸产生的画面,是需要时间的。时间越短感觉越跟手。据说iOS的触摸屏的处理时间要比一般的Android手机快,这不是我的专长,不知道怎么验证。但在软件系统层面,Android的显示机制是app--&SurfaceFlinger--&Display,这比传统的app--&Display多了一步,主要基于这个原因,画面最终输出到屏幕要比传统的方式慢一帧(16.7ms)。我觉得第1点造成的影响最大,恰恰却是最技术/设备无关的。如果微博app或者Android系统要改变,很容易就可以调得跟iOS一模一样。但正是由于这是产品形态上的差别而不是纯粹技术上的优劣,反倒成了Android最不太可能改变的。第2点的影响其次,当然是指在目前这个大部分时候都能满帧的情况下。这方面是Android从早期到现在进步最明显的方面,使用了很多方法来优化帧率。但就算现在Android进化了很多,硬件性能也进化了很多,却仍旧不可能彻底消灭掉帧的情况。第3点通俗的讲就是跟手性,跟手性的重要性不言而喻,但现在的差别比较细微,且具体数据我也不清楚。我想过一个办法让桌面、微博这种内容和手一起动的应用绘制到屏幕的速度快一帧(16.7ms),其实就是抵消之前提到的慢的那一帧,需要framework层和app层一起配合改动,目前已申请了专利但代码还没进,将来有时间了应该会进到MIUI。感兴趣的可以看看专利:。===============================================================最后我来用专业技术分析一下微博app在Android里掉帧的原因。非编程人员可以跳过。(这个过程我使用的是小米3高通版+最新版微博app。)最初,我认为这种现象很像GC(垃圾回收)导致的,于是打开logcat观察每次卡顿的时候有没有GC发生。结果发现并没有。停下来的时候才会有GC,这说明微博app在滑动过程中控制得不错,在停下来的一刻才去分配内存,使GC不影响帧率。然后我打开“开发者选项”-&“GPU呈现模式分析”-&“在屏幕上显示为条形图”(好像是4.4才有这个选项,之前的只能在dumpsys里看),这会在屏幕上直观的显示每帧绘制花费的时间。屏幕上有条基准线大概是16ms,如果超过这条线则很有可能掉帧了。如果下面的蓝色部分很长则说明是软件draw的部分太费时,那么可以通过traceview来继续分析draw的java代码。(我假定了现在的app都是硬件加速的方式。)如果中间红色部分很长则说明是OpenGL ES绘制过程太费时。可以用gltrace来分析OpenGL ES的调用过程。打开选项后使用微博app,发现虽然偶尔有超基准线,但并不严重,并且卡顿的时候并没有明显异常。于是我开始使用systrace,这下就很明显了:可以发现每隔几帧,就会有一次大间隙,图中我圈了红圈圈的两个地方都明显超过正常的耗时时间。现在问题是,这些地方的代码在干什么呢?是什么花费了这么长时间?可以发现每隔几帧,就会有一次大间隙,图中我圈了红圈圈的两个地方都明显超过正常的耗时时间。现在问题是,这些地方的代码在干什么呢?是什么花费了这么长时间?放大后发现都是这两个:obtainView和setupListItem。它们都是在draw之前调用的,这也解释了通过上一步的方法(“GPU呈现模式分析”)为什么没有显示出来,因为那个方法只展示draw里面的时间消耗。放大后发现都是这两个:obtainView和setupListItem。它们都是在draw之前调用的,这也解释了通过上一步的方法(“GPU呈现模式分析”)为什么没有显示出来,因为那个方法只展示draw里面的时间消耗。通过在源码里搜索obtainView和setupListItem,可以发现是AbsListView的obtainView方法和ListView的setupChild方法打下的这个log。接下来,我们用traceview来看看这两个方法里面究竟调用了什么代码导致耗时过长。跟踪obtainView最终到了这里:代码混淆了,看不太出来了,也懒得再跟下去了。但随便点了点然后看到:代码混淆了,看不太出来了,也懒得再跟下去了。但随便点了点然后看到:TextView.setText用了挺多的时间。感觉Android团队应该优化优化这个方法。TextView.setText用了挺多的时间。感觉Android团队应该优化优化这个方法。然后再来跟踪setupChild方法:都是measure占用的时间,并且调用次数比较多。这应该说明了View的数量不少。用hierarchyviewer看了下,的确不少,一条微博有50多个View:都是measure占用的时间,并且调用次数比较多。这应该说明了View的数量不少。用hierarchyviewer看了下,的确不少,一条微博有50多个View:结论:我们最终大致找到了耗时的代码及部分原因。这两个耗时方法应该都是有可能减下来的,但应该不那么容易。===============================================================具体问题分析完了,这里讲讲整体Android的流畅问题。先聊聊目前最高票数的答案 邑封:。总的来讲,前面的内容都没问题:Android从最初就对Window级别的动画用了硬件加速(在SurfaceFlinger用OpenGL ES绘制)。3.0开始View也可用硬件加速来绘制。随后这个答案里说多个窗口的不同进程中的GL上下文切换代价很高。首先,现在的GPU一般都有MMU,可以方便的切换上下文。其次,大部分的情况下,Android都只有一个需要GL绘制的窗口,就是当前使用的app窗口。其他显示的窗口如状态栏,在没有内容更新的时候是不需要绘制的,SurfaceFlinger上已经存储着上一次绘制的结果。答案里提到了窗口内容“最后的组合”,这个是每帧都要做的,只是,SurfaceFlinger在大部分情况下是用的Hardware Composer以overlay的方式来合成的,并不需要OpenGL ES,在不满足Hardware Composer合成条件的情况下才会用OpenGL ES合成。Hardware Composer比OpenGL ES的方式性能更好、耗电更低。(我们有过测试,我们的数据是耗电大概少20%)。这里再说一下究竟哪些情况是可以用Hardware Composer来合成的,Android对厂商的建议是有虚拟键的应支持4层合成(常规的桌面:壁纸+桌面+状态栏+虚拟键),没有虚拟键的是3层。这可以看出在桌面上放一个第三方app的悬浮窗口对性能及耗电是有不小影响的。随后答案提到渲染2.5次的数据。是的,我曾在某Google工作人员博客或是官方文档里看到这样的说法,建议我们每个窗口渲染的像素数不要超过窗口大小的2.5倍。于是我写了个程序测试每帧绘制全屏图片N次时的帧率。测试程序:源码:大家都可以下载这个程序测试自己手机的表现结果。主要测试像素渲染性能、纹理加载性能。(点击“开始测试”后,中间的数字是最近1秒绘制的帧数,通常越大越好。)我的测试结果是在米2上可以绘制18次全屏图像仍然满帧率。在米4上绘制21次仍然是满帧率。可以看到现在的GPU渲染性能是非常好的。单纯的渲染像素数量不会是瓶颈。(当然,可以的话还是渲染内容越少越好。)最后答案说:后台程序优先级低,它们满打满算也无法占用超过 10% 的 CPU 资源。于是我又写了个测试程序:源码:(点击“启动线程”后按HOME键退出,看其他app是否使用流畅。按Back退出也行,不过会有内存泄露。)测试结果发现后台进程的CPU占用的确被限制了,对其他app的UI流畅性影响很小。不过可惜,Android的设计一直是本着开放的态度,它允许我们自己把自己声明为前台进程(测试程序中点击“启动前台服务”),虽然被切换到后台了,可还是按前台进程来对待。经测试,这时候其他app的界面卡得一塌糊涂。桌面滑动非常卡。顺便说一下,这种把自己声明为前台进程的程序,第三方app没ROOT的话是杀不死它的。在MIUI里,则可以被“最近任务”界面的上划图标或一键清理给杀死的。(想到了MIUI 6安全中心的一句台词:系统级的安全)对于Android系统的流畅性,Android确实为之做了很多努力,如:窗口级动画早就是硬件加速,Android3.0开始View级绘制也支持硬件加速,Android4.1使用VSync和3缓冲,SurfaceFlinger的overlay机制,等等。但Android的坑也很多:垃圾回收时会暂停所有线程,碰到几乎必然卡帧。(最近改善:4.4允许图片在不同大小时重用;ART改善垃圾回收。)上面说了渲染像素是非常快的,可是纹理加载则是非常慢的。上面提到米2可以绘制18次全屏图像保持满帧率,可如果每帧都修改则只能承受一张的全屏图像,当有2张全屏图像每帧都修改的话就达不到满帧率了。(测试程序选上“每帧修改图片”可以测试这个。)基于这个原因,频繁修改的软件层View慎用。设置View的alpha会导致每次发生离屏缓冲。(最近改善:大概是4.2开始可以设置为alpha不导致离屏缓冲)Canvas的saveLayer不加CLIP_TO_LAYER_SAVE_FLAG则会有个Texture Copy方法非常耗时。某些情况下设置alpha等也会碰到。某些情况下碰到quickReject失效时会尝试绘制不在屏幕上的元素。等等。总之,在Android上实现功能比较容易,但如果默认实现有了性能问题,要想解决就不好说了,有时候要绕很远,有时候甚至绕不过去。===============================================================注:第一个测试程序里“图片数量”大于一定值(我的米2是13)的时候帧率会大幅降低,这是因为超过了纹理缓存最大值。相关链接:Android图形架构(绘图慢一帧的事情这里有说):Android Performance Case Study:
我是来告诉暂时排名第一的
,数据陈旧是要不得的。具体看原文:觉得不跟手是屏幕响应时间问题为主还是软件优化问题为主,应该可以判断了。
=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=写了这个回答,是为了指明当时排第一的
的回答中,作为论据的客观测试数据太过陈旧,无法支撑其论点。那时
的答案在众多不带思考的赞同下扶摇直上,甩所有答案一大截,我觉得对大家的误导过大所以写了这个没有真正回答题主问题本身的回答。就问题本身而言,推荐各位看
试了一下,iOS和Android下上下拖动网页感觉不出来明显的不同,倒是两指缩放,iOS明显要快一些,能达到跟手的频率至少比Android高1/2。不过还是要看不同的应用的,应用写不好怎么都白搭,比如最近搜狐视频iOS客户端就卡得要命,每次点击都需要2分钟的时间才有反应。
你们只看到了开发者,忽视了手机。大多数手机的屏幕调教决定了不可能跟手。不信去开发者选项勾选显示触摸操作,然后快速在屏幕上乱画,你看那个圆点的运动轨迹。大多数都不跟手。这种手机应用再好也会有影响的。
其实我觉得最主要还是开发者对于应用的优化不够,太多的Overdraw和Layout方面的问题,Android开发者本身为了适配屏幕分辨率和解决其他一些兼容性问题已经耗费很多精力了,很少有开发者会花很多精力去做细致的性能优化,有的甚至连优化的方向都不知道。现在的官方微博客户端要我看在Overdraw方面还是很严重,然后在异步加载图片的时候帧率也不够稳定,算不上流畅。再则由于Android平台本身机能没有强大到优化烂的应用也能跑的非常流畅暴露了优化不够的事实,特别是手机厂商的定制ROM相比原生系统都一定程度牺牲了一些流畅性导致这个问题显露的更加明显,所以在Android上面作出流畅的应用要付出比iOS更多的精力。其实Google这些年一直在系统层面作出努力提升系统的UI性能,从硬件加速到Project Butter到Reorder&Merge绘图操作等等,但是我感觉Google对于Android开发最佳实战宣传不够,国内有多少开发者上Youtube看过I/O大会上面的Android Session?几乎每年都有讲关于系统图形性能方面的Session。所以这里面也有国内开发者开发水平和眼界的问题。综上所述:一是受限于Android平台本身性能不够强大做出相同流畅度的应用比iOS更加困难,二是国内开发者对于Android开发性能优化方面的最佳实践知之甚少。update:某些答案中说屏幕触摸反应速度是影响流畅度最大问题的回答并不靠谱。我本身是做Android应用程序开发的,我举一个例子就能质疑这个结论:为什么原生系统(比如运行Android4.4的Nexus5)上面自带的App能运行得丝般顺滑而第3方开发的应用(特别是国内应用)就普遍比较卡?他们的运行环境是一样的吧?屏幕也是一样的吧?为什么流畅度就硬是差一些呢?原因就是SystemApp是Google开发的,他们的开发人员了解如何做出性能优秀的应用,了解Andorid开发的最佳实践。而第3方的开发者水平参差不齐,优化经验不如Google开发人员,导致写出的应用运行效率也不如SystemApp,站在同一个系统和运行环境里面讲,这就是最主要的原因。 上面的一些测试,能反映的最多也只是当手指触摸到屏幕的那个瞬态反应的延迟,并不能完全说明Android不如iOS流畅的原因。我觉得流畅性主要表现再2个方面:一个是触摸反应延迟,一个是渲染的帧率,而且后一个的重要性更大。可以想象一下从手指开始触摸屏幕到UI开始滑动的那100ms的延迟给你造成的不流畅感觉大,还是在滑动过程中不稳定帧率造成的卡顿感觉大?其实Google这些年的Android版本更新也一直致力于改善屏幕触摸延迟(找了个4.4的更新介绍有兴趣的可以看看:),虽然可能还是比不上iOS,但是我觉得在这方面的差距已经很微小,带来的感受上的差异也是很微妙不容察觉。更多的不流畅性还是体现在优化烂的应用运行不稳定的帧率上面,比如在某个瞬态后台线程异步加载图片完成后在UI进程执行某个callback方法要显示,如果图片太大就需要根据ScaleType实时缩放到适合的尺寸显示到ImageView上面,这个时候如果图片太大缩放操作时间太长就有可能造成主线程阻塞较长时间,影响了系统UI进程在单位时间片内的渲染,导致掉帧。我再举一个例子也能反驳屏幕触摸反应速度是影响流畅度最大问题的观点:为什么在滑动显示单行文字的列表项一般不会觉得卡,而显示比较复杂布局的列表项(如微博)会比较卡?他们的屏幕和运行环境是一样的吧?触摸延迟都存在吧?为什么呢?这是由于列表项的布局过于复杂,UI控件在整个绘制的过程中(onMeasure()测量大小-&onLayout()分配位置-&onDraw()绘制)会花费更多的时间,比如各UI控件之间的相对位置和大小可能是互相影响的,这就导致在渲染每一帧的时候需要更多的时间来计算大小和确定位置,然后绘制阶段也需要多执行一些绘图操作来画完所有的UI控件。面对复杂的界面,有经验的开发者会尽量去避免界面的Overdraw(过渡绘制),减少UI层级,选用性能更好的ViewGroup(比如FrameLayout性能比LinearLayout好,LinearLayout性能比RelativeLayout性能好,但是布局能力最强大适应性最好的是RelativeLayout,在功能实现和性能优化中平衡达到最优需要经验),避免图片实时缩放,避免在调用频繁的关键的路径创建对象减少gc频率,合理的管理Bitmap大对象(LruCache)等等(当然还有其他一些优化技巧不在此一一列举了)。还有讲什么进程优先级问题的答案说的也不是最主要的原因,Android的UI渲染进程的优先级可能不是最高但也是比较高的,不会说他UI渲染优先级设置到比后台线程还低的情况,这点不用过度讨论,Google也没蠢到那种地步,不服自己去看Android SDK源代码。我不否认屏幕触摸延迟也是造成Android滑动感觉不流畅的原因之一,但是站在一个开发者看到的角度来讲,我觉得在现有Android最新版本的系统优化下,他的影响远没有应用优化烂带来的影响大,优化好的Android应用跑在最新的Android版本上基本可以运行的跟iOS应用一样流畅。
這不是性能問題,是設計問題。「跟手」和「流暢」不是可測量的參數,而是人的心理感覺。光看觸屏響應時間不能說明哪個更流暢,正如 1300 萬像素的攝像頭拍出的照片不一定比 800 萬像素的攝像頭好。
咱觉得这版微博优化还行,硬件加速、图片延迟加载都有,我手边三年前的机器都能跑到满帧。题主可以去下个 FPS Meter(测帧数的,需要 ROOT 权限,MIUI 需要允许悬浮窗),然后再去刷你的微博,滚动时右上角接近 60FPS 的话, 的答案就很可能是最符合你的提问的 —— 问题在于手机屏幕调教,而不在 App 开发者。其实只要是触屏,都肯定会有轻微的延迟。可以尝试在开发者选项里把「显示触摸操作」打开,然后手指在屏幕上画圈,不需要很快 —— 如果完全没有延迟的话,圆点就应该可以一直被手指遮住 —— 但实际上,无论是什么 Android 设备,一定可以看得到指示触摸的圆点。以及,在满帧情况下的这种「滑动不跟手」,还有可能是软件本身就是这么设计的滚动算法 —— 比如有几个版本的 Sense 里自带相册的缩放和滑动都不跟手得很夸张;比如在 GO 桌面的设置里,你可以把滑动速度调到最慢,就会发现虽然流畅依旧,但明显不跟手;又比如 Wacom 的「卷动」,也是可以按个人喜好,使滚动视图完全不跟手(更快或者更慢)。对于电容屏而言,屏幕采集到手的「轨迹」,其实是一系列连续的点。如果在 Android 的开发者选项里打开「指针位置」,快速地在屏幕上划一下(划完后手指离开屏幕),在末端会看到有轨迹不止一条:蓝色那个就是屏幕采集的实际轨迹(可以看到是几个点连接成的),紫色的是推算的「手指离开屏幕」过程的平滑轨迹。// (由于看不出轨迹随时间的变化过程,这个并不能解释滚动视图不跟手的现象。)显然,无论是哪个次元的算法,不经过几个采集周期,就无法得到红色的平滑曲线。滚动要做到平滑流畅,也是要对多个采集点上的速度做平均,所以某种意义上,完全的「跟手」是不存在的 —— 只不过是 iOS 设备的软硬件都足够优秀,这一过程处理得足以让人的感官认为是「跟手」的。类似这样的「考虑到硬件采集的触摸轨迹本身不平滑,于是延迟一段时间来算平滑轨迹」的设计还有——
你手指一接触iPhone屏幕,内存基本就让给了UI,再加上单线程能力极强的A6、A7,无比流畅的感觉就产生了 。
硬件:iPhone的屏幕响应速度比绝大多数Android手机都要快应用:由于Android对第三方应用限制宽松,一些应用使用了非官方控件,代码优化不好会严重影响反应速度。这方面国产应用最多系统:Android手机厂商大都对系统进行了定制,如果只是改改颜色、按钮样式对应用影响不大,但很多定制ROM会改变一些系统底层文件,从而影响第三方应用运行,比如smartbar。版本:Android手机有多个版本分布,虽然Google play services能为低版本系统提供最新API支持,但国内手机大都不带Google apps,新版本应用对低版本系统的支持度肯定不好。说这么多,其实我想说的是,手机硬件发展到今天,除非你买了个四五百块钱的Android手机,不然流畅性已经不会影响你使用Android手机的体验了,普通用户也感觉不出来那几十毫秒差别的响应速度。
晚上看文档看到一点东西,供参考。原网址:The key to a smoothly scrolling
is to keep the application’s main thread (the UI thread) free from heavy processing. Ensure you do any disk access, network access, or SQL access in a separate thread. To test the status of your app, you can enable .======================================================================对于不跟手的现象,我觉得是因为触摸屏响应慢了点,不是有测试说iPhone的触摸屏响应速度最快么?对于流畅,我觉得与GPU渲染有关,我手上的手机是Moto G,运行Android 4.4.4,GPU渲染是开着的,使用知乎客户端的时候,怎么滚动,都是流畅的,还有一台电信送的华为机,GPU渲染没有开,使用知乎客户端时,上下滚动会有卡顿。
额,回答好多人啊,看来我程序员屌丝大军还是很可观的。回答一下吧,你的旗舰机的分辨率不知道要比10年的小苹果大多少了,一点可比性都没有。虽然代码效率有一定关系,但主要还是分辨率。
这是应用设计水平问题。Android里面什么渣应用都能过审核都能上架,所以开发商通常不自觉的降低了对Android应用性能的优化。实际上只要用心优化,Android应用一样可以很跟手,只不过大多数产商没动力做而已。亲儿子装google原生应用是很称手的,一部分对Android很认真的开发者也开发出了在Android下体验很好的应用。…………只不过这些开发者一般就没怎么在意iOS版本而已。开发者的能力是有限的,倾向性是明显的,ios版做得好的应用,Android版本经常不认真做,而Android版做得好的应用,iOS版很可能没有或者很简陋。
举个相机的例子,ip的相机点击对焦后,屏幕上很快出现对焦的符号,但是对焦声音却是在后面,说明什么,说明ip为了让人感觉良好做了点小动作,至于这样做好不好,不好说,强迫症患者估计不会这么认为。
我所知道的有两方面问题:1、Android是个设计比较现代的系统,所有程序都运行在独立的沙盒中,以保证安全性和系统的稳定性。比如我现在在打字这个屏幕中,显示着状态栏这个程序,知乎这个程序以及虚拟键盘这个程序。用户看到的每个界面都是系统把所有需要显示的程序的界面合成之后呈现的。这个过程比传统操作系统复杂,因此延迟较高,而且早期手机GPU还不支持多目标2D加速故不能有效地使用GPU,因此卡顿。即使到4.4的今天,动画帧数仍然是个话题,所以屏幕合成还是比较消耗性能的。这一点
的答案比较准确详实2、Dalvik VM的垃圾回收存在卡顿现象,而Android单个进程允许的内存比较小,所以滚动列表需要不停地释放内存和加载新内容,也就格外容易感到卡。ART显著降低垃圾回收内存消耗,应该是值得期待的。WP对程序内存使用也有较多限制,所以有各种“加载中”,并且早期列表滚动很卡。
iOS优先反应屏幕,Android优先处理程序框架
我自己用的nexus5,很流畅,微博这个软件就可以看出,用weico和fuubo很流畅,Google+更是如此,但是换成官方的,呵呵。所以我觉得还是app不用心和一些第三方rom自带软件太多导致的
不请自来尼玛看错了……原来问的是屏幕反应……害得我打了几百字又删掉……用的是手机啊!1 因为安卓的屏幕反应机制是 Application--Framework--Library--Kernal 其中 library才涉及到屏幕,再来看看ios呢 Touch--Media--Service--Core 我去! 只要你触摸了就立马给反应……真是机智!2 ios这货用的是GPU加速,就是说平常的什么过度啦动画啦光影啦这些都是gpu的工作,而我们的傲娇CPU就可以专心致志的响应用户的操作了~随时随地~ 苦逼安卓——什么都是CPU来,gpu表示游戏的时候才会用到——平时闲的X疼……3 Android的编程语言是JAVA,而iOS的则为Objective-C。Objective-C的优势是效率高但比较“唯一”,而JAVA的优势则是跨平台不过运行效率相对偏低,其实这两个编程语言所带来的机制不同,就已经造成了各自系统之间的流畅性差异化。这才是根本原因! 这也是为什么iOS封闭,安卓开放的根本原因。4 APP的质量 Apple的手机一年不过两三部,开发者们有大把时间来进行开发,优化,适配,而且苹果官方也会提供帮助。来看看安卓……卧槽印传单吗一周几部手机! 如此快的速度开发者们根本没时间来进行优化好不好!╮(╯▽╰)╭答完了,手机码字果然好累T^Tupdate
知乎里的人……好可怕……被找到好多问题,我是不是应该把这个答案删了免得误导别人呐?
iOS解决卡顿问题的两大绝技:一个是延长动画时间,让人感觉如德芙般丝滑的同时忘记其实是个Loading过程,只不过比Android的转圈圈processbar好看多了。另一个就是切回程序时先显示上次退出的截图,偷偷再加载程序,让人觉得卧草好屌啊瞬间秒开有木有!

我要回帖

更多关于 avid media composer 的文章

 

随机推荐