当前位置:   article > 正文

探秘 widget 之 launcher 添加 widget 的流程分析_自定义launcher加载安卓wiget

自定义launcher加载安卓wiget

最近打算研究下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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/313135
推荐阅读
相关标签
  

闽ICP备14008679号