今天我们要写一下Android Widget的开发,由于快点凌晨,我就不说的太具体了,同志们就模仿吧!首先看一下效果图: Android高手进阶教程(八)之----Android Widget开发案例(世界杯倒计时!) 下面是Demo的详细步骤: 一、新建一个Android工程命名为:WidgetDemo. 二、准备素材,一个是Widget的图标,一个是Widget的背景。存放目录如下图: Android高手进阶教程(八)之----Android Widget开发案例(世界杯倒计时!) 三、修改string.xml文件如下:
  1. viewplaincopytoclipboardprint?
  2. <?xmlversion="1.0"encoding="utf-8"?>
  3. <resources>
  4. <stringname="hello">HelloWorld,WidetDemo!</string>
  5. <stringname="app_name">DaysToWorldCup</string>
  6. </resources>
  7. <?xmlversion="1.0"encoding="utf-8"?>
  8. <resources>
  9. <stringname="hello">HelloWorld,WidetDemo!</string>
  10. <stringname="app_name">DaysToWorldCup</string>
  11. </resources>
四、建立Widget内容提供者文件,我们在res下建立xml文件夹,并且新建一个widget_provider.xml代码入下:
  1. viewplaincopytoclipboardprint?
  2. <?xmlversion="1.0"encoding="utf-8"?>
  3. <appwidget-providerxmlns:android="http://schemas.android.com/apk/res/android"
  4. android:minWidth="50dip"
  5. android:minHeight="50dip"
  6. android:updatePeriodMillis="10000"
  7. android:initialLayout="@layout/main"
  8. />
  9. <?xmlversion="1.0"encoding="utf-8"?>
  10. <appwidget-providerxmlns:android="http://schemas.android.com/apk/res/android"
  11. android:minWidth="50dip"
  12. android:minHeight="50dip"
  13. android:updatePeriodMillis="10000"
  14. android:initialLayout="@layout/main"
  15. />
五、修改main.xml布局,代码如下:
  1. viewplaincopytoclipboardprint?
  2. <?xmlversion="1.0"encoding="utf-8"?>
  3. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  4. android:orientation="vertical"
  5. android:layout_width="fill_parent"
  6. android:layout_height="fill_parent"
  7. android:background="@drawable/wordcup"
  8. >
  9. <TextView
  10. android:id="@+id/wordcup"
  11. android:layout_width="fill_parent"
  12. android:layout_height="wrap_content"
  13. android:text="@string/hello"
  14. android:textSize="12px"
  15. android:textColor="#ff0000"
  16. />
  17. </LinearLayout>
  18. <?xmlversion="1.0"encoding="utf-8"?>
  19. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  20. android:orientation="vertical"
  21. android:layout_width="fill_parent"
  22. android:layout_height="fill_parent"
  23. android:background="@drawable/wordcup"
  24. >
  25. <TextView
  26. android:id="@+id/wordcup"
  27. android:layout_width="fill_parent"
  28. android:layout_height="wrap_content"
  29. android:text="@string/hello"
  30. android:textSize="12px"
  31. android:textColor="#ff0000"
  32. />
  33. </LinearLayout>
  34. 六、修改WidgetDemo.java代码如下:
  35. viewplaincopytoclipboardprint?
  36. packagecom.android.tutor;
  37. importjava.util.Calendar;
  38. importjava.util.Date;
  39. importjava.util.GregorianCalendar;
  40. importjava.util.Timer;
  41. importjava.util.TimerTask;
  42. importandroid.appwidget.AppWidgetManager;
  43. importandroid.appwidget.AppWidgetProvider;
  44. importandroid.content.ComponentName;
  45. importandroid.content.Context;
  46. importandroid.widget.RemoteViews;
  47. publicclassWidetDemoextendsAppWidgetProvider{
  48. /**Calledwhentheactivityisfirstcreated.*/
  49. @Override
  50. publicvoidonUpdate(Contextcontext,AppWidgetManagerappWidgetManager,
  51. int[]appWidgetIds){
  52. Timertimer=newTimer();
  53. timer.scheduleAtFixedRate(newMyTime(context,appWidgetManager),1,60000);
  54. super.onUpdate(context,appWidgetManager,appWidgetIds);
  55. }
  56. privateclassMyTimeextendsTimerTask{
  57. RemoteViewsremoteViews;
  58. AppWidgetManagerappWidgetManager;
  59. ComponentNamethisWidget;
  60. publicMyTime(Contextcontext,AppWidgetManagerappWidgetManager){
  61. this.appWidgetManager=appWidgetManager;
  62. remoteViews=newRemoteViews(context.getPackageName(),R.layout.main);
  63. thisWidget=newComponentName(context,WidetDemo.class);
  64. }
  65. publicvoidrun(){
  66. Datedate=newDate();
  67. Calendarcalendar=newGregorianCalendar(2010,06,11);
  68. longdays=(((calendar.getTimeInMillis()-date.getTime())/1000))/86400;
  69. remoteViews.setTextViewText(R.id.wordcup,"距离南非世界杯还有"+days+"天");
  70. appWidgetManager.updateAppWidget(thisWidget,remoteViews);
  71. }
  72. }
  73. }
  74. packagecom.android.tutor;
  75. importjava.util.Calendar;
  76. importjava.util.Date;
  77. importjava.util.GregorianCalendar;
  78. importjava.util.Timer;
  79. importjava.util.TimerTask;
  80. importandroid.appwidget.AppWidgetManager;
  81. importandroid.appwidget.AppWidgetProvider;
  82. importandroid.content.ComponentName;
  83. importandroid.content.Context;
  84. importandroid.widget.RemoteViews;
  85. publicclassWidetDemoextendsAppWidgetProvider{
  86. /**Calledwhentheactivityisfirstcreated.*/
  87. @Override
  88. publicvoidonUpdate(Contextcontext,AppWidgetManagerappWidgetManager,
  89. int[]appWidgetIds){
  90. Timertimer=newTimer();
  91. timer.scheduleAtFixedRate(newMyTime(context,appWidgetManager),1,60000);
  92. super.onUpdate(context,appWidgetManager,appWidgetIds);
  93. }
  94. privateclassMyTimeextendsTimerTask{
  95. RemoteViewsremoteViews;
  96. AppWidgetManagerappWidgetManager;
  97. ComponentNamethisWidget;
  98. publicMyTime(Contextcontext,AppWidgetManagerappWidgetManager){
  99. this.appWidgetManager=appWidgetManager;
  100. remoteViews=newRemoteViews(context.getPackageName(),R.layout.main);
  101. thisWidget=newComponentName(context,WidetDemo.class);
  102. }
  103. publicvoidrun(){
  104. Datedate=newDate();
  105. Calendarcalendar=newGregorianCalendar(2010,06,11);
  106. longdays=(((calendar.getTimeInMillis()-date.getTime())/1000))/86400;
  107. remoteViews.setTextViewText(R.id.wordcup,"距离南非世界杯还有"+days+"天");
  108. appWidgetManager.updateAppWidget(thisWidget,remoteViews);
  109. }
  110. }
  111. }
