Android Widget创建过程是本文要介绍的内容,主要是来了解并学习Android Widget应用的学习,本文通过代码很详细的讲解Android Widget创建过程。具体内容的实现来看本文详解。
创建一个Widget:
1、创建一个AppWidgetProvider类,设置提供的服务:
- publicclasswidgetextendsAppWidgetProvider{
- @Override
- publicvoidonUpdate(Contextcontext,AppWidgetManagerappWidgetManager,int[]appWidgetIds){
- context.startService(newIntent(context,UpdateService.class));//启动一个服务
- }
2、再创建一个Service类:
- publicstaticclassUpdateServiceextendsService{
- @Override
- publicvoidonStart(Intentintent,intstartId){
- TimeestTime=newTime("BEIJING");
- //TimewestTime=newTime("WEST");
- //westTime.setToNow();
- Stringtime1=estTime.getCurrentTimezone();//获取手机当前所在地的时区
- Timetime=newTime(time1);
- time.setToNow();
- //estTime.setToNow();
- intweek=time.getWeekNumber();//获取当天是本年的第几周
- RemoteViewsupdateViews=newRemoteViews(getPackageName(),R.layout.digitalclock);//设置时钟显示的界面,此界面的设置如3所示
- //updateViews.setTextViewText(R.id.time,estTime.format("%H:%M:%S"));
- updateViews.setTextViewText(R.id.time,time.format("%H:%M:%S"));
- updateViews.setTextViewText(R.id.time1,"第"+week+"周");
- ComponentNamethisWidget=newComponentName(this,widget.class);
- AppWidgetManagerAppWidgetManagermanager=AppWidgetManager.getInstance(this);
- manager.updateAppWidget(thisWidget,updateViews);
- }
- @Override
- publicIBinderonBind(Intentintent){
- returnnull;
- }
3、设置时钟显示界面:
此文件为layout中的digitalclock.xml文件,
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:gravity="top"
- android:layout_width="146dip"
- android:layout_height="146dip"
- >
- android:paddingTop="10dip"
- android:id="@+id/time"
- android:textStyle="bold"
- android:textColor="#ff0000"
- android:gravity="center_horizontal"
- android:layout_width="146dip"
- android:layout_height="wrap_content"
- />
- android:id="@+id/time1"
- android:textColor="#ff0000"
- android:textStyle="bold"
- android:gravity="center_horizontal"
- android:layout_width="146dip"
- android:layout_height="20dip"
- />
- android:src="@drawable/mm"
- android:layout_width="146dip"
- android:layout_height="72dip"
- />
4、设置服务:
此文件为res文件夹下xml文件夹中的est_appwidget.xml文件:
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:minWidth="146dip"
- android:minHeight="146dip"
- android:updatePeriodMillis="1000"
- android:initialLayout="@layout/digitalclock"/>
5、Manifest.xml文件设置:
- package="com.test.widget"
- android:versionCode="1"
- android:versionName="1.0">
- android:label="@string/app_name">
- android:name="android.appwidget.action.APPWIDGET_UPDATE">
- android:name="android.appwidget.provider"
- android:resource="@xml/est_appwidget">
- android:name=".widget$UpdateService">
- android:label="@string/app_name">
6、第1和第2步合并起来就是一个Widget.java文件,如下所示:
- importandroid.app.Service;
- importandroid.appwidget.AppWidgetManager;
- importandroid.appwidget.AppWidgetProvider;
- importandroid.content.ComponentName;
- importandroid.content.Context;
- importandroid.content.Intent;
- importandroid.os.IBinder;
- importandroid.text.format.Time;
- importandroid.widget.RemoteViews;
- publicclasswidgetextendsAppWidgetProvider{
- @Override
- publicvoidonUpdate(Contextcontext,AppWidgetManagerappWidgetManager,int[]appWidgetIds){
- context.startService(newIntent(context,UpdateService.class));//启动一个服务
- }
- publicstaticclassUpdateServiceextendsService{
- @Override
- publicvoidonStart(Intentintent,intstartId){
- TimeestTime=newTime("BEIJING");
- //TimewestTime=newTime("WEST");
- //westTime.setToNow();
- Stringtime1=estTime.getCurrentTimezone();
- Timetime=newTime(time1);
- time.setToNow();
- //estTime.setToNow();
- intweek=time.getWeekNumber();
- RemoteViewsupdateViews=newRemoteViews(getPackageName(),R.layout.digitalclock);
- //updateViews.setTextViewText(R.id.time,estTime.format("%H:%M:%S"));
- updateViews.setTextViewText(R.id.time,time.format("%H:%M:%S"));
- updateViews.setTextViewText(R.id.time1,"第"+week+"周");
- ComponentNamethisWidget=newComponentName(this,widget.class);
- AppWidgetManagerAppWidgetManagermanager=AppWidgetManager.getInstance(this);
- manager.updateAppWidget(thisWidget,updateViews);
- }
- @Override
- publicIBinderonBind(Intentintent){
- returnnull;
- }
- }
小结:详解Android Widget创建过程的内容介绍完了,希望通过Android Widget创建内容的学习能对你有所帮助。