首先,我为前端定义了一个小部件。我有两个简单的问题
我将它添加到清单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)
}
答案 0 :(得分:1)
首先,android.appwidget.action.APPWIDGET_CONFIGURE属于配置,不属于小部件
遗憾的是,RemoteViews的功能非常有限。我不得不通过绘制一个Bitmap,然后有一个只显示该位图的简单小部件(通过RemoteViews更新)来做很多事情