http://developer.android.com/guide/topics/appwidgets/index.html
如何製作Android Widget
Step1.
建立專案,建置中勾選Create Activity,如果只想要純Widget沒有App程式則可不選Create Activity。
新增widget layou xml檔案,用來撰寫widget layout。
Eclipse>File>new>Android XML File (resource type選Layout)
這xml是用來編輯Widget的UI畫面,和在寫一般的Android程式編UI畫面一樣。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/HelloWIdgetTest" />
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/widgetTestString" />
</LinearLayout>
Step3.
新增widget_metadata.xml,用來描述Widget的meta data (寬、高,更新頻率..etc)
Eclipse>File>new>Android XML File (resource type選AppWidgetProvider)
- initiallayout設成step2中的widget_layout
- minheight、minwidth為最小寬高
- updateperiodmillis更新頻率1000=1秒
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" >
android:initialLayout="@layout/widget_layout"
android:minHeight="80dip" android:minWidth="160dip"
android:updatePeriodMillis="864000000"
</appwidget-provider>
Step4.
撰寫code,初始動作和Widget要做什麼事寫在這裡囉,WidgetTestProvider 繼承 AppWidgetProvider,有底下幾個method事以操作,有空再來細細研究 囧rz
- onUpdate()
- onAppWidgetOptionsChanged()
- onDeleted(Context, int[])
- onEnabled(Context)
- onDisabled(Context)
- onReceive(Context, Intent)
package com.example.widgettest;
import android.appwidget.*;
import android.content.*;
import android.widget.*;
public class WidgetTestProvider extends AppWidgetProvider{
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
RemoteViews myviews=new RemoteViews(context.getPackageName(),R.layout.widget_layout);
ComponentName mywidget=new ComponentName(context,WidgetTestProvider.class);
appWidgetManager.updateAppWidget(mywidget, myviews);
}
}
Step5.
在Android Manifest file中描述widget,這樣才會出現此widget可選,另外這裡也設定權限。code加在<application>...</application>之間。
<receiver android:name="WidgetTestProvider"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/widget_metadata" />
</receiver>
Step6.
看結果,成功 ^^
沒有留言:
張貼留言