七、修改配置文件AndroidManifest.xml,代码如下:
  1. viewplaincopytoclipboardprint?
  2. <?xmlversion="1.0"encoding="utf-8"?>
  3. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  4. package="com.android.tutor"
  5. android:versionCode="1"
  6. android:versionName="1.0">
  7. <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
  8. <receiverandroid:name=".WidetDemo"
  9. android:label="@string/app_name">
  10. <intent-filter>
  11. <actionandroid:name="android.appwidget.action.APPWIDGET_UPDATE"/>
  12. </intent-filter>
  13. <meta-dataandroid:name="android.appwidget.provider"
  14. android:resource="@xml/widget_provider"
  15. />
  16. </receiver>
  17. </application>
  18. <uses-sdkandroid:minSdkVersion="7"/>
  19. </manifest>
  20. <?xmlversion="1.0"encoding="utf-8"?>
  21. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  22. package="com.android.tutor"
  23. android:versionCode="1"
  24. android:versionName="1.0">
  25. <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
  26. <receiverandroid:name=".WidetDemo"
  27. android:label="@string/app_name">
  28. <intent-filter>
  29. <actionandroid:name="android.appwidget.action.APPWIDGET_UPDATE"/>
  30. </intent-filter>
  31. <meta-dataandroid:name="android.appwidget.provider"
  32. android:resource="@xml/widget_provider"
  33. />
  34. </receiver>
  35. </application>
  36. <uses-sdkandroid:minSdkVersion="7"/>
  37. </manifest>
八、点击运行(Ctrl+F11),之,运行成功后,我们长时间点击桌面,会出现如下俩个,依次点击,就可以看到最上面的效果图: Android高手进阶教程(八)之----Android Widget开发案例(世界杯倒计时!) Android高手进阶教程(八)之----Android Widget开发案例(世界杯倒计时!) 今天就到这里了,我困了呵呵,我发现时间好像不对劲,lol~我也不去多想了,大家知道的告诉我下!对日历这些东西不是太了解,谢谢!!

本文出自 “Android_Tutor” 博客,请务必保留此出处http://weizhulin.blog.51cto.com/1556324/311438

更多相关文章

  1. 【Android - 进阶】之事件分发机制
  2. Android高手进阶教程(五)之----Android 中LayoutInflater的使用
  3. Android 进阶—— Android 系统安全机制之Apk签名详解及Android
  4. 前言:Android进阶汇总(持续更新)
  5. 【Android进阶学习】实现没有标题栏的窗口和全屏显示
  6. Android 进阶16:IntentService 使用及源码解析

随机推荐

  1. Android安装卸载程序具体操作方法解析
  2. view属性大全
  3. Android 4.1 Jelly Bean 相关资源
  4. Android——媒体库 相关知识总结贴
  5. 【30篇突击 android】源码统计三
  6. Android(安卓)颜色渲染(二) 颜色区域划分
  7. Android软键盘的隐藏显示
  8. android应用去掉title bar
  9. Android调用系统设置,Android调用系统设置
  10. 一道面试题引发的对android中context的研