Android DigitalClock

Android平台下Widget的搭建过程为:

1.在res/layout下创建Widget的布局文件:digitalclock.xml

<? xml version="1.0" encoding="UTF-8" ?>
< TextView  
    
xmlns:android ="http://schemas.android.com/apk/res/android"
    android:layout_width
="wrap_content"  
    android:layout_height
="wrap_content"  
    android:id
="@+id/time"
    android:textSize
="45px"
    android:scrollX
="30px"
    android:scrollY
="30px"
    android:textStyle
="bold"
    android:textColor
="#ff000000"
    android:background
="@drawable/bg"
    
/>

2.在res/xml下创建Widget的描述文件:est_appwidget.xml

<? xml version="1.0" encoding="UTF-8" ?>
< appwidget-provider  xmlns:android ="http://schemas.android.com/apk/res/android"
    android:minWidth
="186dip"
    android:minHeight
="212dip"
    android:updatePeriodMillis
="1000"
    android:initialLayout
="@layout/digitalclock" />

3. 从AppWidgetProvider继承一个类(ESTTime),重写其虚方法

package  com.android.test.esttime;

import  android.app.Service;
import  android.appwidget.AppWidgetManager;
import  android.appwidget.AppWidgetProvider;
import  android.content.ComponentName;
import  android.content.Context;
import  android.content.Intent;
import  android.os.IBinder;
import  android.text.format.Time;
import  android.widget.RemoteViews;


public   class  ESTTime  extends  AppWidgetProvider {
    
    
/**  Called when the activity is first created.  */
    @Override
    
public   void  onUpdate(Context context,
            AppWidgetManager appWidgetManager,
int [] appWidgetIds )
    {
        context.startService(
new  Intent(context,UpdateService. class ));        
    }
    
  
// Service类
     public   static   class  UpdateService  extends  Service {
        @Override
        
public   void  onStart(Intent intent, int  startId){
            Time estTime 
=   new  Time( " EST " );
            estTime.setToNow();
            RemoteViews updateViews 
=  
                
new  RemoteViews(getPackageName(),
                        R.layout.digitalclock);
            updateViews.setTextViewText(R.id.time, estTime.format(
" %H:%M " ));
            
            ComponentName thisWidget 
=   new  ComponentName( this ,ESTTime. class );
            
            AppWidgetManager manager 
=  AppWidgetManager.getInstance( this );
            manager.updateAppWidget(thisWidget, updateViews);
        }

        @Override
        
public  IBinder onBind(Intent intent) {
            
//  TODO Auto-generated method stub
             return   null ;
        }

    }
    

}

4.在AndroidManifest.xml中注册本Widget

<? xml version="1.0" encoding="utf-8" ?>
< manifest  xmlns:android ="http://schemas.android.com/apk/res/android"
      package
="com.android.test.esttime"
      android:versionCode
="1"
      android:versionName
="1.0" >
    
< application  android:icon ="@drawable/icon"  android:label ="@string/app_name" >
        
< receiver  android:name =".ESTTime"
                  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/est_appwidget" />             
        
</ receiver >
        
< service  android:name =".ESTTime$UpdateService" />
    
</ application >
    
< uses-sdk  android:minSdkVersion ="3"   />
</ manifest >

最后,编译运行。这样在Home上长按弹出的Widget列表中就有新创建的Weiget了 。

注:这里的 android:updatePeriodMillis更新频率支持SDK 1.5的版本,之后的版本都不支持。

你可能感兴趣的:(android,layout,平台,encoding)