本文来自http://blog.csdn.net/chenshaoyang0011 转载请申明文章出处!

Android系统的一大特色是它拥有的桌面通知系统,不同于IOS的桌面管理,Android有一个桌面系统用于管理和展示APP以及桌面Widget等。Android提供一个默认的桌面应

用,当然我们也可以使用第三方的桌面应用。Android的Launcher的源码在  \packages\apps\Launcher2。Launcher2的主布局文件包括res\layout-land\launcher.xml

 , res\layout-port\launcher.xml , res\layout-sw600dp\launcher.xml ,分别适配横屏,竖屏和7寸平板。内容大同小异,这里就以res\layout-port\launcher.xml的为例。

首先让我们看看launcher.xml中的结构:

[html]   view plain copy
  1. <com.android.launcher2.DragLayer  
  2.     xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"  
  4.     android:id="@+id/drag_layer"  
  5.     ...  
  6.     >  
  7.   
  8.       
  9.     <include  
  10.         android:id="@+id/paged_view_indicator"  
  11.         layout="@layout/scroll_indicator"  
  12.         ...  
  13.      />  
  14.   
  15.       
  16.     <com.android.launcher2.Workspace  
  17.         android:id="@+id/workspace"  
  18.         ...  
  19.         >  
  20.   
  21.           
  22.         <include android:id="@+id/cell1" layout="@layout/workspace_screen" />  
  23.         <include android:id="@+id/cell2" layout="@layout/workspace_screen" />  
  24.         <include android:id="@+id/cell3" layout="@layout/workspace_screen" />  
  25.         <include android:id="@+id/cell4" layout="@layout/workspace_screen" />  
  26.         <include android:id="@+id/cell5" layout="@layout/workspace_screen" />  
  27.     com.android.launcher2.Workspace>  
  28.   
  29.       
  30.     <include  
  31.         android:id="@+id/qsb_bar"  
  32.         layout="@layout/qsb_bar" />  
  33.   
  34.       
  35.     <include layout="@layout/apps_customize_pane"  
  36.         android:id="@+id/apps_customize_pane"  
  37.         ..  
  38.     />  
  39.   
  40.       
  41.     <include layout="@layout/hotseat"  
  42.         android:id="@+id/hotseat"  
  43.         ..  
  44.      />  
  45.   
  46.       
  47.     <include layout="@layout/workspace_cling"  
  48.         android:id="@+id/workspace_cling"  
  49.         ...  
  50.     />  
  51.   
  52.       
  53.     <include layout="@layout/folder_cling"  
  54.         android:id="@+id/folder_cling"  
  55.         ...  
  56.     />  
  57. com.android.launcher2.DragLayer>  

接着我们来一一认识每一个View控件。

1、最外层的DragLayer,是一个继承自FramLayout的View控件,显示的就是整个桌面根容器。桌面的所有控件都是位于DragLayer中。

2、id/dock_divider,使用了布局workspace_divider,其实就是一个ImageView。是Workspace与Hotseat之间的分割线。

3、id/paged_view_indicator,使用了布局scroll_indicator,显示效果是在id/dock_divider上显示一条淡蓝色的横线,来指示当分屏所处的位置

4、id/workspace ,工作空间拥有五个workspace_screen,即有五个分屏,每个分屏都可以放置shortcut和AppWidget,效果如下:

5、id/cell1..cell5 ,分别代表五个分屏

6、id/qsb_bar 搜索框/删除框,根据需要进行切换

        

7、id/apps_customize_pane,效果如下

8、id/hotseat 即主屏幕下方的五个快捷位置

9、id/workspace_cling当第一次运行Launcher2时,会显示的用于指导的动画,以后不再显示



10、id/folder_cling,第一次使用Folder时,展示给用户的指导画面。



这样,我们已经可以使每个UI界面及组件都对号入座,这会使接下来分析的时候更加清晰。

更多相关文章

  1. 【Android(安卓)基础】TextView的属性详解
  2. Android之TextView属性详解
  3. Android监听键盘显示和隐藏
  4. Android之UI学习篇八:使用GridView实现九宫格的菜单
  5. android不让程序显示在最近程序列表中
  6. Android(安卓)实用工具Hierarchy Viewer实战
  7. Android(安卓)屏幕分辩率相关问题
  8. Android菜单详解
  9. android中scaleType详解

随机推荐

  1. 掌握JavaScript中的事件监听
  2. JavaScript中的对象描述符
  3. 在JavaScript中访问PHP变量[重复]
  4. JQuery Image滑块从json加载图片
  5. 如何在sap.m.Datepicker中设置与上一行相
  6. 由浅到深的分析Javascript OO之写类方式
  7. JavaScript数组操作函数方法详解
  8. 在图像映射中的背景图像
  9. AngularJS错误:模块ngAnimate不可用
  10. 在phonegap上从服务器获取数据