欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Android开发之AppWidget详解

程序员文章站 2022-04-10 08:12:57
android通知系统是它的一大特色,而其中,appwidget是其中一个亮点。在开发应用的中,很多时候可以为其添加一个appwidget显示在桌面中,及时方便的与用户进行交互。这里就简单的熟悉一下开...

android通知系统是它的一大特色,而其中,appwidget是其中一个亮点。在开发应用的中,很多时候可以为其添加一个appwidget显示在桌面中,及时方便的与用户进行

交互。这里就简单的熟悉一下开发一个appwidget的流程吧。

想要在应用中创建一个appwidget,至少需要以下几样东西:

  1. 需要创建一个appwidgetproviderinfo,来描述appwidget的元数据。
  2. 需要实现一个自己的appwidgetprovider对appwidget进行更新等操作。
  3. 需要布局文件来描述appwidget的布局。

那么,下面就开始创建一个appwidget吧。

一、在androidmanifest.xml中声明一个appwidget

首先我们需要在androidmanifest.xml中声明appwidgetprovider。格式如下:

可以看出appwidgetprovider实际上就是一个broadcastreceiver,它接收特定的broadcast。<meta-data>标签描述了appwidget所使用的元数据,android:resource则声明了定义元数据的xml文件的位置。

二、添加appwidgetproviderinfo元数据

appwidgetproviderinfo描述了appwidget的本质特性,例如,appwidget更新的周期,最小的宽度、长度,所使用的布局文件是什么,以及添加appwidget需要启动的

configuration activity等。我们需要在xml中来定义appwidgetproviderinfo对象,这个xml文件应该保存在res/xml文件夹下。下面是一个范例:

<appwidget-provider>需要使用这个标签来定义appwidgetproviderinfo。下面对范例中使用到的属性做下说明。

minwidthminheight定义了appwidget需要占据的最小的空间。

updateperiodmillis定义了大概多久appwidget需要更新一次,这里定义的只是一个大概的时间,系统不能做出精确的保证。

previewimage定义了在用户选择appwidget时做现实的图标。

initiallayout定义了appwidget所使用的布局文件。

configure定义了appwidget在添加的时候需要启动的configuration activity 用于执行配置的工作。

resizemode定义了缩放模式。

三、创建appwidget所使用的布局文件

在创建appwidget时必须创建一个布局文件,为其提供布局描述。appwidget创建视图时,需要根据remoteviews来创建。而出于效率等因素的考虑,很多控件在

remoteviews中是被支持的。以下列出能在remoteviews中使用的ui控件:

layout : framelayout , linearlayout , relativelayout

widget : analogclock , button , chronometer , imagebutton , imageview , progressbar , textview , viewflipper , listview , gridview , stackview , adapterviewflipper

四、创建一个appwidgetprovider的子类

前面提到过appwidgetprovider就是一个broadcastreceiver。对,它其实确实是继承自broadcastreceiver,只是它为了更加方便的处理appwidget的广播进行了封装。

appwidgetprovider在接收到appwidget的广播的时候,会根据类型分别触发以下几个方法:

onupdate() : 当appwidget需要更新时,会触发这个方法,我们需要重写这个方法,在里面实现更新的操作。如果没有定义configuration activity,那么在添加一个appwidget

时,也会触发此方法。

ondelete(context , int[] ):当appwidget从appwidgethost中删除时,会触发此方法。

onenabled(context ):如果为一个应用添加了多个appwidget,只有在第一个appwidget被添加时,此方法才会被调用。

ondisabled(context ):当一个应用的最后一个appwidget从appwidgethost中删除时,会触发此方法。

onreceive(context , intent ):这实际上就是broadcastreceiver中的方法,当任何一个broadcast被接收到时,会调用此方法,并且会在以上回调方法之前被调用。

五、创建一个configurationactivity(可选)

如果需要appwidget添加的时候做一些配置工作,就可以使用configuration activity。要使用configurationactivity首先需要像普通的activity一样在androidmanifest.xml中

进行声明:

只是这里需要添加action类型为android.appwidget.action.appwidget_configure的intent-filter。然后,需要在appwidgetproviderinfo中进行声明:

最后,当然是需要创建activity了,在configuration activity中,需要执行一些必要的操作:

1、获取appwidget id

2、进行必要的配置操作,获取appwidgetmanager实例、更新remoteviews

3、设置activity result,并且返回一个intent。

这样一个就创建好了一个configuration activity了。

注意android8.0以后无法收到发给自己的appwidgetprovider,需要添加

执行完上面的步骤,就已经创建了一个可以在桌面进行显示的appwidget了。

以上就是android开发之appwidget详解的详细内容,更多关于android appwidget详解的资料请关注其它相关文章!