基于Launcher代码改进的水平视图容器(类gallery)

来源:互联网 发布:只会ps能做淘宝美工吗 编辑:程序博客网 时间:2024/06/05 04:40

         Android Launcher是基于水平的视图容器(ViewGroup)。最外面的是workspace,是一个viewgroup. 每一屏幕就是一个celllayout.,也是一个ViewgroupCelllayout管理每个View,即cell.. 原生的android Launcher源代码里面对屏数有一定限制,是基于内存考虑的。

目前的我对Launcher改进,能满足对无限制数量的需求。大概的思路如下:

启动一个后台线程,用于后台构建View. 将数据赋予View Tag里面。保持五屏的视图(即五个celllayout. 当向右或向左滑动的时候,会将向前或向后的一屏View清空,所启动的后台线程同时向后或向前生成新一屏的视图。这样就可以满足无限数量的限制。

横竖屏切换的时候,由于横竖屏的布局和每屏数目不一样,所以数据要重新构建,先构建当前屏的视图,然后再向左和向右构建视图,以保持五屏的视图Celllayout。这样就保证了横竖屏幕切换的时候不会慢。

搜索功能和横竖屏切换差不多,都是要重新构建workspace.也是构建当前屏的视图,然后再向左和向右构建视图。

 

目前基于Launcher代码改进的水平视图容器,还存在以下不足:

1. 还不是真正意义上的无限数量,数据源越大,celllayout就越大,目前只对Cell这块进行旧视图的清空和新视图的构造。因为cell是最耗内存资源。

       

     

原创粉丝点击