Вызовите setImageDrawable из RemoteViews - PullRequest
1 голос
/ 13 ноября 2011

Я сделал это в Деятельности, и она отлично работает.

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 с RemoteViews? Кажется, что все методы удаленного просмотра занимают Bitmap.

Ответы [ 3 ]

11 голосов
/ 24 марта 2013

Вы можете изменить цвет изображения ImageView в «RemoteViews», выполнив следующее:

remoteviews.setInt(viewid, "setColorFilter", color);
3 голосов
/ 13 ноября 2011
after modify drawable :



 Bitmap bitmap = ((BitmapDrawable)d).getBitmap();
 remoteViews.setImageViewBitmap(viewId, bitmap) .
1 голос
/ 13 ноября 2011

RemoteViews созданы из дескрипторов ресурсов XML.Вы не можете использовать код для их построения.

Вам нужно сделать что-то вроде этого:

Создать макет:

<ImageView android:src="@drawable/myshapedrawable">
</ImageView>

Затем определите новую форму drawable с именем myshapedrawable.xml (в папке 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>
...