Android的App Widget實現

今天抽空去看了下辦公場所,準備做點兒自己感興趣的東西了,然後今天簡單的說了下大概的一個需求,前期我就先自己做點兒android方面的知識儲備了,下午回來剪了頭髮,改頭換面,看了《恐怖直播》這部很棒的韓國電影之後(還是不喜歡韓國人說話的那種。。說不出來的感覺,就是不喜歡,就跟聽別的地方的方言一樣,像漢語但又不是漢語,原諒我扯遠了),好吧,簡單的說就是今天過了很充實的一天,接下來要做的東西,需要在android方面下功夫,而且我大概也知道該往哪個方向走,所以就趁着晚飯之後的時間,研究了一下App Widget這個東東。

好吧,具體的也不想多說,至於這個是啥,android系統用戶掏出手機看下,Widget就知道了,說白了就是那種桌面的小組件,官方參考資料:我是奇妙的傳送門,這個是官網的,介紹的比其他的地方都好,所以,自己去看下,沒啥問題的,這裏我就簡單的記述一下我的過程好了。

首先我們創建一個AppWidget的空白工程,可以不用創建Activity的。

接下來,我們在layout目錄下創建一個Widget的顯示佈局文件,命名爲:widget.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"
			  android:gravity="center" >
	<TextView android:layout_height="wrap_content"
	          android:layout_width="wrap_content"
	          android:id="@+id/textView1"
	          android:text="這個是App Widget的Demo"
	          android:textColor="#ff0000ff" />
</LinearLayout>
簡單說下,就是寫了一個TextView,顯示"這個是App Widget的Demo"。
然後,在res目錄下,創建一個xml文件夾,在xml目錄下,創建一個provider_info.xml文件,用來配置Widget佔屏幕的寬度高度以及更新頻率啥的,其他詳細的參數請參考該頁:我是AppWidgetProviderInfo的傳送門,我們這裏就簡單的定義這麼一個配置文件就好了,代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- appwidget-provider Widget的配置文件  -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
	android:initialLayout="@layout/widget"
	android:updatePeriodMillis="86400000"
	android:minHeight="72dp"
	android:minWidth="294dp" >
</appwidget-provider>

接下來我們還要修改一下AndroidManifest.xml文件,在applicatioin節點下添加一個receiver節點,具體代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.eric.appwidget"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="15" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <receiver android:name="appWidgetProvider">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
            </intent-filter>
            <meta-data android:name="android.appwidget.provider" android:resource="@xml/provider_info"></meta-data>
        </receiver>
    </application>

</manifest>

完成了上述步驟之後,我們創建一個用java類,用來處理Widget的請求,繼承自AppWidgetProvider類,這裏我們沒有寫任何的處理方法,不過這些方法的作用,相信大家看方法命名也能大概瞭解一些了,還是那句話,具體你要處理的東西,請參考AppWidgetProvider的詳細頁面:我是AppWidgetProvider的傳送門,這裏我們的代碼如下:

package com.example.appwidget;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;

/**
 * Created by Administrator on 13-10-19.
 */
public class appWidgetProvider extends AppWidgetProvider
{
    @Override
    public void onReceive(Context contex,Intent intent)
    {
        super.onReceive(contex,intent);
    }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
    {
        super.onUpdate(context,appWidgetManager,appWidgetIds);
    }

    @Override
    public void onDeleted(Context context, int[] appWidgetIds)
    {
        super.onDeleted(context, appWidgetIds);
    }

    @Override
    public void onEnabled(Context context)
    {
        super.onDisabled(context);
    }
}
具體的處理方法,寫在相應的方法裏面,例如onReceive方法會處理每個請求,onEnabled方法會在App Widget第一次被放到手機桌面上時調用,等等,至於其他的,大家點擊傳送門去查看即可。

OK,接下來我們來運行一下,看下實際的效果如何:


劃紅線的地方就是我們自己製作的App Widget了,這個大小是可以自定義的,大家到時候自行定製一下即可,然後我們來看看把它拖拽到桌面上會是一個什麼樣兒的效果:


當然,這個是一個簡單的入門級別的demo,所以簡陋了一下,大家也可以參照官網的介紹,做一個效果更炫的,不過大體思路還是這樣兒的,當然,App Widget也可以配合App一起使用,就跟QQ空間的那個插件一樣,關鍵就看你如何去自定義了。


2013年10月19日,Eric.Tang 記

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章