本次建立一個簡單的appwidget。java
相關概念:android
一、AppWidgetProviderInfo對象:它是一個xml文件,爲appWidget提供元數據,包括佈局,更新頻率等數據。這個對象定義在xml中。app
二、AppWidgetProvider: 定義了appwidget的基本生命週期函數。ide
很少說,一切盡在代碼:函數
一、在layout中新建一個appwidgetlayout.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:id="@+id/textview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout
沒什麼多說的,只是一個textview。這個是咱們的應用程序在桌面的控件。spa
二、在res中新建一個xml包,在這個包中新建一個appwidget_info.xml文件。code
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="294dp" android:minHeight="72dp" android:updatePeriodMillis="86400000" android:initialLayout="@layout/appwidgetlayout" />
這個xml爲appwidget提供元數據,這個是在桌面的佈局,而這個layout(appwidgetlayout)爲在appwidget中控件的佈局。xml
三、在包下新建咱們的provider,他繼承了AppWidgetProvider,咱們只須要對它的生命週期進行處理就好了。對象
public class AppWidgetprovider extends AppWidgetProvider { @Override public void onDeleted(Context context, int[] appWidgetIds) { // TODO Auto-generated method stub System.out.println("onDeleted"); super.onDeleted(context, appWidgetIds); } @Override public void onDisabled(Context context) { // TODO Auto-generated method stub System.out.println("onDisable"); super.onDisabled(context); } @Override public void onEnabled(Context context) { // TODO Auto-generated method stub System.out.println("onEnable"); super.onEnabled(context); } @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub System.out.println("onreceive"); super.onReceive(context, intent); } @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // TODO Auto-generated method stub System.out.println("onUpdate"); super.onUpdate(context, appWidgetManager, appWidgetIds); } }
四、在AndroidManifest.xml中進行配置,因爲這個appwidget使用的是廣播機制,咱們須要在AndroidManifest.xml中進行以下配置:
<receiver android:name="AppWidgetprovider"> <intent-filter > <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/appwidget_info" /> </receiver>
經過過濾器咱們截取APPWIDGET_UPDATE這個action,而後對provider進行資源配置,對應的剛剛那個xml中的文件。