今天抽空去看了下辦公場所,準備做點兒自己感興趣的東西了,然後今天簡單的說了下大概的一個需求,前期我就先自己做點兒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 記