Android–Widget開發 – Android移動開發技術文章_手機開發 Android移動開發教學課程

 

首先說明,Widget是一種很小的應用程序。在Android1.5中加入瞭AppWidget framework框架之後,開發者可以使用該框架開發Widget。Widget可以拖到用戶的桌面並且可以交互,它提供一個full-featured apps預覽,可以在桌面指定一個空間來顯示應用提供的自定義內容。

   每個Widget就是一個BroadcastReceiver,它們用XNL metadata 來描述WIdget細節。AppWidget framework通過Broadcast intents 和Widget通信,Widget更新使用RemotesViews來發送。RemotesViews被包裝成一個layout和特定的內容來顯示到桌面上。下面就以我從網上找的一個桌面撥號的小例子來說明一下開發Widget的具體步驟。

先來看一下整個程序的結構:

具體步驟如下:

 

1.首先需要在res\layout目錄下創建桌面組件的佈局文件widget.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="wrap_content" android:layout_height="wrap_content"

    android:orientation="vertical" android:id="@+id/widLinear"

    android:focusable="true" android:focusableInTouchMode="true"

    android:clickable="true" android:clipChildren="true"

    android:background="@drawable/shortcallbg">

    <ImageView android:layout_width="wrap_content"

        android:layout_height="wrap_content" android:id="@+id/widImageCall"

        android:layout_gravity="center" android:layout_marginTop="8dip"

        android:background="@drawable/callbtn" android:focusable="true"

        android:clickable="true"></ImageView>

    <TextView android:layout_width="wrap_content"

        android:layout_height="wrap_content" android:singleLine="false"

        android:id="@+id/widNameText" android:layout_gravity="center"

        android:width="70dip" android:gravity="center"

        android:textColor="@color/fontColor"></TextView>

</LinearLayout>

2.在res\xml目錄下創建一個描述這個桌面組件屬性的文件shortcallwidget.xml,

<?xml version="1.0" encoding="utf-8"?>

<appwidget-provider

  xmlns:android="http://schemas.android.com/apk/res/android" 

  android:initialLayout="@layout/widget" 

  android:minWidth="72dip" android:minHeight="72dip" 

  android:updatePeriodMillis="0" 

  android:configure="com.ty.shortcall.ConfiguresActivity">

</appwidget-provider>

其中android:updatePeriodMillis="0" 是指自動更新的時間間隔。android:configure這個屬性是可選的。如果你的Widget需要在啟動前先啟動一個Activity.則需要設定該項為你的Activity

3.創建一個類ShortCallWidget,讓它繼承AppWidgetProvider.AppwidgetProvider中有許多方法,如OnUpdate(周期更新時調用),OnDelete(刪除組件時調用),OnEnabled(當第一個組件時調用),開發者可以根據自己的需要重寫這些方法。

public void onUpdate(Context context, AppWidgetManager appWidgetManager,

            int[] appWidgetIds) {

        // TODO Auto-generated method stub

        super.onUpdate(context, appWidgetManager, appWidgetIds);

        Log.d(TAG, "login the widget");

        

        int count = appWidgetIds.length;        

        

        for(int i = 0; i < count; i++){

            int widgetId = appWidgetIds[i];

            

            updateAppWidget(context, appWidgetManager, widgetId);

        }

    }

 

4.處理android:configure指定的類,在類中監聽保存的button,當點擊按鈕後,創建一個AppWidgetManager的實例,然後通過調用之前的.updateAppWidget方法更新Widget。

5.最後別忘瞭,在AndroidMainfest.xml中註冊相應的類ShortCallWidget以及ConfiguresActivity。

效果圖:

點擊之後的效果:

 

本文出自 “HDDevTeam” 博客

發佈留言