Android30_AppWidget使用(一)
一、App Widget定义
App Widget是Application Widget的缩写,特指在android手机桌面上放置的控件。比如时钟等。另外,App Widget和我们自己写的程序并不是运行在同一进程当中的。在桌面长按就可以向桌面添加各种控件:
二、App Widget相关的基本概念
1.AppWidgetProviderInfo对象:为App Widget提供元数据,包括布局,更新频率等数据,该对象定义在XML文件当中。
2.AppWidgetProvider:定义了App Widget的基本声明周期函数。
三、创建一个App Widget的步骤
1.定义AppWidgetProviderInfo:
在res/xml文件夹中定义一个名为appwidger_info.xml的文件:
android:initialLayout:初始化布局文件
android:updatePeriodMillis:更新时间
<?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="280dp" android:minHeight="70dp" android:updatePeriodMillis="8640000" android:initialLayout="@layout/appwidget"/>
2.为AppWidget指定样式和布局:
Res/layout文件夹下定义一个新的布局文件appwidget.xml,里面可以添加一些控件,用于控制在桌面显示的样式,给AppWidgetProviderInfo这个对象提供数据。其中image是一张小鸟的png图片。
<?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" > <ImageButton android:id="@+id/widgetTextId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/image" android:background="#00000000"/> </LinearLayout>
3.实现AppWidgetProvider:
onUpdate:在到达指定的更新时间之后或者当用户想桌面添加AppWidget时会调用该方法;
onDeleted:当App Widget被删除时,会调用该方法;
onEnabled:当一个AppWidget的实例第一次被创建时,会调用该方法;
onDisabled:当最后一个App Widget实例被删除后,会调用;
onReceive:接收广播事件。请求分发。
package com.android.activity;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
public class AppWidgetProviderTest extends AppWidgetProvider{
@Override
public void onUpdate(Context context, AppWidgetManager
appWidgetManager, int[] appWidgetIds) {
System.out.println("AppWidgetProvider --> onUpdate");
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
System.out.println("AppWidgetProvider --> onDeleted");
super.onDeleted(context, appWidgetIds);
}
@Override
public void onDisabled(Context context) {
System.out.println("AppWidgetProvider --> onDisabled");
super.onDisabled(context);
}
@Override
public void onEnabled(Context context) {
System.out.println("AppWidgetProvider --> onEnabled");
super.onEnabled(context);
}
}
运行结果:
添加后的结果: