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

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

<? xmlversion="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

<? xmlversion="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{

/** Calledwhentheactivityisfirstcreated. */
@Override
public void onUpdate(Contextcontext,
AppWidgetManagerappWidgetManager,
int []appWidgetIds)
{
context.startService(
new Intent(context,UpdateService. class ));
}

// Service类
public static class UpdateService extends Service{
@Override
public void onStart(Intentintent, int startId){
TimeestTime
= new Time( " EST " );
estTime.setToNow();
RemoteViewsupdateViews
=
new RemoteViews(getPackageName(),
R.layout.digitalclock);
updateViews.setTextViewText(R.id.time,estTime.format(
" %H:%M " ));

ComponentNamethisWidget
= new ComponentName( this ,ESTTime. class );

AppWidgetManagermanager
= AppWidgetManager.getInstance( this );
manager.updateAppWidget(thisWidget,updateViews);
}

@Override
public IBinderonBind(Intentintent){
// TODOAuto-generatedmethodstub
return null ;
}

}


}

4.在AndroidManifest.xml中注册本Widget

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

更多相关文章

  1. 使用apktool工具遇到could not decode arsc file的解决办法
  2. 2019最新Android常用开源库总结(From:知乎)
  3. [Android] 修改Android(安卓)Virtual Device Manager 创建虚拟机
  4. android studio下Material Design库的使用
  5. Android(安卓)7.1.2(Android(安卓)N) Multi-window-mode--多窗口
  6. xcode与eclipse整合cocos2dx
  7. 技术博客
  8. Litepal的简单使用
  9. 基于unity3d游戏的android版本逆向初探

随机推荐

  1. Android的Activity, Intent 和 Service
  2. android的服务进程Service的创建及启动
  3. Android(安卓)补间动画之平移动画Transla
  4. android使用主流库搭建应用框架
  5. 【定制Android系统】Android(安卓)7.1 实
  6. Unity 调用Android(安卓)arr包(互相调用并
  7. Android系列 adb操作命令详解
  8. Android开发者必备的技能你会吗?MVVM 最新
  9. 你真的懂Android(安卓)Handler吗?(一)
  10. android之测试