天天看點

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

注意這是一個Widget雖然很醜,不過沒辦法,本人在學校初接觸Android,水準不高,呵呵

繼續閱讀