首先,我爲前端定義了一個小部件。我有兩個簡單的問題使用配置在小部件上設置屬性
我將其添加到清單XML
<receiver android:name=".Widget" android:label="My Widget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/widget" />
</receiver>
這當其加入到前端應該加載配置類。它不再顯示在窗口小部件列表中。由於將動作更改爲APPWIDGET_CONFIGURE
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="146dip"
android:minHeight="146dip"
android:updatePeriodMillis="0"
android:initialLayout="@layout/widget"
android:configure="com.deliveryninja.yourclock.configuration.Configure"
android:icon="@drawable/icon"
/>
這是小部件的xml。目前我只使用一個簡單的時鐘。
現在在配置類中填充WidgetModel並將時鐘曲面的路徑添加到共享屬性。
我想使用配置類來獲取路徑,然後更新小部件。
<?xml version="1.0" encoding="utf-8" ?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/Widget" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:gravity="center">
<AnalogClock android:id="@+id/AnalogClock"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:hand_hour="@drawable/widgethour"
android:hand_minute="@drawable/widgetminute"
/>
</RelativeLayout>
我希望能夠將android:dial屬性設置爲用戶選擇的給定資源的路徑。
這就是我掙扎的地方,我該如何在AttributeSet上設置一個Propery,並使用RemoteViews將新的AnalogClock添加到窗口小部件,或者如何編輯窗口小部件xml中現有的AnalogClock的屬性。
public static void updateOne(Context context, int appWidgetId){
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
WidgetModel widgetData = WidgetModel.getWidgetData(context, appWidgetId);
widgetData.getClockFacePath();
AnalogClock clock = new AnalogClock(context);
AttributeSet attributes = new //?? how do i make the AttributeSet
//RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
//views.setString(R.id.AnalogClock, , value)
}
我有一個想法,我可以通過擴展AnalogClock類併爲可繪製資源展示setter和getters。我從另一個問題中得到了一個代碼snipet,它將採取一個URL並創建一個可繪製的資源。然後它只是一個創建一個新的MyClock並使用setters的例子。希望這應該工作。 – DeliveryNinja 2011-02-06 11:46:49