现在的位置: 首页 > 综合 > 正文

Android DigitalClock

2018年01月09日 ⁄ 综合 ⁄ 共 3209字 ⁄ 字号 评论关闭

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的版本,之后的版本都不支持。

抱歉!评论已关闭.