App Widgets是微小的应用程序视图,可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新。
相关的基本概念:
- 为App Widgets提供元数据,包括布局、更新频率等。被定义在xml文件中。
- 定义了App Widgets基本生命周期函数。
AppWidgetProviderInfo
AppWidgetProvider
一 创建一个App Widget的步骤
1.在res/xml/文件夹中定义一个example_appwidget_info.xml
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="294dp" android:minHeight="72dp" android:updatePeriodMillis="8640000" android:initialLayout="@layout/example_appwidget"> </appwidget-provider>
2.为App Widget指定样式和布局
在layout下定义一个新的布局文件example_appwidget.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/widgetTextId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="firstWidgetText" android:background="#000000" /> </LinearLayout>
3实现AppWidgetProvider
onUpdate:在道道指定的更新时间之后或者当用户向桌面添加App Widget时会调用该方法。
onDeleted:当App Widget被删除时,调用该方法。
onEnable:当一个App Widget实例第一次被创建时调用该方法。
onDisable:当最后一个App Widget实例被删除后,调用。
onReveice:接收广播事件。
public class ExampleAppWidgetProvider extends AppWidgetProvider{
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
System.out.println("ondelete-");
super.onDeleted(context, appWidgetIds);
}
@Override
public void onDisabled(Context context) {
System.out.println("onDisabled-");
super.onDisabled(context);
}
@Override
public void onEnabled(Context context) {
System.out.println("onEnabled-");
super.onEnabled(context);
}
@Override
public void onReceive(Context context, Intent intent) {
//String action=intent.getAction();
System.out.println("onReceive-");
super.onReceive(context, intent);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
System.out.println("onupdate");
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
}
4.在AndroidManifest.xml 声明
<receiver android:name="ExampleAppWidgetProvider"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/example_appwidget_info" /> </receiver>
5 运行项目,在模拟器桌面长按左键出现
选中widgets,
选中应用appwidget01,出现
第一个测试小例子就运行成功了。嘿嘿 谢谢mars老师。