【Android源码 栏目提醒】:以下是网学会员为您推荐的Android源码 -android widget 开发实例 桌面便签程序的实现详解和源码 (上) - 企业软件开发,希望本篇文章对您学习有所帮助。
您还未登录登录注册帮助CSDN首页资讯论坛博客下载搜索更多如有错漏请不吝拍砖指正转载请注明出处非常感谢 桌面便签软件是
android上常用软件的一种比如比较早的Sticky Note就曾非常流行Sticky Note的介绍可以参见 http://www.tompda.com/c/article/11778/ 而实际上使用
android平台对widget开发的支持桌面便签类软件是非常易于开发的。
本文通过逐步实现一个简单的桌面便签软件和大家分享进行widget开发的过程和方法。
1.MyNote的最的最终实现终实现效果效果为了提起大家阅读本文的兴趣先介绍一下最终实现的效果。
首先可以通过桌面增加我们的MyNote小部件如下图所示图中的“我的便签”就是我们之后将要开发的便签程序。
点击后启动添加日志界面如下图所示输入便签内容后可以点击下面所列的四种图标之一作为便签图标。
比如点击第一个后桌面上就会添加一个便签
android widget 开发实开发实例例 : 桌面便桌面便签签程序的程序的实现详实现详解和源解和
源码码 上上 收藏全站搜索用用户户操作操作留言 发消息 加为好友 闷烧闷烧大叔大叔IDsilenceburn共11742次访问排名15661好友12人关注者14人。
qq:闷烧闷烧大叔的文章大叔的文章原创 19 篇翻译 1 篇转载 1 篇评论 24 篇订阅订阅我的博客我的博客 silenceburn的公告的公告文章分文章分类类androidCCode KataJAVAMy
Android AppsSnmp编程之美算法存档存档2011年02月12011年01月4converted by Web2PDFConvert.com点击桌面上的便签可以再次对便签内容进行修改并更换图标。
桌面上可以同时存在多个便签并可以分别进行修改。
如下图所示我们将刚才创建的便签的图标修改一下并新增了一个便签每个便签的内容都是分别独立保存的可以随时点击桌面图标修改。
2.开发开发方式方式开发的目的和追求的效果已经十分清楚了首先我们确定一下开发方式。
在本文中将采取一种渐进式的开发也就是说不会一口气从头做到尾。
而是分为好几个阶段。
每个阶段都完成一定的目标然后下个阶段增加更多的功能每个阶段都离最终目标更进一步OK你可以说这是一次敏捷开发 :第一个阶段首先我们会搭建一个widget原型程序它是完全可以运行的可以创建桌面widget。
第二个阶段我们改进 widget 配置Activity 部分的实现使其具备创建便签的功能第三个阶段我们改进 widget 点击响应部分的实现使其具备修改便签的功能3.搭建搭建widget原型程序原型程序本节我们会做一个最简单的widget程序原型但是它是可以运行的。
一般来说 widget 程序由以下部分组成a. AppWidgetProvider 的实现 2010年12月82010年11月32010年10月32009年06月2converted by Web2PDFConvert.comb. widget外观布局定义文件c. 新增widget时的配置Activity的实现可选d. widget 参数配置文件 以下分别讲解a. AppWidgetProvider 的的实现实现 首先我们新建一个
android工程起名为MyNote然后修改 MyNote.java 的代码使MyNote继承自 AppWidgetProvider 并重写 onUpdate 和 onDeleted 方法。
其中onUpdate 会在widget创建及被更新时调用 onDeleted 会在widget被删除时调用。
目前我们不需要在这里实现任何功能只是简单的记录日志以便我们观察其运行编写好的代码如下view plaincopy to clipboardprint01. package com.silenceburn 02. 03. import
android.appwidget.AppWidgetManager 04. import
android.appwidget.AppWidgetProvider 05. import
android.content.Context 06. import
android.util.Log 07. 08. public class MyNote extends AppWidgetProvider 09. / Called when the activity is first created. / 10. 11. final String mPerfName com.silenceburn.MyColorNoteConf 12. 13. Override 14. public void onUpdateContext context AppWidgetManager appWidgetManager 15. int appWidgetIds 16. // TODO Auto-generated method stub 17. final int N appWidgetIds.length 18. for int i 0 i N i 19. int appWidgetId appWidgetIdsi 20. Log.imyLog this is appWidgetId onUpdate 21. 22. 23. 24. 25. Override 26. public void onDeletedContext context int appWidgetIds 27. // TODO Auto-generated method stub 28. final int N appWidgetIds.length 29. for int i 0 i N i 30. int appWidgetId appWidgetIdsi 31. Log.imyLog this is appWidgetId onDelete 32. 33. 34. 35. b. widget外外观观布局定布局定义义文件文件我们需要为widget编写一个外观布局文件在本示例中布局非常简单只需要一个imageView即可编写好的 my_note_widget.xml 文件如下view plaincopy to clipboardprint01. 02. 这里用到了一个外部图片 sketchy_paper_008.png来源于网络感谢图片原作者。
可以到 http://dryicons.com/free-icons/preview/sketchy-paper-icons/ 打包下载。
converted by Web2PDFConvert.com 注意下载下来的包中的文件名可能和我写的程序中的命名有差异请注意自行调整。
c. 新增新增widget时时的配置的配置Activity的的实现实现可可选选
android平台为widget提供一个配置界面的功能我们可以自定义一个Activity在widget参数配置文件中配置好相关参数后此Activity会在用户新增widget时自动调用。
一般来说这个配置界面的作用是用户新建widget时让用户配置widget的一些属性比如颜色、大小等等。
但是在我们的这个示例程序中我们用它来当做创建便签的地方不过本节只是先实现一个原型程序所以暂时不做处理我们只是新建一个Activity即可。
新建名为MyNoteConf的Activity重写onCreate方法在OnCreate方法中由于这个Activity是由系统在新增widget时自动调用的所以我们可以用getIntent获取到传入的widgetId。
可以判断其是否是一个有效的widgetId最后我们必须返回一个RESULT_OK的Intent并结束当前Activity系统才会认为配置成功在桌面上放置这个widget。
如果返回RESULT_CANCELED系统会认为配置失败终止widget的创建过程。
编写好的MyNoteConf的代码如下view plaincopy to clipboardprint01. package com.silenceburn 02. 03. import
android.app.Activity 04. import
android.appwidget.AppWidgetManager 05. import
android.content.Intent 06. import
android.os.Bundle 07. import
android.util.Log 08. 09. public class MyNoteConf extends Activity 10. 11. int mAppWidgetId 12. 13. Override 14. protected void onCreateBundle savedInstanceState 15. // TODO Auto-generated method stub 16. super.onCreatesavedInstanceState 17. 18. Log.imyLog on WidgetConf ... 19. 20. setResultRESULT_CANCELED 21. 22. // Find the widget id from the intent. 23. Intent intent getIntent 24. Bundle extras intent.getExtras 25. if extras null 26. mAppWidgetId extras.getIntAppWidgetManager.EXTRA_APPWIDGET_ID 27. AppWidgetManager.INVALID_APPWIDGET_ID 28. 29. 30. // If they gave us an intent without the widget id just bail. 31. if mAppWidgetId AppWidgetManager.INVALID_APPWIDGET_ID 32. finish 33. 34. 35. // return OK 36. Intent resultValue new Intent 37. resultValue.putExtraAppWidgetManager.EXTRA_APPWIDGET_ID 38. mAppWidgetId 39. 40. setResultRESULT_OK resultValue 41. finish 42. 43. d. widget 参数配置文件参数配置文件最后我们需要编写一个widget参数配置文件将布局文件、配置Activity关联起来。
converted by Web2PDFConvert.com我们在res下新建目录xml在xml目录下新增文件 my_note_widget.xml 编写如下view plaincopy to clipboardprint01. 05. 其中 minWidth minHeight 用来指定widget的大小如果我们只占用一个格子也就是俗称的1X1那么72dp的长宽是
android平台推荐的一个最佳实践值。
然后用 initialLayout 参数关联了我们编写好的 layout 文件用 configure 参数关联了我们编写好的配置用ActivityMyNoteConf此外还有一个参数 updatePeriodMills 指定widget的刷新周期从省电角度考虑一般都把此值设置的比较大如果一定要对widget做周期性的事情可以使用AlarmManager。
至此所有widget的要素都已经准备好我们运行一下来看看吧。
4.运行运行widget原型程序原型程序为了运行widget我们还需要修改一下 AndroidManifest.xml 来声明我们的widget。
声明一个receiver过滤
android.appwidget.action.APPWIDGET_UPDATE 并且用metadata关联到我们自己编写的 appWidgetProvider 实现。
声明一个activity关联到我们的配置类 MyNoteConf过滤
android.appwidget.action.APPWIDGET_CONFIGURE。
最后修改一下应用图标此图标会出现在系统的新增widget列表中。
编写好的AndroidManifest.xml 如下view plaincopy to clipboardprint01. 02. 04. 06. 07. 08. 09. 10. 12. 13. 14. 15. 16. 17. 18. 19. 20. 至此原型程序全部开发完成运行一下看看效果吧在桌面上长点可以选择我们刚刚写的原型widget“MyNote”了选择后出现我们定义的配置界面MyNoteConf但是由于我们在onCreate中finish了所以是一闪而过的。
之后MyNote就出现在桌面上了。
我们可以随便拖动它或者把它丢进垃圾箱观察一下日志输出。
上半部分上半部分总结总结converted by Web2PDFConvert.com上半部分主要完成了一个widget的原型它没有任何业务功能但是已经是一个可以运行的骨架了。
在下半部分中我们为它添加血和肉让它真正具备业务功能。
希望大家喜欢这种先写骨架再逐步丰富的开发方式 :下半部分已出炉
android widget 开发实例 : 桌面便签程序的实现详解和
源码 下地址是http://blog.csdn.net/silenceburn/archive/2010/12/23/6094705.aspx发表于 2010年12月23日 00:32:00 评论 3 举报 收藏旧一篇:增加 addDataSchemefile 才能收到SD卡插拔事件的原因分析 -- 浅析
android事件过滤策略 新一篇:
android widget 开发实例 : 桌面便签程序的实现详解和
源码 下thisje 发表于Tuesday March 01 2011 22:44:50 举报回复收藏了yahier 发表于Thursday March 17 2011 04:12:12 举报回复yuanxiaowu 发表于Tuesday April 05 2011 22:11:42 举报回复不错学习了发发表表评论评论表 情评论内容用 户 名登录 注册匿名用户 发表评论热门热门招聘招聘职职位位【 CSDN】高薪诚聘java搜索工程师、运营编辑、就业主管、商务合作策划经理、网站编辑欢迎您的加盟【武汉亨通科技】高薪诚聘项目经理、高级软件工程师邀您加盟亨通共同发展【careerfocus】科锐福克斯猎头公司强悍猎聘IT人才【沃尔玛中国】信息系统部急聘IT英才上海深圳【融资城】投融资平台高薪诚聘技术总监、产品经理等【上海预言】招聘C程序员【搜狐公司】海量技术职位火热招聘中【UC优视】UC浏览器聘技术经理、高级工程师、产品经理【DeNA China】10K30K月薪诚聘
Android开发工程师【成都奥毕】诚聘软件开发工程师高薪奖金优厚福利邀您共同发展【Red/SAFI】北京公司诚聘开发人员.net iPhone等【Google背景公司】年薪10万到公司简介招贤纳士广告服务银行汇款帐号联系方式版权声明法律顾问问题报告北京创新乐知信息技术有限公司 版权所有 京 ICP 证 070598 号世纪乐知北京网络技术有限公司 提供技术支持江苏乐知网络技术有限公司 提供商务支持 Email:webmastercsdn.netCopyright ?? 1999-2010 CSDN.NET All Rights Reserved converted by Web2PDFConvert.com converted by Web2PDFConvert.com