2013-04-29 5 views
1

У меня есть изображение, которое я загружаю из Интернета в приложении для Android. Я не хочу, чтобы это изображение было изменено/масштабировано. В любом случае я могу остановить масштабирование изображения?Предотвращение масштабирования изображения в приложении для Android

Вот моя запись XML для ImageView:

<ImageView 
    android:id="@+id/conditionImage" 
    android:scaleType="center" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/textMain" 
    android:contentDescription="@string/noaaLogoDescription" /> 

Вот мой код для отображения его в окне просмотра изображения:

BitmapFactory.Options bmpOptions = new Options(); 
bmpOptions.inScaled = false; 
URL url = new URL("URLPATHTOIMAGE"); 
ImageView conditionImageView = (ImageView)findViewById(R.id.conditionImage); 
InputStream content = (InputStream)url.getContent(); 
conditionImage = BitmapFactory.decodeStream(content, null, bmpOptions); 

conditionImageView.setImageBitmap(conditionImage); 

Я попытался изменить scaleType в элементе ImageView XML использовать матрицу, центр и центр. Моя последняя попытка заключалась в использовании приведенного выше кода для установки inScale в false. У кого-нибудь есть другие идеи?

Нечетная часть этого не происходит в эмуляторе.

ответ

0

Adnan, используя ваш пример предоставления фиксированной ширины и высоты изображения, а также удаление scaleType = centerImage исправил проблему.

0

Попробуйте установить

android:layout_width="wrap_content" 
android:adjustViewBounds="true" 

EDIT:

Не знаю, почему, но изменение

conditionImageView.setBackgroundDrawable(getResources().getDrawable(R.id.conditionImage)); 

в

conditionImageView.setImageDrawable(getResources().getDrawable(R.id.conditionImage)); 

решает мою проблему.

+0

Изображение по-прежнему масштабируется. Другая раздражающая часть, она отлично работает в эмуляторе, но масштабируется на реальном устройстве 4.2 (Samsung Galaxy S4) –

+0

См. Новое редактирование. – Neoh

+0

Просто попробовал новое редактирование, все еще масштабируемое. –

0

Вы разместили все изображения в простой папке с возможностью «вытягивания». Я имею в виду без расширения hdpi, mdpi и т. Д.

+0

Загружаю изображения с веб-сайта перед их отображением. Поэтому у меня нет возможности разместить их в папке с возможностью переноса. –

+0

Затем дайте фиксировать высоту и ширину в изображении. Например. android: layout_width = "100dp" android: layout_height = "100dp" Вы также можете установить размер изображения в динамическом режиме, получив загруженный размер растрового изображения, если хотите. – Adnan

+0

Я просто пробовал ...:(Я добавил это, и она по-прежнему изменение размера изображения: \t \t \t conditionImageView.setImageBitmap (conditionImage); \t \t \t \t \t \t RelativeLayout.LayoutParams sizeParams = новые RelativeLayout.LayoutParams (conditionImage.getWidth(), conditionImage. GetHeight()); \t \t \t sizeParams.addRule (RelativeLayout.CENTER_HORIZONTAL); \t \t \t sizeParams.addRule (RelativeLayout.BELOW, textMain.getId()); \t \t \t \t \t \t состояниеImageView.setLayoutParams (размерParams); –

0

Это простая проблема. Масштабирование происходит, когда ImageView намного больше, чем само визуализированное изображение. Чтобы избежать этого уродливого pixelated scailing, просто «оберните контент» в изображение, и вы получите оригинальное качество изображения.

0

Я решил эту проблему путем жесткого кодирования height из ImageView (как я знаю, что это заранее), а затем установите scaleType в cropCenter

см ниже код для получения дополнительной clearity.

<ImageView 
      android:id="@+id/iv" 
      android:layout_width="match_parent" 
      android:layout_height="75dp" 
      android:scaleType="centerCrop" /> 
Смежные вопросы