android widget深入浅出教程.doc_第1页
android widget深入浅出教程.doc_第2页
android widget深入浅出教程.doc_第3页
android widget深入浅出教程.doc_第4页
android widget深入浅出教程.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

说明 android widget 深入浅出教程来源于石头的博客 转载请注明出处 谢谢 android widget 深入浅出 一 Posted on 2013 年年 1 月月 14 日日 by 石石头头 目录目录 最近一直在开发 android 程序 小小课程表 1 0 0 版本已经发布 正在开发测试的 1 0 1 版打算修改部分界面并且加入 android widget 功能 也就是桌面插件 现在 开发也基本完毕了 就想着把 widget 开发中的一些技术和问题拿出来和大家一起分享 有不足之处 还望指正 1 初识 初识 android widget android widget android 桌面插件 自 android SDK1 5 版后 android 系统中就 引入了 android widget 用户通过在桌面长按 弹出对话框 选择桌面组件 来添加手 机中可以添加的 widget 程序 android手机如何添加widget Android 本身已经自带了时钟 音乐播放器 相框和 Google 搜索 4 个 Widget 程序 2 android widget 相关类介绍相关类介绍 AppWidgetProvderInfo 为 app widget 提供元数据 包括布局 更新时 间等数据 AppWidgetProvider 定义了 app widget 的生命周期函数 AppWidgetManger 负责管理 app widget RemoteViews 一个远程的 view 在 app widget 内容的更新中可以用到 介绍完了相关类 下面我们就来开发我们自己的 widget 程序 你准备好了吗 3 创建 创建 android widget 程序程序 今天首先为大家演示如何创建一个 android widget 程序 程序中只有一个 textview 来 显示当前日期 在 res xml 没有则新建一个文件夹 文件中创建一个名为 example appwidget info xml 的文件 内容如下 1 1 android minWidth 指定 widget 的最小宽度 根据 需要的单元格个数 72 2 计算 2 android mineight 指定 widget 的最小高度 根据 需要的单元格个数 72 2 计算 3 android updatePeriodMillis widget 更新时间间隔 毫秒为单位 注 最 小 30 分钟 4 android initialLayout 指定 widget 的布局文件 在 res layout 文件夹下新建 example appwidget xml 布局文件供 appwidget provider 引用 01 02 07 16 自定义一个类继承自 AppWidgetProvider 01 public class ExampleAppWidgetProvider extends AppWidgetProvider 02 private String dateStr 03 Override 04 public void onDeleted Context context int appWidgetIds 05 TODO Auto generated method stub 06 super onDeleted context appWidgetIds 07 08 09 Override 10 public void onDisabled Context context 11 TODO Auto generated method stub 12 super onDisabled context 13 14 15 Override 16 public void onEnabled Context context 17 TODO Auto generated method stub 18 super onEnabled context 19 20 21 Override 22 public void onReceive Context context Intent intent 23 TODO Auto generated method stub 24 super onReceive context intent 25 26 27 Override 28 public void onUpdate Context context AppWidgetManager appWidgetManager int appWidgetIds 29 TODO Auto generated method stub 30 getTime 31 for int i 0 i appWidgetIds length i 32 33 RemoteViews remoteViews new RemoteViews context getPackageName R layout example appwidg et 34 remoteViews setTextViewText R id textviewID dateStr 35 appWidgetManager updateAppWidget appWidgetIds remoteViews 36 37 super onUpdate context appWidgetManager appWidgetIds 38 39 得到时间函数 40 public void getTime 41 Calendar c Calendar getInstance 42 int timeYear c get Calendar YEAR 43 int timeMonth c get Calendar MONTH 1 44 int timeDay c get Calendar DAY OF MONTH 45 46 dateStr timeYear 年 timeMonth 月 timeDay 日 47 48 在 androidmanifest xml 文件中注册 Receiver 1 2 3 4 5 7 运行程序并返回桌面添加 widget 组件 效果如下 这里给出的效果是课程表软件上的效果 其实上面的程序只是一个 textview 上面显示当 前的日期 android widget 深入浅出 二 Posted on 2013 年年 1 月月 15 日日 by 石石头头 上次给大家讲到 android widget 简单的一些知识和一个简单的 android widget 应用 今天接着上次的列子增加一些内容 程序目标 程序目标 在 android widget 上添加一个按钮 让用户点击这个按钮 可以进入 android 主程序 基础知识介绍 基础知识介绍 上一次用到了一个类 RemoteView 类 而且没给大家过多的解释 只是 说它是一个远程的 view 那到底是什么是远程 其实他是和我们的主程序不在同一个进程 中 所以我们用到控件的时候要用到 RemoteView 这个类 而不能单纯的用我们以前的 findViewById 来获取一个 view 的对象 今天我们要用到的另一个很重要的类 pendingIntent 上面说了 android widget 和主 程序不是在同一个进程中 所以要启动一个 Activity 的时候不能用我们以前的方法 声明 一个 Intent 对象那么简单 PendingIntent 这个类用于处理即将发生的事情 废话不说了上代码 在在 example appwidget xml 中添加按钮的布局文件 中添加按钮的布局文件 01 02 07 16 21 修改修改 AppWidgetProvider 类的类的 onUpdate 函数如下 函数如下 01 Override 02 public void onUpdate Context context AppWidgetManager appWidgetManager int appWidgetIds 03 TODO Auto generated method stub 04 getTime 05 for int i 0 i appWidgetIds length i 06 07 RemoteViews remoteViews new RemoteViews context getPackageName R layout example appwidg et 08 remoteViews setTextViewText R id textviewID dateStr 09 10 Intent intent new Intent context MainActivity class 11 PendingIntent pendingIntent PendingIntent getActivity context 0 intent 0 12 remoteViews setOnClickPendingIntent R id buttonID pendingIntent 13 14 appWidgetManager updateAppWidget appWidgetIds remoteViews 15 16 super onUpdate context appWidgetManager appWidgetIds 17 android widget深入浅出 今天先写到这里 android widget 深入浅出 三 Posted on 2013 年年 1 月月 23 日日 by 石石头头 上一篇通过添加一个按钮 点击按钮进入到程序的 activity 今天要完成的目标是在 widget 上添加一个按钮 点击按钮更新 widget 中的内容 由于 android widget 的特殊性 我们不能像 activity 中那样监听一个按钮并在响应函 数中写动作了 我们要用到一种新的方法 在这之前 先介绍一下 AppWidgetProvider 类中的几个方法 1 public void onDeleted 当 android widget 被删除时调用此函数 2 public void onDisabled 当最后一个 android widget 被删除时执行 3 public void onEnabled 当第一个 android widget 被创建时调用此函 数 4 public void onReceive 接收广播事件 5 public void onUpdate 当 android widget 到达指定的更新时间时执行 这里给大家理一下思路 先看下面这个图 在前面我们用到要在 androidmanifest xml 文件中注册一个 Receiver 然后 android widget 就能接收到广播 当用户添加 删除或者更新时间到了 android widget 都会接收来自系统的广播 然后他会判断调用哪个函数来处理 既然我们要更新 android widget 中的内容 我们就可以自己定义一个广播 然后接收这 个广播 来更新我们的 widget 下面接收具体步骤 更新更新 androidmanifest xml 文件中的文件中的 Receiver 01 02 0 3 04 05 06 07 08 10 在文件中我们添加了一个 intent filter 用来接收广播 在在 example appwidget xml 布局文件中添加一个布局文件中添加一个 textview 和一个和一个 button 01 10 在在 ExampleAppWidgetProvider 中增加成员变量中增加成员变量 1 private static final String UPDATE ACTION sl example APPWIDGET UPDATE 修改修改 onUpdate 方法如下方法如下 01 public void onReceive Context context Intent intent 02 TODO Auto generated method stub 03 String str intent getAction 04 if UPDATE ACTION equals str 05 06 RemoteViews remoteViews new RemoteViews context getPackageName R layout example appwidg et 07 remoteViews setTextViewText R id textviewID2 按钮被点 击了 08 09 AppWidgetManager appWidgetManager AppWidgetManager getInstance context 10 ComponentName componentName new ComponentName context ExampleAppWidgetProvider cl ass 11 appWidgetManager updateAppWidget componentName remoteViews 12 13 else 14 super onReceive context intent 15 16 修改修改 onReceive 方法如下方法如下 01 public void onUpdate Context context AppWidgetManager appWidgetManager 02 int appWidgetIds 03 TODO Auto generated method stub 04 getTime 05 for int i 0 i appWidgetIds length i 06 07 RemoteViews remoteViews new RemoteViews context getPackageName R layout example appwidg et 08 remoteViews setTextViewText R id textviewID dateStr 09 10 Intent intent new Intent context MainActivity class 11 PendingIntent pendingIntent PendingIntent getActivity context 0 intent 0 12 remoteViews setOnClickPendingIntent R id buttonID pendingIntent 13 14 Intent intent2 new Intent 15 intent2 setAction UPDATE ACTION 16 PendingIntent pendingIntent2 PendingIntent getBroadcast context 0 intent2 0 17 remoteViews setOnClickPendingIntent R id buttonID2 pendingIntent2 18 19 appWidgetManager updateAppWidget appWidgetIds remoteViews 20 21 super onUpdate context appWidgetManager appWidgetIds 22 运行程序 点击按钮就可以改变 textview 中的文字 android widget 深入浅出 四 Posted on 2013 年年 1 月月 26 日日 by 石石头头 根据前面的内容 相信大家已经学会了 android widget 开发的相关内容 大家改改界面布局文件 改改相应函数 也能实现一个不错的功

温馨提示

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

评论

0/150

提交评论