android Launcher源码解析01:UI格局详解02——获取应用列表

android Launcher源码解析01:UI布局详解02——获取应用列表

        本系列文章将开始android lancher源码分析,使用的例子是android 2.3中自带的launcher3源码。其下载地址为http://download.csdn.net/detail/xianming01/4383598

       在上一篇文章《android Launcher源码解析01:UI布局详解一》中,我们介绍了launcher3中的主题UI布局。这一篇我们将开始介绍其中的某个组成部分。

       今天要介绍的是是获取应用列表这一部分。

1、布局文件
       这一部分的界面显示是这样的:

android Launcher源码解析01:UI格局详解02——获取应用列表

      其组成成分为一个应用列表和一个home按钮。

       在lancher的布局文件launcher.xml中,关于应用列表的部分为:

这里实际上是包含了all_apps.xml这个布局文件,其内容为:

其作用是将all_apps_2d.xml这个布局文件包含进来,其内容为:

从上面我们可以看出,这一部分的实现是由一个gridview来显示应用程序列表,而home按钮则是一个view.

2、实现原理

      在AllApps2D.java这个类中,我们可以看到这一部分的实现。实际上在本人的博客《android Launcher基础知识》中有关于这一部分的简单形式,有兴趣的可以看一下,那个比较简单.
       在代码中是如何实现的呢?我们来找一下:

再看onclick()方法:在onclick方法中,有一下代码
我们再找一下showAllApps()方法
在上面用到了mAllAppsGrid,我们找一下这个控件:
上面代码是在Launcher.java中的setupview()方法中定义
all_apps_view是在all_app_2d.xml中定义。
你想找到AllApp2D.java中,可以找到mAllAppsGrid使用的方法,如addApps,removeApps,zoom这几个方法:

在zoom()方法里面有mGrid.setAdapter(mAppsAdapter),在构造方法中,给adapter已经赋值。
那是如何获取应用列表的呢?我们再回到Launcher.java中,在loadHotseats()中。由于该函数比较复杂,我们就不全显示了,只显示其中比较重要的部分:

这样就获取了。下面以一个简单的例子结束,获取在sd卡中安装的程序列表:
以上就是获取应用列表的UI布局这一部分的解析。其中还涉及到一些重要的方面没有解释,比如在有的手机上可以通过上下滑动来查看app,有些确实通过左右翻页来查看app,这个是如何实现的?这个将在下一篇文章中介绍。

参考资料:

launcher修改--获取应用列表launcher源码解析