zoukankan      html  css  js  c++  java
  • Android高手进阶教程(八)之----Android Widget开发案例(世界杯倒计时!)

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

    下面是Demo的详细步骤:

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

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

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

    <?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代码入下:

    <?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布局,代码如下:

    <?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代码如下:

    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,代码如下:

    va] view plain copy
    
    
     
    <?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),之,运行成功后,我们长时间点击桌面,会出现如下俩个,依次点击,就可以看到最上面的效果图:

    岁月本长而忙者自促;天地本宽而卑者自隘;风花雪月本闲,而劳忧者自冗;天行健,君子以自强不息;地势坤,君子以厚德载物;宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒.不妄取,不妄予,不妄想,不妄求,与人方便,随遇而安
  • 相关阅读:
    理解HTTP的POST和PUT的区别
    眼见为实 — CSS的overflow属性
    Iconfont的代码使用
    JSP中contentType、pageEncoding和meta charset的区别
    在 webpack 中使用 ECharts
    MVC 中的 ViewModel
    一个简单例子理解C#的协变和逆变
    C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法
    c#打包文件解压缩
    8种主要排序算法的C#实现 (二)
  • 原文地址:https://www.cnblogs.com/vvning/p/9429118.html
Copyright © 2011-2022 走看看