Отображение маленького png (рисуемого) в большем ImageView

Я показываю крошечный ресурс png в ImageView большего размера, чем исходное изображение. Это нормально и то, что я хочу, кстати:)

Когда отображается ImageView, изображение размыто, я полагаю, из-за используемого метода масштабирования.

Я хотел бы добиться эффекта, подобного: http://www.41post.com/4241/programming/android-disabling-anti-aliasing-for-pixel-art, где исходное изображение масштабируется без сглаживания.

Есть ли способ добиться этого непосредственно с помощью ImageView определенной ширины и высоты (в провалах) и с возможностью рисования без использования промежуточного растрового изображения?


person Bruno    schedule 27.08.2012    source источник


Ответы (2)


<?xml version="1.0" encoding="utf-8"?>
<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/image"
    android:antialias="false" />

Вам нужно создать рисуемый объект, скопировать приведенный выше код в xml в папку с возможностью рисования, а затем в макете вместо использования изображения в качестве источника используйте этот xml. Таким образом вы отключите сглаживание изображения.

Изменить: делать это в коде.

BitmapDrawable draw = new BitmapDrawable(R.drawable.image);
draw.setAntiAlias(false);
imageView.setImageDrawable(draw);
person Marcio Covre    schedule 27.08.2012
comment
Невозможно использовать атрибут the android:antialias="false" непосредственно в ImageView? - person Bruno; 27.08.2012
comment
Нет, этот атрибут взят из BitmapDrawable. Если вы устанавливаете изображение из кода, вы можете создать BitmapDrawable, установить псевдоним и установить его в ImageView. Но делать это нужно в любом случае, у ImageView этого нет. - person Marcio Covre; 27.08.2012
comment
Не могли бы вы показать, как это сделать программно, пожалуйста? (рисуемая часть растрового изображения xml) - person Bruno; 27.08.2012
comment
Кстати, мне также пришлось setDither(false) и setFilterBitmap(false) получить чистый результат, который я искал. - person Bruno; 28.08.2012
comment
похоже, что setFilterBitmap(false) (android:filter=false в xml) достаточно - person Ken; 09.02.2015

Вы пробовали отключить сглаживание в макете?

<ImageView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:antialias="false" />
person msEmmaMays    schedule 27.08.2012
comment
Боже мой... это, наверное, все, что нужно, лол. Попробую, когда вернусь домой сегодня вечером - person Bruno; 27.08.2012
comment
вы уверены насчет android:antialias? Его нет в документации. - person zapl; 27.08.2012
comment
Мне тоже было интересно... нашел это после некоторых исследований :) developer.android.com/reference/android/graphics/drawable/ - person Bruno; 27.08.2012