优化视图

既然您的设计良好,可以响应手势和状态之间的转换,请确保视图运行速度很快。为了避免在播放过程中感觉呆滞或断断续续的用户界面,请确保动画一直以每秒60帧的速度运行。

少,少频繁

为了加速你的视图,从经常调用的例程中消除不必要的代码。开始工作 onDraw(),这将给你最大的回报。特别是你应该消除分配onDraw(),因为分配可能会导致垃圾回收,导致口吃。在初始化期间或在动画之间分配对象。切勿在动画运行时进行分配。

除了onDraw()精简之外,还要确保尽可能少地调用它。大多数呼叫onDraw()是呼叫的结果invalidate(),因此可以消除不必要的呼叫invalidate()。

另一个非常昂贵的操作是遍历布局。任何时候视图调用时requestLayout(),Android UI系统都需要遍历整个视图层次以查明每个视图需要多大。如果发现有冲突的测量结果,则可能需要多次遍历层次结构。UI设计师有时会创建嵌套ViewGroup对象的深层次结构,以使UI正常运行。这些深层视图层次结构会导致性能问题。使您的视图层次尽可能浅。

如果您有复杂的用户界面,请考虑编写自定义ViewGroup来执行其布局。与内置视图不同,您的自定义视图可以针对特定应用程序对其子项的大小和形状进行特定的假设,从而避免遍历子项来计算测量结果。PieChart示例显示了如何ViewGroup作为自定义视图的一部分进行扩展。PieChart有孩子的意见,但它从来没有衡量他们。相反,它直接根据自己的自定义布局算法设置它们的大小。

参考文章
https://developer.android.google.cn/training/custom-views/optimizing-view.html#less

Android自定义控件学习(七)-------优化视图相关推荐

  1. Android自定义控件学习(四)------创建一个视图类

    创建一个视图类 精心设计的自定义视图与其他精心设计的类非常相似.它使用易于使用的界面封装了一组特定的功能,它可以高效地使用CPU和内存,等等.不过,作为一个设计良好的设计,自定义视图应该: 符合And ...

  2. Android自定义控件学习(六)-------使视图互动

    使视图互动 绘制用户界面只是创建自定义视图的一部分.您还需要使您的视图以与您模拟的真实世界动作非常相似的方式响应用户输入.对象应始终以与真实对象相同的方式进行操作.例如,图像不应该立即跳出存在,并在其 ...

  3. Android自定义控件学习(三)----- 自定义视图组件

    自定义视图组件 说明 Android提供了用于构建UI的基础上,基本布局类一个复杂和强大的组件化模式:View和 ViewGroup.首先,该平台包含各种预构建的View和ViewGroup子类 - ...

  4. Android自定义控件学习(一)-----属性

    Android中XML的命名空间.自定义属性 命名空间(namespace) XML 命名空间提供避免元素命名冲突的方法. 打个比方,A学校有名学生叫做林小明,B学校也有名学生叫林小明,那我们如何识别 ...

  5. Android自定义控件学习(五)-------自定义绘图

    自定义视图中最重要的部分是它的外观.根据您的应用需求,自定义绘图可以很容易或复杂. 本课包含一些最常见的操作 覆盖onDraw() 绘制自定义视图中最重要的步骤是重写该onDraw()方法.参数to ...

  6. android browser 书签 路径,Android Browser学习七 书签历史模块: 书签UI的实现(2)

    由于书签模块还是比较复杂的, 为了不让博客变得太长, 故拆分为两篇. 上一篇介绍了书签大致的实现, 本篇主要介绍 1.书签模块BreadCrumb的实现, 2.书签模块与Activity之间的通讯, ...

  7. Android自定义控件学习(二)-----自定义attr Style styleable以及其应用

    相信每一位从事Android开发的猿都遇到过需要自己去自定义View的需求,如果想通过xml指定一些我们自己需要的参数,就需要自己声明一个styleable,并在里面自己定义一些attr属性,这个过程 ...

  8. Android Browser学习七 书签历史模块: 书签UI的实现

    2019独角兽企业重金招聘Python工程师标准>>> 浏览器的书签界面功能还是比较丰富的, 主要有 1.可以按照列表和grid两种方式展示 2.同步后会显示不同用户的书签 3.可以 ...

  9. Android自定义控件:imageview重写onMeasure方法实现图片按指定比例显示,拉伸永不变形,解决屏幕适配问题

    使用ImageView会遇到的问题 在Android应用中,都少不了图片的显示,ImageView,轮播图,ViewPager等等,很多都是来显示图片的,比如一个广告条的轮播效果,参看博客:广告条效果 ...

最新文章

  1. 《数学之美》第3章 统计语言模型
  2. 检索数据_22_根据数据项的值排序
  3. Java 基于 UDP 实现 Socket中的多客户端通信
  4. java扫描指定package注解_java获取包下被指定注解的类
  5. 玩转Win32开发(2):完整的开发流程
  6. HDU5187 zhx#39;s contest(计数问题)
  7. RESTORE DATABASE命令还原SQLServer 2005 数据库
  8. MySQL忘记root密码重置密码(5.7版本)
  9. Oracle出现 The Network Adapter could not establish the connection
  10. Java区间拆分子集求和,对列表中的数字子集求和
  11. PDF翻译神器,再也不担心读不懂英文Paper了
  12. ad导出元件清单_如何Altium Designer 中输出元件清单(BOM表格)
  13. 加解密后字节数组和(16进制)字符串的相互转换问题
  14. windows10不能调节亮度的问题,始终显示0%或最暗
  15. 看甲骨文如何在云端一路高歌猛进!
  16. Deep Learning on Graphs: A Survey
  17. [unity3d][通过代码]制作模型,动态生成模型,通过点画模型
  18. ubuntu16.04输入密码登录无法进入工作桌面的解决方法
  19. 武汉理工大学数据结构综合实验——二叉树与赫夫曼图片压缩
  20. C++程序设计基础案例教程pdf

热门文章

  1. ibmt42装Android,IBM T42系统升级初步体会,爽!
  2. 大型Lambda的C# 泊松累积分布
  3. python重命名csv文件_Python根据文件中选定的字符复制和重命名许多小csv文件
  4. esp32树莓派_用树莓派 DIY 宠物自动喂食机,再也不用担心家里的萌宠了
  5. VUE 2 无法监听数组和对象的某些变化
  6. html调用阅读模式,easyread.js—给网站开启阅读模式html教程
  7. android 输出流对象,Android-IO流之对象操作流ObjectInputStream/ObjectOutputStream
  8. android中设置控件的搞,Android中如何自定义控件
  9. oracle完全卸载重装历程
  10. mtk android 设置默认铃声,[转载]MTK修改铃声资源