安卓程序开发——widget组件开发Widget就是可以放在桌面上的组件,包括像天气、便签、等。AppWidget 框架类练习Widget组件的基础应用、widget的配置、widget与服务结合实现

 widget组件开发

1.1 实验目的

   掌握Android  widget组件的应用,练习Widget组件的基础应用、widget的配置、widget与服务结合实现时间倒计时

1.2 实验步骤

1.创建一个Android 应用,练习widget的基础用法。

2.在布局文件添加TextView ImageButton两个控件

3.在res下创建xml文件夹,再创建widget_template.xml元数据

4.添加WidgetProvider.java文件

5.练习widget配置,新增一个Activity(ConfigActivity.java)

6.新增ConfigActivity.java对应的widget_config.xml布局文件

7.在元数据文件widget_template.xml添加配置代码

8.在WidgetProvider.java文件中添加updateTextColor

9.在AndroidManifest.xml注册ConfigActivity.java

10.练习widget与服务,添加TRandomService.java

11.AndroidManifest.xml中注册TRandomService.java

12.修改WidgetProvider.java文件

1.3 实验代码

1、创建工程

2、Widget基础应用(SimpleWidget)

2.1 将activity_main.xml的名字修改为widget_layout.xml,将MainActivity.java删除、并将AndroidManifest.xml中的注册代码删除。
2.2 在res下创建xml文件夹,再创建widget_template.xml元数据
2.3 添加WidgetProvider.java文件

3 练习Widget配置

3.1 新增一个Activity(ConfigActivity.java)
3.2 新增ConfigActivity.java对应的widget_config.xml布局文件

3.3 在widget_template.xml添加配置代码

3.4 在WidgetProvider.java文件中添加
3.5在AndroidManifest.xml注册ConfigActivity.java

4 Widget与服务(ServiceWidget)

4.1 添加TRandomService.java

4.2 AndroidManifest.xml中注册TRandomService.java

4.3 修改WidgetProvider.java文件

实验效果

1.4 实验总结

1.Widget
Widget就是可以放在桌面上的组件,包括像天气、便签、日历、流量控制等

2.AppWidget 框架类

(1)AppWidgetProvider :

继承自 BroadcastRecevier , 在AppWidget 应用 update、enable、disable 和 delete 时接收通知。其中,onUpdate、onReceive 是最常用到的方法,它们接收更新通知。

(2) AppWidgetProvderInfo:

描述 AppWidget 的大小、更新频率和初始界面等信息,以XML 文件形式存在于应用的 res/xml/目录下。

(3)AppWidgetManger :

负责管理 AppWidget ,向 AppwidgetProvider 发送通知。

(4)RemoteViews :

一个可以在其他应用进程中运行的类,向AppWidgetProvider 发送通知。

3.minWidth: 定义Wdiget组件的宽度

minHeight: 定义Wdiget组件的高度

updatePeriodMillis: 更新的时间周期

initialLayout: Widget的布局文件

4.AppWidgetProvider:

实际上就是一个BroadcastReceiver,里面提供了以下函数:

onReceive(Context, Intent)

onUpdate(Context , AppWidgetManager, int[] appWidgetIds)

onEnabled(Context)

onDeleted(Context, int[] appWidgetIds)

onDisabled(Context)

可通过重写以上函数来监听Widget状态的变化并进行相应的处理。

猜你喜欢

转载自blog.csdn.net/WZY22502701/article/details/134230665