Launcher开发之添加widget(一)
来源:互联网 发布:常用接入网络管理方式 编辑:程序博客网 时间:2024/06/06 07:17
Launcher源码里面找加载Widget的功能,有些繁琐。简化功能,把widget加到界面上的关键点如下:
1.请求appWidgetID
2.根据appWidgetID创建View
3.添加view
效果:
1.请求appWidgetID
/** * 弹出widget选择列表 * * @param activity */ public void selectWidget(Activity activity) { Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mHost.allocateAppWidgetId()); activity.startActivityForResult(intent, REQUEST_ID); }
2.根据appWidgetID创建View
//请求到的id如果保存下来,下次再加载的时候直接调用此函数则可完成添加widget public View getAppWidgetView(int appWidgetId) { AppWidgetProviderInfo appWidgetInfo = AppWidgetManager.getInstance( mContext).getAppWidgetInfo(appWidgetId); View hostView = mHost.createView(mContext, appWidgetId, appWidgetInfo); Log.v(TAG, "completeAddAppWidget:" + appWidgetId); hostView.setMinimumHeight(appWidgetInfo.minHeight); hostView.setMinimumWidth(appWidgetInfo.minWidth); return hostView;// 可以使用layout.addView(hostView, new // LayoutParams(xx,xx))来设置widget的大小 } public View getAppWidgetView(Intent data) { Bundle extras = data.getExtras(); int appWidgetId = extras .getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1); return getAppWidgetView(appWidgetId); }
3.添加view
viewContainer.addView(getAppWidgetView(data));
总结:
关键是请求appwidgetid,然后保存下来,下次初始化APK的时候直接使用appwidgetid就行了,但是首次请求是必须的,如果appwidgetid与host_id对应不上则数据是不会更新的(测试的时候没有数据,猜测是无法收到数据更新的广播,需要再验证)。
完成源代码:http://download.csdn.net/detail/jiang4920/6745553
0 0
- Launcher开发之添加widget(一)
- 探秘widget之launcher添加widget的流程分析
- 探秘widget之launcher添加widget的流程分析
- 探秘 widget 之 launcher 添加 widget 的流程分析
- 探秘 widget 之 launcher 添加 widget 的流程分析
- Android开发之App Widget(一)
- launcher widget 添加过程分析
- launcher widget 添加过程分析2
- android之Widget开发详解实例一
- android之Widget开发详解实例一
- android tv box launcher开发之添加自定义apk
- Android launcher - Launcher(一)
- Odoo Widget 开发教程(一)
- android M Launcher之LauncherModel (一)
- android手把手教你开发launcher(四)——显示widget
- android手把手教你开发launcher(四)——显示widget
- android手把手教你开发launcher(四)——显示widget
- 墨香带你学Launcher之(三)-绑定屏幕、图标、文件夹和Widget
- nginx location 路径规则
- Java正则表达式
- EXTjs 禁止comboBox 下拉
- java -version和javac -version区别
- 十年
- Launcher开发之添加widget(一)
- 《视频解密》中文版(第四版) 第六章 数字视频接口(第三部分)
- Android程序小技巧
- android httpClient 支持HTTPS的2种处理方式
- [Surface SDK]ScatterViewItem Center改变 事件
- Oracle临时表使用
- BezierPath 使用(1)-- 绘制圆角
- Java instanceof 关键字是如何实现的?
- 表格样式