今天我们要写一下Android Widget的开发,由于快点凌晨,我就不说的太具体了,同志们就模仿吧!首先看一下效果图:
下面是Demo的详细步骤:
一、新建一个Android工程命名为:WidgetDemo.
二、准备素材,一个是Widget的图标,一个是Widget的背景。存放目录如下图:
三、修改string.xml文件如下:
  1. view plaincopy to clipboardprint?
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <resources>
  4. <string name="hello">Hello World, WidetDemo!</string>
  5. <string name="app_name">DaysToWorldCup</string>
  6. </resources>
  7. <?xml version="1.0" encoding="utf-8"?>
  8. <resources>
  9. <string name="hello">Hello World, WidetDemo!</string>
  10. <string name="app_name">DaysToWorldCup</string>
  11. </resources>
四、建立Widget内容提供者文件,我们在res下建立xml文件夹,并且新建一个widget_provider.xml代码入下:
  1. view plaincopy to clipboardprint?
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:minWidth="50dip"
  5. android:minHeight="50dip"
  6. android:updatePeriodMillis="10000"
  7. android:initialLayout="@layout/main"
  8. />
  9. <?xml version="1.0" encoding="utf-8"?>
  10. <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  11. android:minWidth="50dip"
  12. android:minHeight="50dip"
  13. android:updatePeriodMillis="10000"
  14. android:initialLayout="@layout/main"
  15. />
五、修改main.xml布局,代码如下:
  1. view plaincopy to clipboardprint?
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:orientation="vertical"
  5. android:layout_width="fill_parent"
  6. android:layout_height="fill_parent"
  7. android:background="@drawable/wordcup"
  8. >
  9. <TextView
  10. android:id="@+id/wordcup"
  11. android:layout_width="fill_parent"
  12. android:layout_height="wrap_content"
  13. android:text="@string/hello"
  14. android:textSize="12px"
  15. android:textColor="#ff0000"
  16. />
  17. </LinearLayout>
  18. <?xml version="1.0" encoding="utf-8"?>
  19. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  20. android:orientation="vertical"
  21. android:layout_width="fill_parent"
  22. android:layout_height="fill_parent"
  23. android:background="@drawable/wordcup"
  24. >
  25. <TextView
  26. android:id="@+id/wordcup"
  27. android:layout_width="fill_parent"
  28. android:layout_height="wrap_content"
  29. android:text="@string/hello"
  30. android:textSize="12px"
  31. android:textColor="#ff0000"
  32. />
  33. </LinearLayout>
  34. 六、修改WidgetDemo.java代码如下:
  35. view plaincopy to clipboardprint?
  36. package com.android.tutor;
  37. import java.util.Calendar;
  38. import java.util.Date;
  39. import java.util.GregorianCalendar;
  40. import java.util.Timer;
  41. import java.util.TimerTask;
  42. import android.appwidget.AppWidgetManager;
  43. import android.appwidget.AppWidgetProvider;
  44. import android.content.ComponentName;
  45. import android.content.Context;
  46. import android.widget.RemoteViews;
  47. public class WidetDemo extends AppWidgetProvider {
  48. /** Called when the activity is first created. */
  49. @Override
  50. public void onUpdate(Context context, AppWidgetManager appWidgetManager,
  51. int[] appWidgetIds) {
  52. Timer timer = new Timer();
  53. timer.scheduleAtFixedRate(new MyTime(context,appWidgetManager), 1, 60000);
  54. super.onUpdate(context, appWidgetManager, appWidgetIds);
  55. }
  56. private class MyTime extends TimerTask{
  57. RemoteViews remoteViews;
  58. AppWidgetManager appWidgetManager;
  59. ComponentName thisWidget;
  60. public MyTime(Context context,AppWidgetManager appWidgetManager){
  61. this.appWidgetManager = appWidgetManager;
  62. remoteViews = new RemoteViews(context.getPackageName(),R.layout.main);
  63. thisWidget = new ComponentName(context,WidetDemo.class);
  64. }
  65. public void run() {
  66. Date date = new Date();
  67. Calendar calendar = new GregorianCalendar(2010,06,11);
  68. long days = (((calendar.getTimeInMillis()-date.getTime())/1000))/86400;
  69. remoteViews.setTextViewText(R.id.wordcup, "距离南非世界杯还有" + days+"天");
  70. appWidgetManager.updateAppWidget(thisWidget, remoteViews);
  71. }
  72. }
  73. }
  74. package com.android.tutor;
  75. import java.util.Calendar;
  76. import java.util.Date;
  77. import java.util.GregorianCalendar;
  78. import java.util.Timer;
  79. import java.util.TimerTask;
  80. import android.appwidget.AppWidgetManager;
  81. import android.appwidget.AppWidgetProvider;
  82. import android.content.ComponentName;
  83. import android.content.Context;
  84. import android.widget.RemoteViews;
  85. public class WidetDemo extends AppWidgetProvider {
  86. /** Called when the activity is first created. */
  87. @Override
  88. public void onUpdate(Context context, AppWidgetManager appWidgetManager,
  89. int[] appWidgetIds) {
  90. Timer timer = new Timer();
  91. timer.scheduleAtFixedRate(new MyTime(context,appWidgetManager), 1, 60000);
  92. super.onUpdate(context, appWidgetManager, appWidgetIds);
  93. }
  94. private class MyTime extends TimerTask{
  95. RemoteViews remoteViews;
  96. AppWidgetManager appWidgetManager;
  97. ComponentName thisWidget;
  98. public MyTime(Context context,AppWidgetManager appWidgetManager){
  99. this.appWidgetManager = appWidgetManager;
  100. remoteViews = new RemoteViews(context.getPackageName(),R.layout.main);
  101. thisWidget = new ComponentName(context,WidetDemo.class);
  102. }
  103. public void run() {
  104. Date date = new Date();
  105. Calendar calendar = new GregorianCalendar(2010,06,11);
  106. long days = (((calendar.getTimeInMillis()-date.getTime())/1000))/86400;
  107. remoteViews.setTextViewText(R.id.wordcup, "距离南非世界杯还有" + days+"天");
  108. appWidgetManager.updateAppWidget(thisWidget, remoteViews);
  109. }
  110. }
  111. }
