我正在尝试在主屏幕上开发自己的模拟时钟小部件。它基于库存ICS模拟时钟小部件,但当添加到主屏幕时,我的小部件首先打开配置屏幕。
在此屏幕上,您可以选择想要时钟的颜色(通过颜色选择器对话框)。您还可以在此屏幕上看到所选颜色的时钟预览。 (见图)。我的问题是将主屏幕上的小部件颜色更改为所选颜色(当您点击应用按钮时)。我有三个.png文件,用于拨号,时针和分针。我在我的widgetconfig类中使用此代码为它们着色:
Drawable dial = getResources().getDrawable(R.drawable.clockbackground);
dial.setColorFilter(color, PorterDuff.Mode.MULTIPLY);
//hour
Drawable hour = getResources().getDrawable(R.drawable.hourhand);
hour.setColorFilter(color, PorterDuff.Mode.MULTIPLY);
//minute
Drawable min = getResources().getDrawable(R.drawable.minutehand);
min.setColorFilter(color, PorterDuff.Mode.MULTIPLY);
// clock
AnalogClock clockpreview = (AnalogClock) findViewById(R.id.ACconfig);
clockpreview.setBackgroundDrawable(dial);
这很好用,因为我可以找到AnalogClock,因为它位于配置屏幕的布局xml文件中,我通过setContentView()在OnCreate()中设置。 问题是,对于我屏幕上的时钟小部件,我必须使用RemoteViews。所以我尝试通过RemoteViews设置时钟小部件的新背景。但RemoteViews似乎太有限了。我需要像setTextViewText()这样的东西,然后我的模拟时钟小部件的背景,例如:
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.clockwidget);
views.setAnalogClockBackgroundDrawable(dial);
时钟小部件背景似乎有点不可改变。如何在widgetconfig类的主屏幕上重新着色我的clockwidget?必须有办法,因为一开始看起来很容易......
我的项目包括widget配置类和clockwidget类,widgetconfig.xml,clockwidget.xml和widget_info.xml(用于appwidgetprovider)。