zoukankan      html  css  js  c++  java
  • Android Launcher结构分析

    Launcher是Android系统的桌面系统,是比较重要也比较复杂的程序,这里对其代码做一个分析,希望起到抛砖引玉的作用。

    1. Launcher有什么? live folder , widget , shortcut , wallpaper ,见 onActivityResult

    2. UI 分成 3 部分: workspace,  slibingdrawer,  deletezone

    3. Menu: 见 onCreateOptionsMenu in launcher.java

    4. launcher 类是个 activity, 遵循 activity 的生命周期。

    5. 资源文件比较多,这里只关注 Layout 相关的文件

    代码分析的主线: 

    1.  了解类

    2.  了解类的关系

    Launcher工程中的类:

    AddAdapter: 维护了 live fold  , widget , shortcut , wallpaper 4 个 ListItem , 长按桌面会显示该列表

    AllAppsGridView :显示 APP 的网格

    ApplicationInfo :一个可启动的应用

    ApplicationsAdapter : gridview 的 adapter

    BubbleTextView: 一个定制了的 textview

    CellLayout: 屏幕网格化

    DeleteZone : UI 的一部分

    DragController , dragscroller, dragsource, droptarget: 支持拖拽操作

    DragLayer :内部支持拖拽的 viewgroup

    FastBitmapDrawable :工具

    Folder : Icons 的集合

    FolderIcon: 出现在 workspace 的 icon 代表了一个 folder

    FolderInfo: ItemInfo 子类

    HandleView :一个 imageview 。

    InstallShortcutReceiver , UninstallShortcutReceiver :一个 broadcastrecier

    ItemInfo: 代表 Launcher 中一个 Item (例如 folder )

    Launcher: Launcher 程序的主窗口

    LauncherApplication :在 VM 中设置参数

    LauncherAppWidgetHost , LauncherAppWidgetHostView ,: Widget 相关

    LauncherModel : MVC 中的 M

    LauncherProvider :一个 contentprovider ,为 Launcher 存储信息

    LauncherSettings: 设置相关的工具

    LiveFolder , LiveFolderAdapter , LiveFolderIcon , LiveFolderInfo : livefolder 相关

    Search : 搜索

    UserFolder , UserFolderInfo :文件夹包含 applications ,shortcuts

    Utilities: 小工具

    WallpaperChooser :选择 wallpaper 的 activity

    Workspace: 屏幕上的一块区域

    widget : 代表启动的 widget 实例,例如搜索

    Launcher中类的关系,见下图(由于篇幅有限,不能把所有关系一一画出)。

      

    总结

    1) Launcher中实现了MVC模式(M:launchermode , V:draglayer ,C: launcher),以此为主线,可以得到 Launcher对各个组件管理的细节(如drag的实现)。

    2) 如果开始就深入各个实现细节则会发现千头万绪,很难有个清醒的方向。

  • 相关阅读:
    [转]JAVA程序执行顺序,你了解了吗:JAVA中执行顺序,JAVA中赋值顺序
    [转]浅谈Java中的equals和==
    [原创]java WEB学习笔记102:Spring学习---Spring Bean配置:bean配置方式(工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean) 全类名
    [原创]java WEB学习笔记101:Spring学习---Spring Bean配置:IOC容器中bean的声明周期,Bean 后置处理器
    C# 数组之List<T>
    C# 数组之ArrayList
    C# 数组之int[]
    reverse-XNUCA-babyfuscator
    reverse-daily(1)-audio_visual_receiver_code
    Python多线程和多进程谁更快?
  • 原文地址:https://www.cnblogs.com/yangzhenyu/p/2286030.html
Copyright © 2011-2022 走看看