Избегайте масштабирования изображения в ImageView - PullRequest
1 голос
/ 02 марта 2012

Я использую представление изображений с этими атрибутами XML

<ImageView
    android:id="@+id/widget_list_bitmap"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#00000000"
    android:scaleType="center"
    android:src="@drawable/place_holder" >
</ImageView>

, и во время выполнения я создаю, скажем, растровое изображение, скажем, 400x400, сохраняю его в файл и устанавливаю src ImageView, используя URI файла

remoteViews.setUri (R.id.widget_list_bitmap, "setImageURI", myFileUri);

(это позволяет избежать проблем RemoteViews с большими растровыми изображениями).

Все работает отлично, за исключением того, что отображаемое изображение уменьшено и меньше, чем 400x400, больше похоже на 250 x 250 (возможно, 400 / плотность, плотность = 1,5).

Есть ли способ заставить ImageView действительно не масштабировать изображения, которые он выбирает из URI?

1 Ответ

0 голосов
/ 02 марта 2012

Вы можете загрузить его вручную, а при загрузке с помощью BitmapFactory установить inScaled в значение false. Тогда вы бы использовали setImageViewBitmap вместо setUri или setImageViewUri.

Обновление:

К сожалению, я не вижу возможности обойти это, используя setUri. Альтернативой использованию setUri для преодоления ограничения в 1 МБ является использование setImageViewBitmap, но разделите растровое изображение на части и отобразите его на нескольких видах, например, сетку ImageViews 2x2 или 3x3 или что-то подобное. Вам придется разделить его на несколько обновлений, используя partiallyUpdateAppWidget, но я думаю, что это должно работать. Дело в том, что для этого требуется API 11.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...