我在一个活动中完成了这项工作并且完美无缺。
ImageView myImage = (ImageView) findViewById(R.id.myImageView);
ShapeDrawable mDrawable;
mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setBounds(x, y, x + width, y + height);
mDrawable.setIntrinsicWidth(width);
mDrawable.setIntrinsicHeight(height);
myImage.setImageDrawable(mDrawable);
现在我想在一个小部件中做同样的事情(在onUpdate
内),我必须使用RemoteViews
来访问图像。
如何从setImageDrawable
拨打ImageView
的{{1}}?所有远程视图方法似乎都采用RemoteViews
。
答案 0 :(得分:11)
您可以通过执行以下操作更改“RemoteViews”中ImageView图像的颜色:
remoteviews.setInt(viewid, "setColorFilter", color);
答案 1 :(得分:3)
after modify drawable :
Bitmap bitmap = ((BitmapDrawable)d).getBitmap();
remoteViews.setImageViewBitmap(viewId, bitmap) .
答案 2 :(得分:1)
RemoteViews
是从XML资源描述符构建的。您无法使用代码来构建它们。
你需要做这样的事情:
创建布局:
<ImageView android:src="@drawable/myshapedrawable">
</ImageView>
然后定义一个名为myshapedrawable.xml
的新shape drawable(在res / drawables文件夹中):
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<size android:width="200" android:height="100"/>
<solid android:color="0xff74AC23"/>
</shape>