Android Widget 实例(世界杯倒计时)

转载 2012年03月31日 13:53:04

来自:http://blog.csdn.net/android_tutor/article/details/5544471#


今天我们要写一下Android Widget的开发,由于快点凌晨,我就不说的太具体了,同志们就模仿吧!首先看一下效果图:

 

 

下面是Demo的详细步骤:

 

一、新建一个Android工程命名为:WidgetDemo.

 

二、准备素材,一个是Widget的图标,一个是Widget的背景。存放目录如下图:

 

 

三、修改string.xml文件如下:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.     <string name="hello">Hello World, WidetDemo!</string>  
  4.     <string name="app_name">DaysToWorldCup</string>  
  5. </resources>  

 

四、建立Widget内容提供者文件,我们在res下建立xml文件夹,并且新建一个widget_provider.xml代码入下:

 

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:minWidth="50dip"  
  4.     android:minHeight="50dip"  
  5.     android:updatePeriodMillis="10000"  
  6.     android:initialLayout="@layout/main"  
  7. />   

 

五、修改main.xml布局,代码如下:

 

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     android:background="@drawable/wordcup"  
  7.     >  
  8. <TextView    
  9.     android:id="@+id/wordcup"  
  10.     android:layout_width="fill_parent"   
  11.     android:layout_height="wrap_content"   
  12.     android:text="@string/hello"  
  13.     android:textSize="12px"  
  14.     android:textColor="#ff0000"  
  15.     />  
  16. </LinearLayout>  

 

六、修改WidgetDemo.java代码如下:

  1. package com.android.tutor;  
  2. import java.util.Calendar;  
  3. import java.util.Date;  
  4. import java.util.GregorianCalendar;  
  5. import java.util.Timer;  
  6. import java.util.TimerTask;  
  7. import android.appwidget.AppWidgetManager;  
  8. import android.appwidget.AppWidgetProvider;  
  9. import android.content.ComponentName;  
  10. import android.content.Context;  
  11. import android.widget.RemoteViews;  
  12. public class WidetDemo extends AppWidgetProvider {  
  13.     /** Called when the activity is first created. */  
  14.     
  15.     @Override  
  16.     public void onUpdate(Context context, AppWidgetManager appWidgetManager,  
  17.             int[] appWidgetIds) {  
  18.           
  19.         Timer timer = new Timer();  
  20.         timer.scheduleAtFixedRate(new MyTime(context,appWidgetManager), 160000);  
  21.         super.onUpdate(context, appWidgetManager, appWidgetIds);  
  22.     }  
  23.       
  24.       
  25.     private class MyTime extends TimerTask{  
  26.         RemoteViews remoteViews;  
  27.         AppWidgetManager appWidgetManager;  
  28.         ComponentName thisWidget;  
  29.           
  30.         public MyTime(Context context,AppWidgetManager appWidgetManager){  
  31.             this.appWidgetManager = appWidgetManager;  
  32.             remoteViews = new RemoteViews(context.getPackageName(),R.layout.main);  
  33.               
  34.             thisWidget = new ComponentName(context,WidetDemo.class);  
  35.         }  
  36.         public void run() {  
  37.               
  38.             Date date = new Date();  
  39.             Calendar calendar = new GregorianCalendar(2010,06,11);  
  40.             long days = (((calendar.getTimeInMillis()-date.getTime())/1000))/86400;  
  41.             remoteViews.setTextViewText(R.id.wordcup, "距离南非世界杯还有" + days+"天");  
  42.             appWidgetManager.updateAppWidget(thisWidget, remoteViews);  
  43.               
  44.         }  
  45.           
  46.     }  
  47.     
  48. }  

 

七、修改配置文件AndroidManifest.xml,代码如下:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.       package="com.android.tutor"  
  4.       android:versionCode="1"  
  5.       android:versionName="1.0">  
  6.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  7.         <receiver android:name=".WidetDemo"  
  8.                   android:label="@string/app_name">  
  9.             <intent-filter>  
  10.                 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />  
  11.             </intent-filter>  
  12.             <meta-data android:name="android.appwidget.provider"  
  13.                        android:resource="@xml/widget_provider"  
  14.             />  
  15.         </receiver>  
  16.     </application>  
  17.     <uses-sdk android:minSdkVersion="7" />  
  18. </manifest>   

 

八、点击运行(Ctrl+F11),之,运行成功后,我们长时间点击桌面,会出现如下俩个,依次点击,就可以看到最上面的效果图:

 

 

今天就到这里了,我困了呵呵,我发现时间好像不对劲,lol~我也不去多想了,大家知道的告诉我下!对日历这些东西不是太了解,谢谢!!



Android Widget开发案例(世界杯倒计时!)

首先看一下效果图:     下面是Demo的详细步骤:   一、新建一个Android工程命名为:WidgetDemo.   二、准备素材,一个是Wi...
  • myrssq
  • myrssq
  • 2016年12月15日 14:37
  • 133

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

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://weizhulin.blog.51cto.com/1556324/311438...

Android Widget简单应用之奥运会倒计时

Widget桌面小部件是可以在主页上显示并频繁更新的视图。作为视图,部件的观感通过布局xml文件来定义。对于部件,除了视图的布局,还需要定义部件视图将需要在屏幕上占用多大空间。 部件视图还包括一对J...
  • fwwdn
  • fwwdn
  • 2012年05月03日 10:57
  • 1788

2010年非洲世界杯倒计时

  • 2010年01月11日 20:49
  • 904KB
  • 下载

世界杯倒计时

  • 2014年06月07日 10:02
  • 33.18MB
  • 下载

setInterval(倒计时实例)和setTimeout的用法

实例: html页面
  • snn1410
  • snn1410
  • 2014年09月25日 10:39
  • 8390

世界杯倒计时 WMP+Flash

  • 2014年06月01日 14:22
  • 3.37MB
  • 下载

handler 通过线程来更新UI 实例60秒倒计时

API:大致讲的就是下面这张图的内容 android进程的优先级 UI线程 其他线程不允许操作ui主线程: android提出两种方案解决这个问题 1,H...
  • heinika
  • heinika
  • 2015年09月10日 08:47
  • 921

js 计时器,倒计时完整实例代码附效果图 制作一个当前时间的动态时钟

点击触发倒计时的时候就会自动从30秒到0秒,当到达0秒的时候会弹出时间到. 代码很简洁 ,还加了一个制作当前时间的动态时钟的代码当做笔记了,如果分和秒是个位数的时候会在前面自动加0...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Widget 实例(世界杯倒计时)
举报原因:
原因补充:

(最多只允许输入30个字)