今天我们要写一下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~我也不去多想了,大家知道的告诉我下!对日历这些东西不是太了解,谢谢!!

更多相关文章

  1. Android中的资源与国际化
  2. Android实现视频播放的3种实现方式
  3. Android应用项目绑定appcom_v7打包时,出现错误:"XXX"isnottransla
  4. Android(安卓)ListView 滑动背景为黑色的解决办法
  5. android activity ImageView全屏设置
  6. conversion to dalvik format failed with error 1的解决办法
  7. Android(安卓)Service生命周期及用法!
  8. Android(安卓)应用没有桌面图标
  9. android使用selector修改TextView中的字体颜色和背景颜色

随机推荐

  1. ImageView的scaletype属性
  2. Android(安卓)Building System 分析
  3. Android–手掌中的王者?
  4. Android(安卓)Studio 初体验
  5. android 开发中中,经常用到的代码
  6. Android之Service学习篇一:Service启动方
  7. Android(安卓)使用 TableLayout 布局拉伸
  8. [原]Ubuntu 14.04编译Android(安卓)Kerne
  9. android 项目中接入flutter模块(部分页面
  10. android 中隐藏EditText的下划线方法