探秘 widget 之 launcher 添加 widget 的流程分析

最近打算研究下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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值