七、修改配置文件AndroidManifest.xml,代码如下:
  1. view plaincopy to clipboardprint?
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  4. package="com.android.tutor"
  5. android:versionCode="1"
  6. android:versionName="1.0">
  7. <application android:icon="@drawable/icon" android:label="@string/app_name">
  8. <receiver android:name=".WidetDemo"
  9. android:label="@string/app_name">
  10. <intent-filter>
  11. <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
  12. </intent-filter>
  13. <meta-data android:name="android.appwidget.provider"
  14. android:resource="@xml/widget_provider"
  15. />
  16. </receiver>
  17. </application>
  18. <uses-sdk android:minSdkVersion="7" />
  19. </manifest>
  20. <?xml version="1.0" encoding="utf-8"?>
  21. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  22. package="com.android.tutor"
  23. android:versionCode="1"
  24. android:versionName="1.0">
  25. <application android:icon="@drawable/icon" android:label="@string/app_name">
  26. <receiver android:name=".WidetDemo"
  27. android:label="@string/app_name">
  28. <intent-filter>
  29. <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
  30. </intent-filter>
  31. <meta-data android:name="android.appwidget.provider"
  32. android:resource="@xml/widget_provider"
  33. />
  34. </receiver>
  35. </application>
  36. <uses-sdk android:minSdkVersion="7" />
  37. </manifest>
八、点击运行(Ctrl+F11),之,运行成功后,我们长时间点击桌面,会出现如下俩个,依次点击,就可以看到最上面的效果图:
今天就到这里了,我困了呵呵,我发现时间好像不对劲,lol~我也不去多想了,大家知道的告诉我下!对日历这些东西不是太了解,谢谢!!

本文出自 “Android_Tutor” 博客,请务必保留此出处http://weizhulin.blog.51cto.com/1556324/311438

转载于:https://www.cnblogs.com/xiaoran1129/archive/2012/12/12/2814043.html

