学习
实践
活动
专区
工具
TVP
写文章
  • 广告
    关闭

    【玩转 GPU】有奖征文

    精美礼品等你拿!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android 性能优化布局渲染优化 ( CPU 渲染优化 | 减少布局的嵌套 | 测量布局绘制时间 | OnFrameMetricsAvailableListener | 布局渲染优化总结 )

    FrameMetrics 代码示例 三、 布局渲染优化总结 一、 减少布局嵌套 ---- 在 【Android 性能优化布局渲染优化 ( GPU 过度绘制优化总结 | CPU 渲染过程 | Layout Inspector 工具 | View Tree 分析 | 布局组件层级分析 ) 博客中引入了 CPU 渲染优化 , CPU 渲染优化的核心就是减少布局嵌套 , 布局嵌套使用 Android Studio 中的 Layout Inspector 工具进行查看 ; CPU 渲染的优化的核心就是减少布局的嵌套 , 推荐使用约束布局进行开发 , 只有一层嵌套的布局 ; 减少布局的嵌套 , 能极大减少 ; 能够被优化布局 : 假如父布局中只有一个子布局 , 子布局中有若干组件 , 那么可以直接将子布局的组件放在父布局中 , 将子布局这个层级干掉 , 或者将父布局层级删除 ; 一个父布局没有分支的布局 , 只有一个子布局 , 那么大概率可以优化删除父布局或子布局中的一个 , 两者保留一个 ; 强烈推荐使用 ConstraintLayout 约束布局 , 没有以上布局嵌套问题 ; 二、 布局渲染时间测量

    13210

    Android性能优化布局优化

    为什么需要优化布局 优化布局不是说优化界面的显示效果更好看、更美观。是指让界面的交互体验更好、更流程。因为手机性能有限,而绘制UI布局是很吃资源的(CPU,GPU)。 所以,需要我们写出优美简洁的布局,尽可能的少占资源。 我们平时玩游戏的时候,会看到游戏中会显示fps。当fps的值越大游戏越是流畅,当fps接近60的时候再往上也无法感知了。 如果我们的布局写的过于复杂,系统没办法在16ms中绘制出一帧的时候,这时候的页面体验就会让人感觉卡顿。 老司机是怎么优化的 ① 使用include标签 对于像我们大部分页面都有的顶部的TopBar这类UI,完全不需要每一个UI自己都重新写一份,代码冗余也不利于管理。 ④ 使用ConstraintLayout 这个在之前的有一篇专门介绍的文章了,减少布局的嵌套使用这个布局是最好的了,以前那种使用好几层嵌套才能实现的UI。

    38630

    Android绘制优化(二)布局优化

    前言 我们知道一个界面的测量和绘制是通过递归来完成的,减少布局的层数就会减少测量和绘制的时间,从而性能就会得到提升。当然这只是布局优化的一方面,那么如何来进行布局的分析和优化呢? 1.布局优化工具 在讲到如何去布局优化前,我们先来学习两种布局优化的工具。 Android Lint Android lint是在ADT 16提供的新工具,它是一个代码扫描工具,通过代码静态检查来发现代码出现的潜在问题,并给出优化建议。 2.布局优化方法 布局优化方法很多,主要包括合理运用布局、Include、Merge、ViewStub,下面我们来一一对这些内容进行讲解。 使用Include标签来进行布局复用 一个很常见的场景就是,多个布局需要复用一个相同的布局,比如一个TitleBar。

    79280

    详解Android布局优化

    经验告诉我们,往往简单的方法,得到的结果不是最优解,那么我们通过一个例子来研究一下怎么去优化我们的XML布局吧,下面通过经典微信中的“发现”tab页面中的布局来看看怎么实现。 ? 答案是肯定的,废话不多说,我们直接上一份我优化过的布局代码吧。 由上图看出除了根布局,我们自己写的布局有三层,两层都是RelativeLayout。那么能否优化呢? (1)首先我们可以利用include标签简化xml布局。结果变成如下: <? 利用merge标签以后的布局层次如下: ? 很明显减少了一层RelativeLayout布局,从而优化布局。 懒加载布局 ViewStub 除了以上两种方法来优化布局,还有其他办法来继续优化布局,在某些情况下,有些布局是仅在需要时才加载,比如小米手机的添加联系人功能就有在编辑姓名的时候有一个下拉按钮显示更多输入信息

    28930

    Android性能优化系列之布局优化

    在Android开发中,UI布局可以说是每个App使用频率很高的,随着UI越来越多,布局的重复性、复杂度也会随之增长,这样使得UI布局优化,显得至关重要,UI布局不慎,就会引起过度绘制,从而造成UI卡顿的情况 ,本篇博客,我就来总结一下UI布局优化的相关技巧。 学会使用布局标签优化布局 (1)<include>标签 include标签常用于将布局中的公共部分提取出来供其他layout共用,以实现布局模块化,这在布局编写方便提供了大大的便利。 (3)可优化布局:如一个线性布局(一个Imageview和一个TextView),可被TextView和一个Compound Drawable代替。 至此,布局优化的内容就到此结束了,有不足的地方,欢迎大家评论指出

    23820

    Android开发之布局优化

    1、抽象布局标签 (1) <include>标签 include标签经常使用于将布局中的公共部分提取出来供其它layout共用,以实现布局模块化。这在布局编写方便提供了大大的便利。 某布局作为子布局被其它布局include时,使用merge当作该布局的顶节点,这样在被引入时顶结点会自己主动被忽略。而将其子节点所有合并到主布局中。 普通View的绘制过程都是在主线程(UI线程)中完毕,假设某些画图操作影响性能就不好优化了,这时我们能够考虑使用SurfaceView和TextureView。 使用可见:Using Hierarchy Viewer , 演示样例图例如以下: (2) layoutopt layoutopt是一个能够提供layout及其层级优化提示的命令行,在sdk16以后已经被 lint代替,在Windows->Show View->Other->Android->Lint Warnings查看lint优化提示 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

    10910

    Android 启动优化(六)- 深入理解布局优化

    有疑问的可以一起探讨探讨,我的微信公众号程序员徐公 Android 启动优化(一) - 有向无环图 Android 启动优化(二) - 拓扑排序的原理以及解题思路 Android 启动优化(三)- AnchorTask 开源了 Android 启动优化(四)- AnchorTask 是怎么实现的 Android 启动优化(五)- AnchorTask 1.0.0 版本正式发布了 接下来,我们来说一下布局优化相关的。 布局优化的现状与发展趋势 耗时原因 众所周知,布局加载一直是耗时的重灾区。特别是启动阶段,作为第一个 View 加载,更是耗时。 而布局加载之所以耗时,有两个原因。 解析 xml 对象,反射创建 View 一些很常见的做法是 减少布局嵌套层数,减少过度绘制 空界面,错误界面等界面进行懒加载 那除了这些做法,我们还有哪些手段可以优化呢? compose-samples 小结 上面讲了布局优化的现状与发展趋势,接下来我们一起来看一下,有哪些布局优化手段,可以应用到项目中的。

    58010

    精读《磁贴布局 - 性能优化

    经过上一篇 精读《磁贴布局 - 功能实现》 的介绍,这次我们进入性能优化环节。 精读 磁贴布局性能优化方式有很多,比如通过空间换时间,存储父子关系的索引,方便快速查找到目标组件。 但有一个最核心的性能优化点,即碰撞性能优化。 试想,最朴素的判断组件碰撞方法是什么? 但磁贴布局的碰撞判断涉及整个画布,因为一个组件的移动可能引发另一个组件的移动,形成一系列连环布局变化,比如下面这个情况: [---] [ ] [ 为了最大程度利用栅格优化性能,这两种情况需要分别判断。 落点位置 由于磁贴布局的重力是垂直向上的,因此落点只会落在当前组件的上方,也就是落点只会与上方组件碰撞,因此考虑垂直向上的栅格区域即可。 总结 经过优化,磁贴布局在拖拽前、中、后各个阶段的计算复杂度均为 O(n),即一个拥有 500 个组件实例的复杂画布,也只要在每次拖动时循环 500 次计算位置,而配合空间换时间的一些 Map 映射关系配合

    12730

    css布局优化布局计算限制— containwill-change合成层

    在《浏览器层面优化前端性能(2):Reader引擎线程与模块分析优化点》提过:避免大规模、复杂的布局布局,就是浏览器计算DOM元素的几何信息的过程:元素大小和在页面中的位置。 尽可能避免触发布局布局的时间消耗主要在于:需要布局的DOM元素的数量 布局过程的复杂程度减少绘制区域有时候尽管把元素提升到了一个单独的渲染层,渲染工作依然是必须的。 在布局时,现代主流的浏览器都会做一些智能的判断,最终决定哪些需要改变,哪些不需要改变。不过,页面布局是很复杂的,浏览器不一定能判断到所有的情况。 本身提供不了太大性能优化,一般是和 layout 搭配使用。Treated as having no contentsstyle:有些 CSS 属性会影响不只宿主元素和其子元素,比如 counter。 /css-contain-property.htmlhttp://www.cnblogs.com/freefish12/p/5776747.html转载本站文章《css布局优化布局计算限制— contain

    14430

    Android性能优化(二)之布局优化面面观

    一、初识布局优化 通过《Android性能优化(一)之启动加速35%》我们获得了闪电般的App启动速度,那么在应用启动完毕之后,UI布局也会对App的性能产生比较大的影响,如果布局写得糟糕,显而易见App 那么本文我同样基于实际案例,针对应用的布局进行优化进而提升App性能。 在没有优化之前打开Overdraw调试,可以看到界面大多数是严重的红色:见下图。 ? 贴出这个布局的代码(贴出后超过公众号字数限制,可以点击查看原文查看布局代码)。 对比一下优化后的布局的颜色,可以看出Overdraw降到了可以接受的程度。 备注:有些过度绘制都是不可避免的,需要结合具体的布局场景具体分析。 经过这几步的优化之后,一般就不会再有布局的性能问题,同时还是要强调:优化是一个长期的工作,同时也必须结合具体场景:有取有舍! 参考:Android性能优化典范

    46130

    【Android 性能优化布局渲染优化 ( 过渡绘制 | 背景设置产生的过度绘制 | Android 系统的渲染优化 | 自定义布局渲染优化 )

    Android 7.0 之后的优化机制 三、 自定义布局渲染优化 一、 背景设置产生的过度绘制 ---- 1. ; ② 布局背景 : 布局文件总的背景 , 会增加一次 GPU 绘制 ; ③ 主题背景 : Activity 界面的主题背景 , 会增加一次 GPU 绘制 ; 2. ---- 在 【Android 性能优化布局渲染优化 ( CPU 与 GPU 架构分析 | 安卓布局显示流程 | 视觉与帧率分析 | 渲染超时卡顿分析 | 渲染过程与优化 ) 博客中分析了图像渲染的 : CPU 不传递这些组件到 GPU 中 , 但是在布局中仍然正常摆放 ; 2. 进行渲染 ; 如果没有发生变化 , 调用 invalidate 方法 , 只会在 GPU 中重新渲染 ; 不会重新 摆放 ( onLayout ) 与 测量 ( onMeasure ) ; 三、 自定义布局渲染优化

    23030

    Android-布局优化merge, viewStub, include总结

    多层布局的嵌套会导致页面加载慢,影响用户的体验,今天我们就来学学如何使用 include,merge及viewStub。 原来:如果给include设置了id,就会覆盖掉引用布局布局的id,所以解决办法用两种: 第一种直接获取include的id,进行findviewByid() 第二种将两者的id取名一致 我们选取第一种 image.png 2.merge merge标签是作为include标签的一种辅助扩展来使用的,也就是需要和include一起使用,它的主要作用是为了防止在引用布局文件时产生多余的布局嵌套。 image.png 欧克,我们看看我们将include中的布局改为merge,注意:merge必须放在布局文件的根节点上。 ViewGroup的id,layout是要加载的布局

    67710

    Android最佳性能实践(四)——布局优化技巧

    那么本篇文章我们就来学习一下,如何通过优化布局来提供应用程序的性能。还没有看过前面前面一篇文章的朋友建议可以先去阅读 Android最佳性能实践(三)——高性能编码优化 。 重用布局文件 Android系统中已经提供了非常多好用的控件,这让我们在编写布局的时候可以很轻松。 <include> <include>标签可以允许在一个布局当中引入另外一个布局,那么比如说我们程序的所有界面都有一个公共的部分,这个时候最好的做法就是将这个公共的部分提取到一个独立的布局文件当中,然后在每个界面的布局文件当中来引用这个公共的布局 而这个多余的布局嵌套其实就是由于布局引入所导致的,因为我们在ok_cancel_layout.xml中也定义了一个LinearLayout。那么应该怎样优化掉这个问题呢? 如果大家想要继续学习更多关于性能优化的技巧,可以到这个网址上阅读更多内容 http://developer.android.com/training/best-performance.html 。

    50581

    【Android 性能优化布局渲染优化 ( GPU 过度绘制优化总结 | CPU 渲染过程 | Layout Inspector 工具 | View Tree 分析 | 布局组件层级分析 )

    五、 实际的界面 UI 布局组件层级分析 一、 GPU 过度绘制优化总结 ---- 前两篇博客回顾 : 【Android 性能优化布局渲染优化 ( 过渡绘制 | 自定义控件过渡绘制 | 布局文件层次深 , 删除主题背景 ; 【Android 性能优化布局渲染优化 ( 过渡绘制 | 背景设置产生的过度绘制 | Android 系统的渲染优化 | 自定义布局渲染优化 ) 博客中讲解了布局文件中的背景如何处理 , 自定义组件在 GPU 渲染过程中过度绘制如何进行处理 ; 还有 Android 系统针对 CPU 传递数据到 GPU 进行的优化 ; 耗时操作总结 : 在 【Android 性能优化布局渲染优化 ( CPU 与 GPU 架构分析 | 安卓布局显示流程 | 视觉与帧率分析 | 渲染超时卡顿分析 | 渲染过程与优化 ) 博客中分析了图像渲染的 16 毫秒过程中 CPU 渲染 CPU 传递数据到 GPU 不需要开发者干预 ; 本篇博客开始针对 CPU 渲染过程进行详细讲解 , CPU 渲染优化 , 主要是提升 CPU 渲染的速度 , 即减少布局的嵌套 ; 上述优化过程中 , 需求是第一位的 , 不能为了优化优化

    19720

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 标准直播

      标准直播

      标准直播LVB依托腾讯多年的音视频技术平台,以及全球海量加速节点和领先的音视频 AI 技术,为开发者提供专业、稳定的直播推流、转码、分发及播放服务,全面满足低延迟、超高画质、大并发访问量的要求,适用于教育、游戏、媒体、电商、社区等场景。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券