• android自定义View_3——Optimizing the View


    前言:现在你已经有了一个自定义的view了,并且支持手势和过度动画等属性,现在你要确认这个view

       有够快的速度,为了使其在UI上不会显得迟钝或是卡停,你要保证view动画,能每秒最好有60帧。

    一:优化代码,减少请求次数

        1.为了使自定义的view能更快的响应UI,要尽量减少频繁调用子程序中的代码量,不要把太多的

         代码放在onDraw()方法中。

        2.尽量减少调用 invalidate(),每一次调用都会调用onDraw()方法,若是要调用的话尽量调用,

         带4个参数的invalidate()方法,而不是没有参数,因为带四个参数的,只是重新绘制view的一

         部分,而不是view全部内容。

        3.还有一个对提高UI效率的很重要的方法,就是减少view的布局深度,这样在初始化的时候,效

         率更高。

        4.如果自定义的view是很复杂,你可以使用继承ViewGroup来自定义view。

    二:使用硬件加速器,来更快的显示UI

        1.在android3.0中,提供的2D图形绘制系统,他是通过GPU来实现的。通过适当的使用GPU,

         会使你的UI显示效果明显得到提升,但并不是所有的应用都适合使用GPU。android的框架

         使你有能力控制应用的哪部分使用加速,哪部分不用。

        2.可以通过阅读Hardware Acceleration来了解硬件加速的使用。在使用的时候,注意SDK的

         版本要在11以上,才能使用。

        3.一旦你使用了硬件加速,也许会显著提升应用的性能,也可能你看不出来。硬件加速非常适

         用于图片的操作,如旋转,缩放等。为了获得GUP的效果,应该将那些频繁的工作交个他去

         做,因为这是他擅长的。

        4.使用的时候需要到LAYER_TYPE_HARDWARE标签:

          

          提示:通过使用GPU,onDraw()方法只调用一次,之后对图片的改变都是操作GPU中缓存的Bitmap。

        4.GPU虽然能提高UI的性能,但是他是使用底层的缓存控件实现的,所以不能无限度得去使用,所以有

         两个标签,来提示GPU是否缓存图片 LAYER_TYPE_NONE停止缓存,LAYER_TYPE_HARDWARE缓存。

  • 相关阅读:
    android system.img
    ab压力测试和CC预防
    ubuntu工具积累
    ViewManager
    PopupWindow
    singleton注意
    java byte[]生成
    java有符号无符号的转换
    C#垃圾回收Finalize 和Dispose的理解
    Silverlight 获取汉字拼音首字母
  • 原文地址:https://www.cnblogs.com/qinghuaideren/p/3494241.html
Copyright © 2020-2023  润新知