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 >

运行效果图:





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值