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

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

世界杯倒计时应用

下面是Demo的详细步骤:

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

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

WidgeDemo

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

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

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

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

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

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

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

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

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

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

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

Widge效果

DaysToWorldCup


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值