使用配置在窗口小部件上设置属性

时间:2011-02-04 14:57:07

标签: java android android-widget

首先,我为前端定义了一个小部件。我有两个简单的问题

我将它添加到清单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上设置一个属性,并使用RemoteViews向窗口小部件添加一个新的AnalogClock,或者如何在widget 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 个答案:

答案 0 :(得分:1)

首先,android.appwidget.action.APPWIDGET_CONFIGURE属于配置,不属于小部件

遗憾的是,RemoteViews的功能非常有限。我不得不通过绘制一个Bitmap,然后有一个只显示该位图的简单小部件(通过RemoteViews更新)来做很多事情