网站大量收购独家精品文档,联系QQ:2885784924

视频秒开功能中界面绘制原理解析及调优实战.pptx

视频秒开功能中界面绘制原理解析及调优实战.pptx

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
视频秒开功能中界面绘制原理解析及调优实战android系统view层次view懒加载方式LinearLayout,RelativeLayout,FrameLayout等常用Layout的嵌套渲染性能onMearsure、onLayout、onDraw秒开开发中,针对性的优化View层次系统级别,windowmanagerservice(WMS),surface,windowmanager,opengl应用级别,viewRoot,measure ,layout,drawlayout inspector调试view问题演示demo Activity WMS ViewRootImplView性能优化一些方式懒加载ViewStub指向的布局文件解析inflate并替换掉当前ViewStub本身,并不是完全意义上的替换(与include标签还不太一样),替换时,布局文件的layout params是以ViewStub为准,其他布局属性是以布局文件自身为准。问题:addView嵌套性能结果LinearLayout:2FrameLayout:2RelativeLayout:64Hierarchy Viewer非root手机怎么办?(/romainguy/ViewServerViewServer)三个点大致代表三个过程Green?比50%的View快Yellow?在慢的50% View里Red?属于整个树中最慢的一些view使用这个工具需要注意的点结果只能参考,不是反应真实的性能(CPU)CPU状态影响,需要取平均值相对的值,需要结合看,红色不一定意味着是有问题的(参考)/studio/profile/hierarchy-viewer.html如何触发整个viewroot的绘制ViewRootActivityThreadhandleResumeActivityWindowManagerGlobaladdViewViewRootImlsetViewMeasure过程View的三种测量模式:UNSPECIFIED:父容器不对View有任何限制,要多大给多大。EXACTLY: 父容器已经检测出View所需要的精确大小,这个时候View的大小就是SpecSIze所指定的值。他对应于LayoutParams中的match_parent和具体的数值这两种模式。AT_MOST:父容器指定了一个可用大小SpecSize。View的大小不能超过这个值,它对应于LayoutParams的wrap_content。(例如:父布局width或者height设置一个具体值,或者match_parent,子布局设置为wrap_content。此时子布局的最大width或者height就是父布局的width或者height)。使用这种测量模式的View,设置的一定是wrap_content。MeasureSpecMeasureSpec通过将SpecMode和SpecSize打包成一个int值来避免过多的对象内存分配,共32位的int值,高2位代表SpecMode,低30位代表SpecSizeMeasureSpec 很大程度上决定了一个View的尺寸规格。 之所以说是很大程度是因为这个过程还受父容器的影响, 因为父容器影响View的MeasureSpec的创建过程。在测量中系统会将View的Layoutparams根据父容器所施加的规则转化成对应的MeasureSpec。 然后在根据这个measureSpec来测量View的宽高。Measure过程ViewViewGroup注意:wrapcontent抽象类ViewGroupmeasureChildWithMargins分析Linearlayout的measure为啥linearlayout如果有weight也会measure两次分析Relativelayout的measurefirstsecondthirdView复用测量数据小结view布局的原则(不影响层级的情况下,尽量不要用relativelayout,如果布局复杂,优先减少层次,可以用relativelayout) LinearLayout中的weight属性也会导致两次测量RelativeLayout的子View如果高度和RelativeLayout不同,则会引发效率问题,当子View很复杂时,这个问题会更加严重。如果可以,尽量使用padding代替margin。OnLayout布局,排列viewViewViewGroupOnDraw不要在里面创建对象为啥canvse就能画图DisplayListDisplay List的本质是一个缓冲区,它里面记录了即将要执行的绘制命令序列。优点:1.绘制窗口的下一帧时视图的UI没有发生变化,那么就不必执行与它相关的Canvas

文档评论(0)

189****0315 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档