xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/showtime"
android:textSize="20px"
android:textStyle="bold"
android:textColor="#FFFFFFFF"
android:background="@drawable/bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
bg为一个*.9.png文件文件,可以根据定义的大小自动调整图片的大小。
接下来是定义AppWidgetProvider了:
public class TestAppWidget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
// super.onUpdate(context, appWidgetManager, appWidgetIds);
context.startService(new Intent(context, UpdateService.class));
}
public static class UpdateService extends Service {
@Override
public void onStart(Intent intent, int startId) {
// 构造一个美国东部时间的Time对象
Time estTime = new Time("EST");
// 将时间设置为当前
estTime.setToNow();
// RemoteViews是一个描述可在其他进程运行的部件的类,其构造方法需要传入 部件的布局文件以及
// 所在的包的包名
RemoteViews updateViews = new RemoteViews(this.getPackageName(),
R.layout.digitalclock);
updateViews.setTextViewText(R.id.showtime, estTime.format("%H:%M"));
// ComponentName用来表示应用程序中某个组件的完整名字
ComponentName timeWidget = new ComponentName(this,
TestAppWidget.class);
// AppWidgetManager负责桌面部件的管理
AppWidgetManager manager = AppWidgetManager.getInstance(this);
// 通过updateAppWidget传入修改好的RemoteViews对象
manager.updateAppWidget(timeWidget, updateViews);
// super.onStart(intent, startId);
}
public IBinder onBind(Intent arg0) {
return null;
}
}
}
最后要在AndroidManifest.xml文件中进行注册:
package="com.shutao.testwidger"
android:versionCode="1"
android:versionName="1.0">
android:label="@string/app_name">
android:name="TestAppWidget"
android:label="@string/app_name">
android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
android:name="android.appwidget.provider"
android:resource="@xml/testappwidget"
/>