030909_桌面显示组件appwidget_第1页
030909_桌面显示组件appwidget_第2页
030909_桌面显示组件appwidget_第3页
030909_桌面显示组件appwidget_第4页
030909_桌面显示组件appwidget_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Android开发实战经典第9章:Android组件通信 桌面显示:AppWidget北京魔乐科技软件学院李兴华研发部本章目标了解AppWidget的主要作用;使用AppWidget进行程序的开发;使用AppWidget进行广播处理。E-MAIL:AppWidget的基本概念在使用Android手机的时候,用户经常会将一些常使用到的软件拖放到桌面上以方便用户操作E-MAIL:android.appwidget包中定义的类E-MAIL:No.类名称描述1AppWidgetProvider定义了AppWidget的基本操

2、作,需要通过子类进行设置2AppWidgetProviderInfoAppWidget组件的元数据提供者,例如:组件的大小、更新时间等3AppWidgetHostView创建AppWidget的View显示,此为真正的View,与之对应的还有一个RemoteView4AppWidgetHostAppWidget的服务以及创建AppWIdgetHostView5AppWidgetManager用于更新相应的AppWidgetRemoteViews和AppWidgetHost的关系E-MAIL:RemoteView类的常用方法E-MAIL:No.

3、方法类型描述1public RemoteViews(String packageName, int layoutId)构造创建新的RemoteViews组件,并指定所需要的布局管理器文件2public void addView(int viewId, RemoteViews nestedView)普通为RemoteViews增加一个组件3public void setXxx(int viewId, String methodName, Xxxvalue)普通设置指定的内容,例如:setBoolean()、setImageViewResource()、setTextViewText()等4pub

4、lic void setOnClickPendingIntent(int viewId, PendingIntent pendingIntent)普通设置单击触发之后要操作的PendingIntent对象5public void setProgressBar(int viewId, int max, int progress,boolean indeterminate)普通设置要操作的ProgressBar组件AppWidgetProvider类提供的方法E-MAIL:No.方法类型描述1public void onDeleted(Context context, i

5、ntappWidgetIds)普通删除AppWidget时触发2public void onDisabled(Context context)普通当最有一个AppWidget删除时被触发3public void onEnabled(Context context)普通当第一个AppWidget启动时触发4public void onReceive(Context context,Intent intent)普通接收广播5public void onUpdate(Context context,AppWidgetManager appWidgetManager, int appWidgetIds

6、)普通当指定的更新时间到达或者用户添加AppWidget时触发范例:添加自己的AppWidgetE-MAIL:范例:定义AppWidgetProvider程序 MyAppWidget.javaE-MAIL:package org.lxh.demo;import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.Context;import android.content.Intent;pu

