Android基础之AppWidgetProvider


2011-04-23 14:40:39

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

 下面来看看编写步骤 :

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

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

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

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

代码部分:

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

 

<?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="100dp" android:minHeight="40dp" //设置更新时间 毫秒单位 android:updatePeriodMillis="86400000" //引用的布局文件 android:initialLayout="@layout/widget_layout" > </appwidget-provider>

2) WidgetProvider .java

package com.yin; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.Context; import android.content.Intent; public class WidgetProvider extends AppWidgetProvider{ //没接收一次广播消息就调用一次,使用频繁 public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub System.out.println("recrive"); super.onReceive(context, intent); } //每次更新都调用一次该方法,使用频繁 public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // TODO Auto-generated method stub System.out.println("update--->"); super.onUpdate(context, appWidgetManager, appWidgetIds); } //没删除一个就调用一次 public void onDeleted(Context context, int[] appWidgetIds) { // TODO Auto-generated method stub System.out.println("Deleted"); super.onDeleted(context, appWidgetIds); } //当该Widget第一次添加到桌面是调用该方法,可添加多次但只第一次调用 public void onEnabled(Context context) { // TODO Auto-generated method stub System.out.println("OnEnable"); super.onEnabled(context); } //当最后一个该Widget删除是调用该方法,注意是最后一个 public void onDisabled(Context context) { // TODO Auto-generated method stub System.out.println("onDisable"); super.onDisabled(context); } } 

 

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

widget_layout.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#ff00ff" android:background="#0fffff" android:text="MyFirstAppWidget" /> </LinearLayout>

 

这个很简单 不解释了

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

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yin" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".AppWidget" //Avtivityd 的文件名 在这个例子中没有用上 不用看 android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".WidgetProvider"> <meta-data android:name="android.appwidget.provider" //Android系统定义的格式,不能更改,不能打错 android:resource="@xml/appwidget_info"></meta-data> //引用的在res/xml下创建的文件 <intent-filter> //这个是接收广播时的过滤器 Android定义的 <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action> </intent-filter> </receiver> </application> </manifest>

 

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

Android基础之AppWidgetProvider_第1张图片

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



你可能感兴趣的:(android,layout,application,Class,action,encoding)