一般的桌面控件例子较多,包括怎么更新以及设置图片等,本文不再介绍,主要讲解appwidget的一些小细节
最终效果如图
一个桌面控件有3个按钮,每拖出一个控件,控件里的按钮不同响应
多个桌面控件响应不同按钮事件,onUpdate第三个参数
的onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
第三个参数返回id,就是每个控件实例都有唯一的id,使用该id区分每个控件
这里返回为数组,一般情况只会返回1个id,如拖出新控件。
更新时使用appWidgetManager.updateAppWidget(int appWidgetId, RemoteViews views)单独更新每个控件
至于同个控件里的3个按钮使用view的id区分就行了。
不同按钮启动同一个Activity或Service,PendingIntent.getActivity的第二个参数
PendingIntent.getActivity(Context context, int requestCode, Intent intent, int flags)的第4个参数标志设为PendingIntent.FLAG_UPDATE_CURRENT就能在intent里带参数来区分不同控件的不同按钮。
第二个参数requestCode用于区分不同PendingIntent实例,所以在启动同一个Activity或Service时,每个PendingIntent要设置不一样的值来生成不同实例,否则前面intent带的参数都被后者覆盖。例如设为appwidgetId*3+viewId
源码下载地址 http://download.csdn.net/detail/qazqwdxz/8900785