Android笔记之AppWidget使用

实现步骤:
1、为AppWidget提供一个布局文件activity_widget.xml,用来显示Widget的界面。
2、创建一个类继承自AppWidgetProvider,并覆写里面的相关的方法,实现appwidget的功能。
3、在xml创建一个文件appwidget01.xml来定义相关属性
4、在程序中注册Manifest.xml。

 

1、首先为appwidget设计布局文件activity_widget.xml:

但是并不支持所有布局:

A RemoteViews object (and, consequently, an App Widget) can support the following layout classes:
 FrameLayout
 LinearLayout
 RelativeLayout
And the following widget classes:
 AnalogClock
 Button
 Chronometer
 ImageButton
 ImageView
 ProgressBar
 TextView
Descendants of these classes are not supported.

2、创建类实现appwidget的代码部分:没有这个,虽然插件可以显示,但每次放置插件都会报错

public class WidgetActivity extends AppWidgetProvider
//Appwidgetprovider是BroadcastReceiver的子类,这个类处理Appwidget的广播 {
    //删除一个AppWidget时调用
@Override public void onDeleted(Context context, int[] appWidgetIds) { super.onDeleted(context, appWidgetIds); } // 最后一个appWidget被删除时调用 @Override public void onDisabled(Context context) { super.onDisabled(context); } /** * AppWidget的实例第一次被创建时调用 * */ @Override public void onEnabled(Context context) { super.onEnabled(context); } /** * 接受广播事件 * */ @Override public void onReceive(Context context, Intent intent) {
          super.onReceive(context, intent); } /** * 到达指定的更新时间或者当用户向桌面添加AppWidget时被调用 * */ @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { } }

 

3、xml下定义插件属性appwidget01.xml:它决定了哪个layout文件为widget的布局,长和宽,以及刷新时间

<?xml version="1.0" encoding="utf-8"?>
  <!-- android:previewImage="@drawable/test" 设置预览图-->  
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/activity_widget"
    android:minHeight="220.0dip"
    android:minWidth="294.0dip"
    android:updatePeriodMillis="1800000" />

 

4、在程序中注册Manifest.xml

<!-- .WidgetActivity是widget代码的类名 -->
<!-- @xml/appwidget01是为widget定义的属性文件 -->
<
receiver android:name=".WidgetActivity"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/appwidget01" /> </receiver>

<receiver android:name后面还可以加上属性:

(1)android:label="@string/widget_small_4_1" :appwidget显示的名字4x1

 

posted @ 2013-08-26 11:55  行云有影  阅读(289)  评论(0编辑  收藏  举报