AppWidget的使用详解(1)

  • 格式:doc
  • 大小:79.50 KB
  • 文档页数:4

AppWidget 就是HomeScreen上显示的小部件,提供直观的交互操作。通过在HomeScreen中长按,在弹出的对话框中选择Widget部件来进行创建,长按部件后并拖动到垃圾箱里进行删除。同一个Widget部件可以同时创建多个。而初学者对这不是很了解,包括我自己;我也是在学习这个学习了很长时间,因为我自己在做的时候,遇到了各种各样的问题。下面是我自己通过很长时间学习的总结以及我在这个过程中遇到的问题,我也会写下来:

1.首先需要提供一个定义了Widget界面布局的XML文件(位于res/layout/..),需要注意的是使用的组件必须是RemoteViews所支持的,目前原生API中支持的组件如下:

FrameLayout LinearLayout RelativeLayout

AnalogClock Button Chronmeter ImageButton ImageView ProgressBar TextView

Example_widget.xml:

xmlns:android="/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

android:id="@+id/widgetTextid"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Frist_Widget"

android:background="#000000"

/>

2.然后我们要在res目录下,新建一个xml目录,在xml目录下,新建一个.xml文件

例如:我在下面,新建一个xxx.xml,然后在类型选择AppWidget

Provider

Xxx.xml:

xmlns:android="/apk/res/android"

android:minWidth="294dp"

android:minHeight="72dp"

android:updatePeriodMillis="86400000"

android:initialLayout="@layout/example_widget"

>

4.新建一个类,这个类继承AppWidgetProvider(注意:这里是新建一个类,不是在本身的Activity类继承AppWidgetProvider),AppWidgetProvider实际上就是一个BroadcastReceiver,要继承以下的函数:

onReceive(Context, Intent)

onUpdate(Context , AppWidgetManager, int[] appWidgetIds) onEnabled(Context)

onDeleted(Context, int[] appWidgetIds)

onDisabled(Context)

Example.java:

import android.appwidget.AppWidgetManager;

import android.appwidget.AppWidgetProvider;

import android.content.Context;

import android.content.Intent;

public class Example extends AppWidgetProvider {

@Override

public void onDeleted(Context context, int[] appWidgetIds) {

// TODO Auto-generated method stub

super.onDeleted(context, appWidgetIds);

}

@Override

public void onDisabled(Context context) {

// TODO Auto-generated method stub

super.onDisabled(context);

}

@Override

public void onEnabled(Context context) {

// TODO Auto-generated method stub

super.onEnabled(context);

}

@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);

}

}

5.Activity类,什么事都可以不做

AppWidgetActivity.java:

import android.app.Activity;

import android.os.Bundle;

public class AppWidgetActivity extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(yout.main);

}

}

6.我们前面说了,AppWidgetProvider实际上就是一个BroadcastReceiver;那我们在前面学BroadcastReceiver的时候,是不是要在AndroidManifest.xml中声明一个Receiver。所以,我们现在也要在AndroidManifest.xml中声明一个Receiver。

android:name="android.appwidget.action.APPWIDGET_UPDATE">

android:resource="@xml/example_widget_info"/>

总结:我做这个AppWidget,什么功能都没实现,只能够显示在Home,不过接下来我会不断更新这个控件的学习方法。谢谢,观看!