赞
踩
最近打算研究下android的widget相关问题,并把一些心得在此稍作记录,哈哈,等研究完成了,如果有必要的话,也会把改动的源码贴出来,以飨读者。今天先来看看launcher2中添加widget的流程。
添加widget首先需要在laucher的空白处长按,所以首先定位在laucher的 public boolean onLongClick(View v) 中,看到:
01 |
if (mWorkspace.allowLongPress()) { |
02 |
if (cellInfo.cell == null ) { |
03 |
if (cellInfo.valid) { |
04 |
// User long pressed on empty space |
05 |
mWorkspace.setAllowLongPress( false ); |
06 |
mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, |
07 |
HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); |
08 |
showAddDialog(cellInfo); |
09 |
} |
10 |
} else { |
11 |
if (!(cellInfo.cell instanceof Folder)) { |
12 |
// User long pressed on an item |
13 |
mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, |
14 |
HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); |
15 |
mWorkspace.startDrag(cellInfo); |
16 |
} |
17 |
} |
18 |
} |
可以看到跳转到了showAddDialog(cellInfo),寻找到:
1 |
private void showAddDialog(CellLayout.CellInfo cellInfo) { |
2 |
mAddItemCellInfo = cellInfo; |
3 |
mWaitingForResult = true ; |
4 |
showDialog(DIALOG_CREATE_SHORTCUT); |
5 |
} |
可以看到他携带着DIALOG_CREATE_SHORTCUT参数创建了一个Dialog,携带参数跳入Launcher.java的父类Activity.java的showDialog()方法,最终到达Launcher.java的onCreateDialog(int id)方法,代码如下:
01 |
@Override |
02 |
protected Dialog onCreateDialog( int id) { |
03 |
switch (id) { |
04 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。