Android高手进阶教程(八)之----Android Widget开发案例(世界杯倒计时!)相关推荐

  1. Android高手进阶教程(四)之----Android 中自定义属性(attr.xml,TypedArray)的使用!

    今天我们的教程是根据前面一节扩展进行的,如果你没有看,请点击 Android高手进阶教程(三) 查看第三课,这样跟容易方便你的理解! 在xml 文件里定义控件的属性,我们已经习惯了android:at ...

  2. Android高手进阶教程(十一)之----Android 通用获取Ip的方法(判断手机是否联网的方法)!

    大家好,我们这一节讲一下,Android获取Ip的一些方法,在我们开发中,有判断手机是否联网,或者想获得当前手机的Ip地址,当然WIFI连接的和 我们3G卡的Ip地址当然是不一样的. 首先我尝试了如下 ...

  3. Android高手进阶教程(一)-------Android常用名令集锦(图文并茂)!

    大家好,今天我们要讲的是android开发中,比较常用的名令集锦, 在我们开发中难免用到Android命令,有些确实命令确实很有用处. 特别对于一些初学者来说,命令根本没有想过用也不会用,比如他们想安 ...

  4. JSP WEB开发入门基础到高手进阶教程002

    JSP WEB开发入门基础到高手进阶教程 -------开发入门 JSP与微软的Active Server Pages 兼容,但它是使用类似HTML的卷标以及Java程序代码段而不是VBScript. ...

  5. Android基础入门教程——7.4 Android调用WebService

    Android基础入门教程--7.4 Android调用WebService 标签(空格分隔): Android基础入门教程 本节引言: 经过前面的学习,数据请求,数据解析,文件上传下载等,应该满足大 ...

  6. Android简易实战教程--第五话《开发一键锁屏应用》

    转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/51860900 点击打开链接 Device Administration 对于这个应 ...

  7. java高级框架应用开发案例教程_Java高级框架应用开发案例教程:struts2+spring+hibernate PDF...

    资源名称:Java高级框架应用开发案例教程:struts2+spring+hibernate PDF 第1章 struts+spring+hibernate概述 1.1 框架概述 1.2 struts ...

  8. 计算机辅助设计二次开发案例教程,计算机辅助设计二次开发案例教程ch03.ppt

    <计算机辅助设计二次开发案例教程ch03.ppt>由会员分享,可在线阅读,更多相关<计算机辅助设计二次开发案例教程ch03.ppt(14页珍藏版)>请在人人文库网上搜索. 1. ...

  9. 【技术漫谈】Android高手进阶,安卓多线程面试题

    一 我最近也是跟一些同学的交流啊,拿我自己的一些事情来看,其实做了很多的一些.更加底层的一些东西了,包括一些.电子方面的一些编程,然后也会涉及到一些Linux里面的一些驱动方面的一些事情,最近是在做这 ...

最新文章

  1. unity项目警告之 LF CRLF问题
  2. HoloLens开发手记- SpectatorView for iOS编译指南
  3. g4e基础篇#1 为什么要使用版本控制系统
  4. Android官方开发文档Training系列课程中文版:添加ActionBar之设置ActionBar
  5. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (15) - L1数据缓存/读写地址转换
  6. python语言是非开源语言_python是非开源语言吗
  7. linux软盘镜像下载,软盘镜像Image文件制作(WinImage Pro)
  8. jwplayer 初始化设置项
  9. PicGo搭建图床避坑
  10. CTFT、DTFT、DFT、FFT
  11. 银河麒麟kylin_V10系统安装mysql-8.0.31
  12. gt,gte,lt,lte含义
  13. 基于MATLAB的拼图游戏设计(图文详解,附完整代码)
  14. hdu 6578 Blank dp
  15. 计算机教学音乐,计算机音乐的教学和应用研究
  16. conda创建环境报错conda.core.subdir_data.Response304ContentUnchanged
  17. 面向对象的 CSS (OOCSS)
  18. iOS 送审浅谈:1.4.1、2.1、2.5.2、2.5.4、4.2.3、5.2.5
  19. 基于网页自动化Selenium IDE的安装与部署 图书馆选座、网站防休眠、自动点击等
  20. Oracle特殊字符转义

热门文章

  1. HDU 6114 Chess 【组合数】(2017百度之星程序设计大赛 - 初赛(B))
  2. hdu 2085 核反应堆
  3. 2.1 空间配置器(allocator)
  4. 原生js--兼容获取窗口滚动条位置和窗口大小的方法
  5. WebMatrix 3发布了!
  6. Visual Studio 2005 2008 2010样式
  7. 备战金九银十,阿里P8师兄指导完整攻略(附:学习资料+面试宝典+项目实战笔记)
  8. 六个方法查看linux硬盘使用状况
  9. 把windows一个目录mount到Ubuntu下,非root用户没有写权限
  10. 世界未解之谜之----------Android Gradle