android自定义View_3——Optimizing the View

时间:2021-08-29 10:00:53

前言:现在你已经有了一个自定义的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标签:

      android自定义View_3——Optimizing the View

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

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

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