widget demo——文字显示

MainWidget类继承AppWidgetProvider,实现了它的四个方法,onReceive()、onUpdate()、onDeleted()、onEnabled()、onDisabled();当启动widget时,调用方法的顺序为:onReceive、onEnabled、onReceive、onUpdate;下载widget时,调用方法的顺序为:onReceive、onDeleted、onReceive、onDisabled;启动的时候,在桌面长按鼠标左键,然后选在里面的widgets,进去后点击自己写的widget;

MainWidget类:


package jxaly.yj;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MainWidget extends AppWidgetProvider {

// 每个请求都会传递给onReceive方法,该方法根据Intent参数中的action类型来决定自己处理还是分发给下面四个特殊的方法。
@Override
public void onReceive(Context context, Intent intent) {
Log.i(
" yao " , " WidgetProvider --> onReceive " );
super .onReceive(context, intent);
}

// 如果Widget自动更新时间到了、或者其他会导致Widget发生变化的事件发生,或者说Intent的值是android.appwidget.action.APPWIDGET_UPDATE,那么会调用onUpdate,下面三个方法类似
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int [] appWidgetIds) {
// AppWidgetManager 顾名思义是AppWidget的管理器,appWidgetIds 桌面上所有的widget都会被分配一个唯一的ID标识,那么这个数组就是他们的列表
Log.i( " yao " , " WidgetProvider --> onUpdate " );
super .onUpdate(context, appWidgetManager, appWidgetIds);
}

// 当一个App Widget从桌面上删除时调用
@Override
public void onDeleted(Context context, int [] appWidgetIds) {
Log.i(
" yao " , " WidgetProvider --> onDeleted " );
super .onDeleted(context, appWidgetIds);
}

// 当这个App Widget第一次被放在桌面上时调用(同一个App Widget可以被放在桌面上多次,所以会有这个说法)
@Override
public void onEnabled(Context context) {
Log.i(
" yao " , " WidgetProvider --> onEnabled " );
super .onEnabled(context);
}

// 当这个App Widget的最后一个实例被从桌面上移除时会调用该方法。
@Override
public void onDisabled(Context context) {
Log.i(
" yao " , " WidgetProvider --> onDisabled " );
super .onDisabled(context);
}
}

上面这个类只是实现了父类的方法,但是方法体里没有添加任何代码(除了Log语句)

main.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:layout_width ="fill_parent"
android:layout_height
="wrap_content"
android:text
="Widget Demo"
android:gravity
="center" android:textColor ="#93ef02" />
LinearLayout >

然后在res文件夹下面创建了一个名为xml的文件夹,里面放了一个provider_info.xml


xml version="1.0" encoding="utf-8" ?>
< appwidget-provider
xmlns:android =http://schemas.android.com/apk/res/android
android:minWidth ="294dp" android:updatePeriodMillis ="86400000"
android:minHeight ="72dp" android:initialLayout ="@layout/main" >
appwidget-provider >

最后还得在AndroidMainfest.xml配置一下,以让java文件和provider_info.xml关联


xml version="1.0" encoding="utf-8" ?>
< manifest xmlns:android ="http://schemas.android.com/apk/res/android"
package
="jxaly.yj"
android:versionCode
="1"
android:versionName
="1.0" >

< application android:icon ="@drawable/icon" android:label ="@string/app_name" >

< receiver android:name ="MainWidget" >
< intent-filter >
< action android:name ="android.appwidget.action.APPWIDGET_UPDATE" > action >
intent-filter >
< meta-data android:resource ="@xml/provider_info" android:name ="android.appwidget.provider" > meta-data >

receiver >
application >
manifest >

运行效果图:





你可能感兴趣的:(Android)