详解Android Widget创建过程

移动开发
Android Widget创建过程是本文要介绍的内容,主要是来了解并学习Android Widget应用的学习,具体内容来看本文详解。

Android Widget创建过程是本文要介绍的内容,主要是来了解并学习Android Widget应用的学习,本文通过代码很详细的讲解Android Widget创建过程。具体内容的实现来看本文详解。

创建一个Widget:

1、创建一个AppWidgetProvider类,设置提供的服务:

  1. publicclasswidgetextendsAppWidgetProvider{  
  2. @Override  
  3. publicvoidonUpdate(Contextcontext,AppWidgetManagerappWidgetManager,int[]appWidgetIds){  
  4. context.startService(newIntent(context,UpdateService.class));//启动一个服务  

2、再创建一个Service类:

  1. publicstaticclassUpdateServiceextendsService{  
  2. @Override  
  3. publicvoidonStart(Intentintent,intstartId){  
  4. TimeestTime=newTime("BEIJING");  
  5. //TimewestTime=newTime("WEST");  
  6. //westTime.setToNow();  
  7. Stringtime1=estTime.getCurrentTimezone();//获取手机当前所在地的时区  
  8. Timetime=newTime(time1);  
  9. time.setToNow();  
  10. //estTime.setToNow();  
  11. intweek=time.getWeekNumber();//获取当天是本年的第几周  
  12. RemoteViewsupdateViews=newRemoteViews(getPackageName(),R.layout.digitalclock);//设置时钟显示的界面,此界面的设置如3所示  
  13. //updateViews.setTextViewText(R.id.time,estTime.format("%H:%M:%S"));  
  14. updateViews.setTextViewText(R.id.time,time.format("%H:%M:%S"));  
  15. updateViews.setTextViewText(R.id.time1,"第"+week+"周");  
  16. ComponentNamethisWidget=newComponentName(this,widget.class);  
  17. AppWidgetManagerAppWidgetManagermanager=AppWidgetManager.getInstance(this);  
  18. manager.updateAppWidget(thisWidget,updateViews);  
  19. }  
  20. @Override  
  21. publicIBinderonBind(Intentintent){  
  22. returnnull;  

3、设置时钟显示界面:

此文件为layout中的digitalclock.xml文件,

  1. xmlns:android="http://schemas.android.com/apk/res/android" 
  2. android:orientation="vertical" 
  3. android:gravity="top" 
  4. android:layout_width="146dip" 
  5. android:layout_height="146dip" 
  6. > 
  7. android:paddingTop="10dip" 
  8. android:id="@+id/time" 
  9. android:textStyle="bold" 
  10. android:textColor="#ff0000" 
  11. android:gravity="center_horizontal" 
  12. android:layout_width="146dip" 
  13. android:layout_height="wrap_content" 
  14. /> 
  15. android:id="@+id/time1" 
  16. android:textColor="#ff0000" 
  17. android:textStyle="bold" 
  18. android:gravity="center_horizontal" 
  19. android:layout_width="146dip" 
  20. android:layout_height="20dip" 
  21. /> 
  22. android:src="@drawable/mm" 
  23. android:layout_width="146dip" 
  24. android:layout_height="72dip" 
  25. /> 

4、设置服务:

此文件为res文件夹下xml文件夹中的est_appwidget.xml文件:

  1. xmlns:android="http://schemas.android.com/apk/res/android" 
  2. android:minWidth="146dip" 
  3. android:minHeight="146dip" 
  4. android:updatePeriodMillis="1000" 
  5. android:initialLayout="@layout/digitalclock"/> 

5、Manifest.xml文件设置:

  1. package="com.test.widget" 
  2. android:versionCode="1" 
  3. android:versionName="1.0"> 
  4. android:label="@string/app_name"> 
  5. android:name="android.appwidget.action.APPWIDGET_UPDATE"> 
  6. android:name="android.appwidget.provider" 
  7. android:resource="@xml/est_appwidget"> 
  8. android:name=".widget$UpdateService"> 
  9. android:label="@string/app_name"> 

6、第1和第2步合并起来就是一个Widget.java文件,如下所示:

  1. importandroid.app.Service;  
  2. importandroid.appwidget.AppWidgetManager;  
  3. importandroid.appwidget.AppWidgetProvider;  
  4. importandroid.content.ComponentName;  
  5. importandroid.content.Context;  
  6. importandroid.content.Intent;  
  7. importandroid.os.IBinder;  
  8. importandroid.text.format.Time;  
  9. importandroid.widget.RemoteViews;  
  10. publicclasswidgetextendsAppWidgetProvider{  
  11. @Override  
  12. publicvoidonUpdate(Contextcontext,AppWidgetManagerappWidgetManager,int[]appWidgetIds){  
  13. context.startService(newIntent(context,UpdateService.class));//启动一个服务  
  14. }  
  15. publicstaticclassUpdateServiceextendsService{  
  16. @Override  
  17. publicvoidonStart(Intentintent,intstartId){  
  18. TimeestTime=newTime("BEIJING");  
  19. //TimewestTime=newTime("WEST");  
  20. //westTime.setToNow();  
  21. Stringtime1=estTime.getCurrentTimezone();  
  22. Timetime=newTime(time1);  
  23. time.setToNow();  
  24. //estTime.setToNow();  
  25. intweek=time.getWeekNumber();  
  26. RemoteViewsupdateViews=newRemoteViews(getPackageName(),R.layout.digitalclock);  
  27. //updateViews.setTextViewText(R.id.time,estTime.format("%H:%M:%S"));  
  28. updateViews.setTextViewText(R.id.time,time.format("%H:%M:%S"));  
  29. updateViews.setTextViewText(R.id.time1,"第"+week+"周");  
  30. ComponentNamethisWidget=newComponentName(this,widget.class);  
  31. AppWidgetManagerAppWidgetManagermanager=AppWidgetManager.getInstance(this);  
  32. manager.updateAppWidget(thisWidget,updateViews);  
  33. }  
  34. @Override  
  35. publicIBinderonBind(Intentintent){  
  36. returnnull;  
  37. }  

小结:详解Android Widget创建过程的内容介绍完了,希望通过Android Widget创建内容的学习能对你有所帮助。

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-09-08 15:07:10

Android Wid搭建

2010-07-13 09:02:19

Widget开发

2011-09-09 20:14:58

Android Wid

2011-09-07 13:06:04

Android Wid

2011-09-07 10:34:48

Android Wid

2011-02-28 13:04:27

RelativeLayAndroid Wid

2011-09-08 13:11:07

Android Wid实例

2011-09-07 14:20:42

Android Wid组件

2009-09-01 11:07:58

C#项目

2011-09-08 15:51:33

Android Wid组件

2011-03-14 09:55:25

AndroidWidget

2011-05-27 16:57:13

Android widget

2011-09-07 16:28:46

QT WidgetQWidget

2011-09-13 15:35:40

Widget

2011-09-09 19:05:28

Widget

2019-07-24 08:34:35

Java对象数据结构

2010-01-19 17:26:37

VB.NET创建过程

2009-11-02 14:53:30

Oracle创建用户权

2011-09-07 14:01:41

Android Wid实例

2011-09-09 10:00:20

Android Wid开发
点赞
收藏

51CTO技术栈公众号