Android中Appwidget桌面小控件的简单入手方式

本文介绍了Android中创建和管理AppWidget的基本步骤,包括如何在桌面动态更新小控件的显示内容,是Android开发者掌握桌面小控件的入门指南。

AppWidget


使用步骤

步骤1.创建一个java文件  如下:

public class MyWidgetProvider extends AppWidgetProvider {

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    super.onReceive(context, intent);
}

// 监听桌面小控件更新
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    // TODO Auto-generated method stub
    super.onUpdate(context, appWidgetManager, appWidgetIds);
}

// 监听桌面小控件第一个被添加
@Override
public void onEnabled(Context context) {
    super.onEnabled(context);
}

// 监听桌面小控件最后一个被移除
@Override
public void onDisabled(Context context) {
    // TODO Auto-generated method stub
    super.onDisabled(context);
}

// 监听桌面小控件被移除
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
    // TODO Auto-generated method stub
    super.onDeleted(context, appWidgetIds);
}

}

步骤2. 在layout文件夹中 创建一个布局文件(要显示的布局文件)

步骤3. 在res文件夹中 新建xml文件夹  生成如下xml文件
        <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" 
    android:minWidth="288px"//最小宽度
     android:minHeight="144px"//最小高度
    android:initialLayout="@layout/mywidget"//加载的布局
    android:updatePeriodMillis="1800000"//更新时间
    其中桌面被分为了一个个的小方格 , 一般是 宽度为4个 高度5-6个,
    一个方格的边为72
    更新时间最小值为30分钟 也就是1800000毫秒,如果设置过低 默认30分钟

步骤4.在清单文件中注册一个桌面小控件:
<receiver android:name="cn.xdl.appwidget.MyWidgetProvider" >
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        </intent-filter>

        <meta-data
            android:name="android.appwidget.provider"
            android:resource="@xml/自定义的xml文件名" />
    </receiver>

动态更改桌面小控件的值

    //获取一个远程布局
    remote = new RemoteViews(getApplicationContext().getPackageName(), R.layout.mywidget);

    Intent intent = new Intent(getApplicationContext(), DialogActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
    //设置布局中 指定ID控件的响应事件 
    remote.setOnClickPendingIntent(R.id.widget_tv1, pendingIntent );


    provider = new ComponentName(getApplicationContext(), MyWidgetProvider.class);
    //获取Appwidget管理类  并使用它对桌面小控件完成更新
    manager =  AppWidgetManager.getInstance(getApplicationContext());
    timer.schedule(new TimerTask() {

        @Override
        public void run() {
            updateViews();
        }
    }, 0, 1000);

}


private void updateViews() {
    //更改某一个TextView控件展示的文字
    remote.setTextViewText(R.id.widget_tv1, dateFormat.format(new Date()));
    //更改某一个TextView控件展示的文字
    remote.setTextViewText(R.id.widget_tv2, dateFormat2.format(new Date()));
    //更新到桌面控件上
    manager.updateAppWidget(provider, remote);
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值