首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Launcher 源码(没写几行阑尾谈。)

2012-09-29 
Launcher 源码(没写几行阑尾聊。。)Launcher主要由下面这些view东东组成:别看名字千奇百怪,都是view哦privat

Launcher 源码(没写几行阑尾聊。。)
Launcher主要由下面这些view东东组成:

别看名字千奇百怪,都是view哦

private DragLayer mDragLayer;mDragLayer = (DragLayer) findViewById(R.id.drag_layer);private Workspace mWorkspace;mWorkspace = (Workspace) dragLayer.findViewById(R.id.workspace);private SlidingDrawer mDrawer;mDrawer = (SlidingDrawer) dragLayer.findViewById(R.id.drawer);private AllAppsGridView mAllAppsGrid;mAllAppsGrid = (AllAppsGridView) drawer.getContent();private HandleView mHandleView;mHandleView = (HandleView) drawer.findViewById(R.id.all_apps);DeleteZone deleteZone = (DeleteZone) dragLayer.findViewById(R.id.delete_zone);// 偷偷在setupview时建的,不是类成员。 给handleview set了一个handle

launcher运行时候能看到的。基本也就是这些元素组成的。

 LayoutInflater mInflater;

把各种xml文件对应的layout 部署到调用他的 Context上,即Launcher上。
在onCreate时初始化。


private AppWidgetManager mAppWidgetManager;

appwidget 管理控制相应的 widget app.

private LauncherAppWidgetHost mAppWidgetHost;

继承了AppWidgetHost 用来和appwidget service交互。

private final BroadcastReceiver mApplicationsReceiver = new ApplicationsIntentReceiver();    private final BroadcastReceiver mCloseSystemDialogsReceiver = new CloseSystemDialogsIntentReceiver();

两个receiver,对相应的intent进行响应。源码里只看到package的三个action:ACTION_PACKAGE_ADDED,ACTION_PACKAGE_REMOVED,ACTION_PACKAGE_CHANGED,还有个ACTION_CLOSE_SYSTEM_DIALOGS

    private final ContentObserver mObserver = new FavoritesChangeObserver();    private final ContentObserver mWidgetObserver = new AppWidgetResetObserver();

前面那个oversver监视LauncherSettings.Favorites.CONTENT_URI,后面那个监视(LauncherProvider.CONTENT_APPWIDGET_RESET_URI

private static final LauncherModel sModel = new LauncherModel();

LauncherModel用来保存launcher所有运行时的变量到内存中,并提供数据库相关借口方便参数操作。系统一般只有一个Launcherodel,保证正常显示。




protected void onActivityResult(int requestCode, int resultCode, Intent data) 

是像ContextMenu这类返回Activityesul时对桌面图标拾起,移动和创建的比较主要的逻辑,功能包括
REQUEST_PICK_APPLICATION,
REQUEST_PICK_SHORTCUT,
REQUEST_CREATE_SHORTCUT,
REQUEST_PICK_LIVE_FOLDER,
REQUEST_CREATE_LIVE_FOLDER,
REQUEST_PICK_APPWIDGET
REQUEST_CREATE_APPWIDGET
REQUEST_PICK_APPWIDGET
REQUEST_CREATE_APPWIDGET
看名字基本能看出来是做啥的。


private SlidingDrawer mDrawer;

这个就是抽屉的成员了。
一个抽屉包括两部分(其实是SlidingDrawer包括两部分): handler(手可以拉的地方) Content(拉开之后你看见什么)



不写了。。。Launcher太大了
Launcher整个是个dragLayer,由两部分: workspace,slidingDrawer组成。
workspace就是大家喜闻乐见的桌面,默认4*4,16个格子的CellLayout
slidingDrawer就是大家喜闻乐见的抽屉以及垃圾桶,,反正nexus已经不用,估计会废弃
slidingDrawer作为一个抽屉,包括handler和content(allappsgridview)两部分,外加一个回收站deleteZone
喜欢研究的自己看看源码,比啥都强-v-,因为源码挺好懂的

热点排行