Android 的AppWidgetProvider 提供的可在HOME显示的插件,基础用法相对较简单

 下面来看看编写步骤 :

1.为AppWidget提供一个元文件布局AppWidgetProviderInfo,用来显示widget的界面,

2.创建一个WidgetProvider继承自AppWidgetProvider;

3.为WidgetProvider创建一个布局文件也可以直接用main.xml;

4.注册Manifest.xml 这个很重要一会下面会讲到。

代码部分:

1)提供AppWidgetProviderInfo的布局文件 res/xml/appwidget_info.xml

 

[xhtml] view plain copy

  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"  

  3.     android:minWidth="100dp"  

  4.     android:minHeight="40dp"  

  5.         //设置更新时间  毫秒单位  

  6.     android:updatePeriodMillis="86400000"  

  7.         //引用的布局文件  

  8.     android:initialLayout="@layout/widget_layout"  

  9. >  

  10. </appwidget-provider>  

2)WidgetProvider.Java

[java] view plain copy

  1. package com.yin;  

  2. import android.appwidget.AppWidgetManager;  

  3. import android.appwidget.AppWidgetProvider;  

  4. import android.content.Context;  

  5. import android.content.Intent;  

  6. public class WidgetProvider extends AppWidgetProvider{  

  7.     //没接收一次广播消息就调用一次,使用频繁  

  8.     public void onReceive(Context context, Intent intent) {  

  9.         // TODO Auto-generated method stub  

  10.         System.out.println("recrive");  

  11.         super.onReceive(context, intent);  

  12.     }  

  13.     //每次更新都调用一次该方法,使用频繁  

  14.     public void onUpdate(Context context, AppWidgetManager appWidgetManager,  

  15.             int[] appWidgetIds) {  

  16.         // TODO Auto-generated method stub  

  17.         System.out.println("update--->");  

  18.         super.onUpdate(context, appWidgetManager, appWidgetIds);  

  19.     }  

  20.     //没删除一个就调用一次  

  21.     public void onDeleted(Context context, int[] appWidgetIds) {  

  22.         // TODO Auto-generated method stub  

  23.         System.out.println("Deleted");  

  24.         super.onDeleted(context, appWidgetIds);  

  25.     }  

  26.     //当该Widget第一次添加到桌面是调用该方法,可添加多次但只第一次调用  

  27.     public void onEnabled(Context context) {  

  28.         // TODO Auto-generated method stub  

  29.         System.out.println("OnEnable");  

  30.         super.onEnabled(context);  

  31.     }  

  32.     //当最后一个该Widget删除是调用该方法,注意是最后一个  

  33.     public void onDisabled(Context context) {  

  34.         // TODO Auto-generated method stub  

  35.         System.out.println("onDisable");  

  36.         super.onDisabled(context);  

  37.     }  

  38.       

  39.       

  40. }   

 

3)为Widget创建一个显示用的布局文件

widget_layout.xml

[c-sharp] view plain copy

  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  

  3.     android:orientation="vertical"  

  4.     android:layout_width="fill_parent"  

  5.     android:layout_height="fill_parent"  

  6.     >  

  7. <TextView    

  8.     android:layout_width="fill_parent"   

  9.     android:layout_height="wrap_content"   

  10.     android:textColor="#ff00ff"  

  11.     android:background="#0fffff"  

  12.     android:text="MyFirstAppWidget"  

  13.     />  

  14. </LinearLayout>  

 

这个很简单 不解释了

4)AndroidManifest.xml  这个就很重要了

[xhtml] view plain copy

  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  

  3.       package="com.yin"  

  4.       android:versionCode="1"  

  5.       android:versionName="1.0">  

  6.     <uses-sdk android:minSdkVersion="8" />  

  7.     <application android:icon="@drawable/icon" android:label="@string/app_name">  

  8.          

  9.             <activity android:name=".AppWidget"  //Avtivityd 的文件名  在这个例子中没有用上 不用看  

  10.                   android:label="@string/app_name">  

  11.             <intent-filter>  

  12.                 <action android:name="android.intent.action.MAIN" />  

  13.                 <category android:name="android.intent.category.LAUNCHER" />  

  14.             </intent-filter>  

  15.         </activity>  

  16.         <receiver android:name=".WidgetProvider">  

  17.             <meta-data android:name="android.appwidget.provider"  //Android系统定义的格式,不能更改,不能打错  

  18.                 android:resource="@xml/appwidget_info"></meta-data> //引用的在res/xml下创建的文件  

  19.             <intent-filter>           //这个是接收广播时的过滤器 Android定义的   

  20.                 <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>  

  21.             </intent-filter>  

  22.         </receiver>  

  23.     </application>  

  24. </manifest>  

 

这样就做好了一个可添加到桌面的Widget了  如图

注意这是一个Widget虽然很丑,不过没办法,本人在学校初接触Android,水平不高,呵呵