Android4.4-Launcher源碼分析系列之概述

這段時間研究了安卓4.4的Launcher源碼,決定把自己的收穫分享一下,歡迎各位留言.

把4.4的Launcher源碼導入到eclipse中時會報一些錯誤,這是因爲涉及到一些隱藏的api和資源.需要以下3個jar包

1.ramework_intermediates/classes.jar                                   這個主要是android的框架類

2.android-common_intermediates/classes.jar                        這個包含com.android.common.Search這個類

3.core_intermediates/classes.jar                                           這個包包含dalvik.system.VMRuntime這個類

我之前在網上下載了一個可以直接在eclipse上運行的源碼,鏈接在此:點擊打開鏈接

Launcher的源碼還是比較複雜的,很多類,如下圖


      

我將一些主要的類的功能說明列一下,便於大家理解

AddAdapter.java:爲setWallPaper提供adapter;
Alarm.java:提供定時操作,比如把快捷方式拖動到垃圾箱後讓垃圾箱消失再回復到原有的桌面;
AllAppsList.java:保存所有的app信息;
AllAppsView.java:對app的視圖進行控制;
AppsCustomizePagedView.java:是all app界面包括app和widget兩個部分,其中PagedViewCellLayout.java和PagedViewGridLayout分別用來存放app和widget;
AppsCustomizeTabHost.java:是all app的tabhost;
AppWidgetResizeFrame.java:用來改變拖拽到桌面上的widget的大小;
BubbleTextView.java:是每個桌面上快捷方式的text;
Workspace.java:是抽象的桌面的所有屏,其中的每一屏是一個CellLayout.java,而CellLayoutChildren.java是CellLayout.java的成員,它具體用於存放每個apk的快捷方式;
Cling.java:是第一次使用android手機的幫助手指;
DeferredHandler.java:是配合LauncherModel.java來進行更新的操作;
DragLayer.java:是launcher.xml的父控件,用於捕捉拖拽、點擊等事件;
DragController.java:是DragLayer的controller;
DragScroller.java:用於左右劃屏;
DragSource.java:被拖拽的源;
DragView.java:只是一個拖動時顯示的對象,並不是真正拖動的對象

DropTarget.java可以放置被拖動的對象的容器

Folder.java:打開文件夾用於顯示的類;
FolderIcon.java:文件夾未打開顯示在桌面上的圖標;
FolderEditText.java:文件夾的名字;
FolderInfo.java:文件夾的信息類,同樣繼承自ItemInfo.java;
Hotseat.java:桌面下方的一排快捷鍵,可由ODM定製,其點擊、拖拽等操作一般也由Workspace.java完成;
IconCache.java:icon緩存類,用於提高效率;
InstallShortcutReceiver.java:apk安裝的receiveer類;
InstallWidgetReceiver.java:widget安裝的receiveer類;
ItemInfo.java:launcher中所有信息的父類;
Launcher.java:launcher的controller;
LauncherModel.java:launcher的model;
LauncherApplication.java:launcher的進程類,只要進程不被殺死,其中的對象就可以使用;
LauncherAppWidgetHost.java:用來管理和創建桌面上的widiget(LauncherAppWidgetHostView.java);
LauncherProvider.java:繼續自ContentProvider,提供數據庫;
PagedView.java:實現翻頁操作的抽象父類,有翻頁效果的類都需要繼承自它;
PendingAddItemInfo.java:是all app中所有widget的信息類;
SearchDropTargetBar.java:search bar;
SpringLoadedDragController.java:是把app從all app拖拽到桌面上的整個桌面顯示的縮略圖,方便用戶查看;
Utilities.java:放置一些公共方法;

WallpaperChooser.java、WallpaperChooserDialogFragment.java:壁紙相關的操作類;

      

接下來我將分爲一個系列持續更新,歡迎大家留言.

     

        




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章