1.创建一个组件的类继承:AppwidgetProvider 父类
2.定义小组件的布局文件(在res/layout中)
3.定义小组件的属性描述文件,在res文件家中创建xml文件夹,创建描述文件(xml类型),如:
<?xml version="1.0" encoding="UTF-8"?><appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="120dp"
android:minHeight="120dp"
android:updatePeriodMillis="0"
android:initialLayout="@layout/time_widget"></appwidget-provider>
4.配置清单配置文件:
在 application下:
<receiver
android:name="步骤1中创建的类的包含包的类名,如"com.example.wiget.TimeWidget“
>
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/> // 此fiflter必须写
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/步骤3中创建的xml文件"/>
</receiver>
5.在步骤1中创建的类中添加相关方法,如:
//该方法被调用的时机有两种,1是在appwidget——privider文件中描述的更新时间间隔到来时会回调该方法。2当用户在桌面上添加同种类型的小组件的时候会回调该方法。
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
long time=System.currentTimeMillis();
SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String current=sd.format(new Date(time));
RemoteViews ro=new RemoteViews(context.getPackageName(), R.layout.time_widget);
ro.setTextViewText(R.id.action_settings, current);
appWidgetManager.updateAppWidget( appWidgetIds,ro);
}
@Override
//改方法只要同种类型的小组件每次被删除时都会回调
public void onDeleted(Context context, int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onDeleted(context, appWidgetIds);
}
@Override
//同种类型的小组件只有第一个被创建时会被回调。
public void onEnabled(Context context) {
// TODO Auto-generated method stub
super.onEnabled(context);
}
@Override
//同种类型的小组件只有最后一个被删除时会被回调。
public void onDisabled(Context context) {
super.onDisabled(context);
}
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
super.onReceive(context, intent);
}
6.在虚拟机上的小部件中找到自己创建的小组件拖动到桌面
完成。