1.什么是App Widget
所有的控件都被叫做Widget,而在Android手机的桌面上所放置的控件就叫做App Widget,(在桌面上一直按着左键,就会出现Widgets选项,我们就可以将自己写的程序添加到桌面上)
2..App Widget的基本概念
(1).AppWidgetProviderInfo对象:为App Widget提供元数据,包括布局,更新频率等等数据.这个对象被定义在XML文件当中
(2).AppWidgetProvider对象:定义了App Widget的基本生命周期函数
3.创建一个App Widget的步骤
(1).定义AppWidgetProveiderInfo:在res/xml文件夹当中定义一个example_appwidget_info.xml的文件
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="194dp"
android:minHeight="72dp"
android:updatePeriodMillis="864000000"
android:initialLayout="@layout/example_appwidget" >
</appwidget-provider>
(2).为App Widget指定样式和布局,定义一个新的布局文件example_appwidget.xml
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="194dp"
android:minHeight="72dp"
android:updatePeriodMillis="864000000"
android:initialLayout="@layout/example_appwidget" >
</appwidget-provider>
(3).实现AppWidgetProvider
onUpdate:在到达指定的更新时间之后或者当用户向桌面添加App Widget时会调用该方法
onDeleted:当App Widget被删除时,会调用该方法
onEnabled:当一个App Widget的实例第一次被创建时,会调用该方法
onDisabled:当最后一个App Widget实例被删除后,会调用该方法
onReceive:接收广播事件
package wei.cao.test;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
public class ExampleAppWidgetProvider extends AppWidgetProvider {
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
System.out.println("onDeleted");
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) {
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"></action>
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/example_appwidget_info"/>
</receiver>
(5)运行效果(先将应用程序添加到桌面,会触发onReceive,onEnabled,onReceive,onUpdate方法,当把应用程序删除时会触发OnReceive,OnDeleted,OnReceive,OnDisabled方法):