今天我们要写一下Android Widget的开发,由于快点凌晨,我就不说的太具体了,同志们就模仿吧!首先看一下效果图: 下面是Demo的详细步骤: 一、新建一个Android工程命名为:WidgetDemo. 二、准备素材,一个是Widget的图标,一个是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),之,运行成功后,我们长时间点击桌面,会出现如下俩个,依次点击,就可以看到最上面的效果图: 今天就到这里了,我困了呵呵,我发现时间好像不对劲,lol~我也不去多想了,大家知道的告诉我下!对日历这些东西不是太了解,谢谢!!

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

更多相关文章

  1. PHP开发Android应用程序
  2. android小功能实现之xml文件解析(Pull)
  3. Android串口通信:串口读写实例
  4. android 开发布局之RelativeLayout
  5. Android(安卓)Jni代码示例讲解
  6. 2021-01-06
  7. Android电话拨号器
  8. Android高手进阶教程(五)之----Android(安卓)中LayoutInflater的
  9. 【Android(安卓)学习】之二维码扫描开发(闪光灯功能)

随机推荐

  1. android基础--获取sdcard的总容量
  2. android studio中的文本替换
  3. 测试Android真机访问电脑主机web项目服务
  4. Android Studio每日小技巧
  5. Android Things:“1024工场”店铺开张啦!树
  6. 微信 Tinker 的一切都在这里,包括源码
  7. Android ListView监听上下滑动(判断是否
  8. Android本地数据存储之Sharedpreference
  9. Android Studio 出现 Gradle's dependenc
  10. Android基础入门教程——7.4 Android调用