什麼是appwidget? 即application widget。 應用程序控件,就是在桌面顯示的控件。AppWidget就是我們平常在桌面上見到的那種一個個的小控件,利用這個小控件可以給用戶提供一些方便快捷的操作。
本次創建一個簡單的appwidget。
相關概念:
1、AppWidgetProviderInfo對象:它是一個xml文件,爲appWidget提供元數據,包括佈局,更新頻率等數據。這個對象定義在xml中。
2、AppWidgetProvider: 定義了appwidget的基本生命週期函數。
不多說,一切盡在代碼:
1、在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。這個是我們的應用程序在桌面的控件。
2、在res中新建一個xml包,在這個包中新建一個appwidget_info.xml文件。
<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中控件的佈局。
3、在包下新建我們的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);
}
}
4、在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中的文件。
現在我們先把它給跑起來,然後慢慢調試,觀察對它操作的事件對應的週期函數。。。
他的週期函數我們講在下次課講。
打完收工!