7、blic class MyAppWidget extends AppWidgetProvider / 继承AppWidgetProviderOverridepublic void onDeleted(Context context, int appWidgetIds) / 删除时触发System.out.println(* MyAppWidget onDeleted(); super.onDeleted(context, appWidgetIds);Overridepublic void onDisabled(Context context) / 删除时触发System.out.println

8、(* MyAppWidget onDisabled();super.onDisabled(context);Overridepublic void onEnabled(Context context) / 启动时触发System.out.println(* MyAppWidget onEnabled();super.onEnabled(context);Overridepublic void onReceive(Context context, Intent intent) / 处理广播System.out.println(* MyAppWidget onReceive();super.onR

9、eceive(context, intent);Overridepublic void onUpdate(Context context,AppWidgetManager appWidgetManager, int appWidgetIds) / 更新时触发System.out.println(* MyAppWidget onUpdate();super.onUpdate(context, appWidgetManager, appWidgetIds);范例:定义桌面显示的AppWidget配置文件 res/xml/mldn_appwidget.xmlE-MAIL:组

10、件所需要的配置文件范例:定义AppWidget的布局管理器文件 res/layout/mldn_appwidget.xmlE-MAIL:布局管理器高度为屏幕高度组件高度为图片高度水平居中排列范例:修改AndroidManifest.xml文件增加注册的AppWidget组件E-MAIL:定义广播处理程序AppWidget更新时触发程序要使用到的配置信息使用AppWidget跳转到Activity进行操作由于现在桌面上的AppWidget属于远程视图,所以是不能像之前那样直接通过控件绑定操作,那么要想绑定处理程序可以使用RemoteViews类

11、完成,而如果一个AppWidget操作触发后要跳转的Intent则要由PendingIntent指定。AppWidgetManager的主要功能是用于更新桌面的AppWidget,实际上当用户在AppWidgetProvider程序之中为桌面的AppWidget绑定需要对桌面的AppWidget组件进行更新的之后是E-MAIL:AppWidgetManager类的常用方法E-MAIL:No.方法类型描述1public void updateAppWidget(int appWidgetId,RemoteViews views)普通更新指定的A

12、ppWidget组件2public void updateAppWidget(ComponentName provider, RemoteViews views)普通更新指定的AppWidget组件3public void updateAppWidget(int appWidgetIds,RemoteViews views)普通更新指定的AppWidget组件4public static AppWidgetManager getInstance(Context context)普通取得一个AppWidgetManager的实例范例:定义AppWidget的布局管理器文件 res/layout/

13、mldn_appwidget.xmlE-MAIL:布局管理器高度为屏幕高度 组件高度为图片高度水平居中排列范例:定义AppWidgetProvider程序 MyAppWidget.javaE-MAIL:package org.lxh.demo;import android.app.PendingIntent;import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.Context;i

14、mport android.content.Intent;import android.widget.RemoteViews;public class MyAppWidget extends AppWidgetProvider / 继承AppWidgetProvider Overridepublic void onUpdate(Context context, AppWidgetManager appWidgetManager,int appWidgetIds) / 更新时触发for (int x = 0; x appWidgetIds.length; x+) / 更新所有显示的AppWidg

15、et Intent intent = new Intent(context, MyAppWidgetDemo.class); / 设置Activity PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,intent, PendingIntent.FLAG_UPDATE_CURRENT); / 设置准备执行的IntentRemoteViews remote = new RemoteViews(context.getPackageName(),R.layout.mldn_appwidget);/ 定义要操作的Rem

16、oteViews remote.setOnClickPendingIntent(R.id.but, pendingIntent); / 设置按钮的单击appWidgetManager.updateAppWidget(appWidgetIdsx, remote); / 更新远程视图范例:使用AppWidget进行广播在AppWidgetProvider类中有一个onReceive()方法,此方法表示的是对广播操作进行处理,当AppWidgetProvider设置完PendingIntent类对广播操作进行封装。onReceive()执行流程:处理之后也可以使用E-MAIL:mldnqa163.c

17、om范例:定义AppWidgetProvider类 MyAppWidget.javaE-MAIL:public class MyAppWidget extends AppWidgetProvider / 继承AppWidgetProvider Overridepublic void onReceive(Context context, Intent intent) if (org.lxh.action.MYAPPWIDGET_UPDATE.equals(intent.getAction() / 判断是否是指定的Action RemoteViews remote = n

18、ew RemoteViews(context.getPackageName(),R.layout.mldn_appwidget);/ 定义RemoteViewsremote.setImageViewResource(R.id.img, R.drawable.mldn_man); / 设置图片remote.setTextViewText(R.id.but, www.MLDNJAVA.cn);/ 更新组件文字AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);/ 取得AppWidgetManagerCo

19、mponentName componentName = new ComponentName(context,MyAppWidget.class);/ 定义使用组件appWidgetManager.updateAppWidget(componentName, remote);/ 更新组件 else super.onReceive(context, intent) ;/ 父类onReceive()Overridepublic void onUpdate(Context context, AppWidgetManager appWidgetManager,int appWidgetIds) / 更新时触发Intent intent = new Intent(); / 设 置 操 作 要 执

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论