查看sdk的帮助文档sdk-docs-index.html-APIGuides-AppComponets-AppWidget
AppWidget
所谓AppWidget就是微型应用程序的意思,它可以嵌入在其他应用程序(如主屏幕),并能定期更新其view。这些view被当成用户界面的小部件,您可以使用AppWidgetprovider来发布AppWidget
注意:创建了AppWidget后需要卸载应用后重装才能生效。有时候需要重启模拟器才会生效。
Widget创建
1.对AppWidget的元数据进行描述,在xml文件中定义。
因为意图过滤器中引用到了@xml/example_appwidget_info,在res目录下创建xml目录,并创建 AppWidgetProvider.xml文件。 将帮 助文档中的demo拷贝过去。
2创建一个类继承AppWidgetProvider。
3.AppWidgetProvider实际上是一个广播接受者,所以需要在清单文件中进行配置。将广播接受者的意图过滤器从帮助文档中拷贝过去。
配置意图过滤器和元数据
1.对AppWidget的元数据进行描述,在xml文件中定义。
因为意图过滤器中引用到了@xml/example_appwidget_info,在res目录下创建xml目录,并创建 AppWidgetProvider.xml文件。 将帮 助文档中的demo拷贝过去。
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/example_appwidget"
android:minHeight="72dp"
android:minWidth="294dp"
android:resizeMode="horizontal|vertical"
android:updatePeriodMillis="86400000" >
<!--
这个是4.0以上版本才有的属性所以去掉它了
android:initialKeyguardLayout="@layout/example_keyguard"
-->
</appwidget-provider>
属性介绍
previewImage 指定widget的预览图片
resizeMode 说明widget重新被调整大小的规则
updatePeriodMillis widget的更新周期,默认最短时间是半个小时,单位是毫秒。
initialLayout widget的初始化布局文件
minHeight和minwidth widget在屏幕上至少要占据多大空间
2创建一个类继承AppWidgetProvider。
package com.itheima.widget;
import android.appwidget.AppWidgetProvider;
public class MyWidget extends AppWidgetProvider {
}
4.AppWidgetProvider实际上是一个广播接受者,所以需要在清单文件中进行配置。将广播接受者的意图过滤器从帮助文档中拷贝过去。
配置意图过滤器和元数据
<receiver android:name="com.itheima.widget.MyWidget" >
<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>
Widget的生命周期
第一次被创建时调用onEnable
创建新的widget时会调用onUpdate
移除时会调用onDelete
当最后一个被移除时调用onDisable
当增加移除widget的时候onReceive方法都会被执行