2017/10/10学习笔记

1. 应用架构设计

     MVC模式:Module(数据层),View(显示层),controler(控制层),缺点是View和Module层耦合严重,Activity中的职责过多,代码臃肿。

     MVP模式:Module(数据层),View(显示层),Presenter(前边两者的桥梁),简单来说就是避免数据层和View显示层有直接的操作接触。

                       Module层负责进行类似数据请求的操作,注入到Presenter层, Activity中只包含View,View通过Presenter层中的方法获取Module层中获取到的数据。减少耦合,方便后期维护,避免Activity中的代码臃肿。


2.硬件加速中视图的绘制

   简单来说,在硬件加速环境下,View在执行至draw方法时,当调用canvas的drawXXX()方法去绘制View的时候,并没有真正的去绘制,而是创建了一个displayList,这个displayList中包含了这个视图的一些基本布局信息,至此为止,都是CPU进行处理,之后的绘制操作是通过调用OPENGL的API方法去进行真正的渲染操作,这个操作是在GPU(图像处理器)中进行的。

   硬件加速的优化点为:

         1.当View并未发生变化时,只需要直接复用之前创建好的displayList就可以。 

         2. View只有一些简单的属性变化时,比如更改透明度,只需要修改displayList中的属性即可。

         3.以上两点大大增加了View渲染的效率

    平时进行布局操作的时候需要注意的地方:

        1.如果XML的根标签(父布局)没有任何作用(无背景,无大小限制),则可以使用merge标签,一次减少UI的层次

        2. 尽量减少嵌套布局的出现,减少UI的层级

        3.自定义控件中,使用canvas.clipRect方法避免过度绘制

  

你可能感兴趣的:(2017/10/10学习笔记)