Android(安卓)DigitalClock
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的版本,之后的版本都不支持。
更多相关文章
- 使用apktool工具遇到could not decode arsc file的解决办法
- 2019最新Android常用开源库总结(From:知乎)
- [Android] 修改Android(安卓)Virtual Device Manager 创建虚拟机
- android studio下Material Design库的使用
- Android(安卓)7.1.2(Android(安卓)N) Multi-window-mode--多窗口
- xcode与eclipse整合cocos2dx
- 技术博客
- Litepal的简单使用
- 基于unity3d游戏的android版本逆向初探