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

来源:互联网 发布:3大运营商网络制式 编辑:程序博客网 时间:2024/06/05 16:26

AppWidget


使用步骤

步骤1.创建一个java文件  如下:public class MyWidgetProvider extends AppWidgetProvider {@Overridepublic void onReceive(Context context, Intent intent) {    // TODO Auto-generated method stub    super.onReceive(context, intent);}// 监听桌面小控件更新@Overridepublic void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {    // TODO Auto-generated method stub    super.onUpdate(context, appWidgetManager, appWidgetIds);}// 监听桌面小控件第一个被添加@Overridepublic void onEnabled(Context context) {    super.onEnabled(context);}// 监听桌面小控件最后一个被移除@Overridepublic void onDisabled(Context context) {    // TODO Auto-generated method stub    super.onDisabled(context);}// 监听桌面小控件被移除@Overridepublic 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);}
0 0
原创粉丝点击