2011-02-04 82 views
0

首先,我爲前端定義了一個小部件。我有兩個簡單的問題使用配置在小部件上設置屬性

我將其添加到清單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) 
} 

回答

1

首先,android.appwidget.action.APPWIDGET_CONFIGURE所屬的,做的配置,而不是在用於微

不幸RemoteViews在他們可以做什麼是非常有限的。我不得不通過繪製成一個Bitmap來做很多事情,然後有一個簡單的小部件,只是顯示該位圖(通過RemoteViews更新)

+0

我有一個想法,我可以通過擴展AnalogClock類併爲可繪製資源展示setter和getters。我從另一個問題中得到了一個代碼snipet,它將採取一個URL並創建一個可繪製的資源。然後它只是一個創建一個新的MyClock並使用setters的例子。希望這應該工作。 – DeliveryNinja 2011-02-06 11:46:49