AppWidget2

来源:互联网 发布:如何模拟网络拥塞 编辑:程序博客网 时间:2024/06/06 21:03

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 plaincopy
  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 plaincopy
  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 plaincopy
  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 plaincopy
  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,水平不高,呵呵

0 0