【android开发】桌面小挂件( APP Widgets )

本文详细介绍了如何在Android中创建桌面小挂件,包括使用AppWidgetProviderInfo、AppWidgetProvider类、定义布局文件以及创建配置Activity。挂件的基本描述涉及AppWidgetProviderInfo对象、广播事件响应和更新频率设定。通过实现AppWidgetProvider的onUpdate()方法,可以处理挂件的更新。此外,挂件的布局文件和预览图设置也是关键步骤。挂件的更新可以通过AlarmManager实现,避免在设备休眠时激活。配置Activity允许用户自定义挂件设置。文章还提到了集合物件的挂件,如ListView、GridView和StackView,它们使用RemoteViewsService来展示后台数据。
摘要由CSDN通过智能技术生成

APP小挂件指的是一个小型的应用View控件,他可以嵌入到其他应用程序中(比如说桌面),并接受定期的更新。你可以通过Widget Provider来自己发布一个。一个可以持有其他App小挂件的应用组件叫做AppWidget host

下图表示一个音乐应用的挂件;


此文章将会描述怎么使用AppWidget provider去发布一个应用挂件。创建挂件牵涉到的类是:

android.appwidget.AppWidgetHost

一、基本的描述

要创建一个App挂件,你需要做到下面的工作。

描述App挂件的元数据,比如说:挂件的布局,更新频率,和AppWidgetProvider类。你需在XML文件中定义

定义一个基于广播事件的允许动态改变挂件界面的方法,通过他,当你的应用挂件更新、变得可用、变得不可用、被删除的事件你都可以收到。

  • View Layout

XML文件中定义一个挂件的初始布局文件。

 

此外,你可以实现一个挂件配置 Activity,他是一个可选的Activity,当用户要添加你的挂件时,他会启动用于给用户设置和更改挂件的设置。

 

下面将介绍怎么去设置一个这样的组件

Manifest中申明一个挂件

首先需要在Manifest中声明AppWidgetProvider类。比如说:

<receiver android:name="ExampleAppWidgetProvider" >
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
    </intent-filter>
    <meta-data android:name="android.appwidget.provider"
              android:resource="@xml/example_appwidget_info" />
</receiver>


 <receiver> 元素需要androidname属性,他指的是挂件使用的AppWidgetProvider

 <intent-filter>必须要包含一个<action>元素,并且包含androidname属性这个属性表示AppWidgetProvider接受ACTION_APPWIDGET_UPDATE广播。这是你唯一需要明确指定的广播接受,在必要的时候AppWidgetManager将会自动发送广播给所有挂件。

<meta-data>元素定义了AppWidgetProviderInfo资源,他需要有下面几个属性:

  • Android:name----定义元数据的名字,此例中使用  “android.appwidget.provider  ”来定义这个数据,作为AppWidgetProviderInfo的描述信息

 

添加AppWidgetProviderInfo元数据

AppWidgetProviderInfo 定义了一个挂件的基本品质,比如说:最小布局尺寸、他初始化的布局资源、更新挂件的频率、和configurationActivity在创建的时候加载在XML文件中定义AppWidgetProviderInfo 对象只需要使用<appwidget-provider>元素,保存在res/xml文件夹中。

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="40dp"
    android:minHeight="40dp"
    android:updatePeriodMillis="86400000"
    android:previewImage="@drawable/preview"
    android:initialLayout="@layout/example_appwidget"
    android:configure="com.example.android.ExampleAppWidgetConfigure"
    android:resizeMode="horizontal|vertical"
    android:widgetCategory="home_screen">
</appwidget-provider>

下面是<appwidget-provider>的属性概览:

  • minWidth 和 minHeight 的值表示挂件需要的最小空间。默认情况下,挂件的位置是基于主屏幕中的具有宽高的方格子(可以看做将屏幕划分为很多个矩阵格子)。如果挂件的宽和高与方格子不匹配,挂件的尺寸将计算到与方格子相近的尺寸。

【注意:为了使你的挂件能方便的跨设备,你最好将你的最小尺寸设置为低于4 X 4

 

  • minResizeWidth 和 minResizeHeight 属性指定了挂件的绝对最小尺寸,这个值应该定义为,当你的挂件出现字迹不清与不可用时的最小尺寸。使用这些属性允许用户去重新设置挂件的尺寸,可能会小于你使用minWidthminHigh的值。这个特性从 android 3.1开始
  • updatePeriodMillis 属性定义了挂件多久被AppWidgetProvider调用onUpdate() 刷新一次,事实上不能保证准时刷新(会有一定的出入),我们建议刷新频率不要太高,以便保持电量。当然你也可以允许用户自己去设置刷新的频率,有的人可能会设置15分钟刷新,当然也有人可能设置为一天只刷新4次。

【如果设备正在休眠,但是到了刷新你挂件的时间,设备将会被激活,然后去执行更新操作。如果你一个多小时的刷新一次可能不会对电池造成什么影响,但是,如果你刷新频率比较高,或者可能不需要挂件在休眠的时候刷新,那么你可以基于alarm 刷新,他将不会激活设备。实现方式:使用你的AppWidgetProvider需要接受的Intent设置一个alarm使用AlarmManager,将alarm的类型设置为ELAPSED_REALTIME 或者RTC,这样只有在设备唤醒的情况下才通知你的挂件刷新,最后你需要将你的 updatePeriodMillis 设置为 0

 

  • initialLayout 属性指向一个定义挂件布局的XML文件。
  • configure 定义了一个Activity,在用户添加挂件的时候他将会启动,以便用户去设置挂件的配置。这是可选操作。(具体怎么创建后面将会介绍到)
  • previewImage 属性,用作预览的图片。当用户还未添加挂件的时候通过此图片让用户大致知道你的挂件。此属性与在Manifest中的<receiver>中的androidpreviewImage是一样的。(具体怎么设置后面将会介绍)
  • autoAdvanceViewId 属性定义了可以被挂件宿主自增加的子View
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值