2014-09-01 3 views
1

Я новичок в разработке Android. У меня проблема с масштабированием изображения в моем приложении. Когда я набор изображений с помощью setImageDrawable() изображения выглядят собственно, как на скриншоте:Изображения масштабируются в setImageDrawable() и setImageBitmap()?

enter image description here

Но если я установить изображение, используя метод setImageBitmap() это не выглядит правильным. Некоторые черный цвет происходит вокруг него, как на скриншоте ниже:

enter image description here

Я пробовал в нескольких приложениях, и я заметил, что в некоторых приложениях размер изображения становится меньше, чем размер Ofter настройки изображения с помощью setImageDrawable() или setImageResource() , Причина установки изображений через setImageBitmap() заключается в том, что я хочу установить изображения в изображения, которые хранятся в папке с ресурсами, а не в drawable.

Ниже приводится код, который я использовал для создания растрового изображения и установить его в ImageView:

     BitmapFactory.Options opts = new Options(); 
         opts.inPurgeable = true; 

         try 
         { 
          Bitmap preview_bitmap = BitmapFactory.decodeStream(assetManager.open(drawableFolder+"/"+tmpArr[0]),null,opts); 
          view.setImageBitmap(preview_bitmap); 

         } 
         catch (Exception e) 
         { 
          LNLog.writeTOErrorToLog(e.getMessage()); 
         } 

Так, пожалуйста, может кто-нибудь сказать мне, где я буду неправильно или что-то отсутствует, чтобы установить. Я пытался установить параметры, но не работал. Я хочу установить изображения, как в первом скриншоте, как они выглядят, используя setImageDrawable(). Thanx заранее.

Примечание: на снимках экрана изображения референтны в тексте на нем only.IF я установил хинди изображения, то есть изображения, на которых текст находится на языке хинди, используя setImageDrawable(), тогда они выглядят правильно, как в виде снимка экрана. Так, нет проблем с файлами изображений.

+0

теперь видят источники ImageView.java и посмотреть в метод setImageBitmap https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/ImageView.java линии 436 – pskink

ответ

0

Это работает для меня:

try 
{ 
    view.setAdjustViewBounds(true); 
    int height = view.getDrawable().getIntrinsicHeight(); 
    int width = view.getDrawable().getIntrinsicWidth(); 
    BitmapFactory.Options opts = new BitmapFactory.Options(); 
    opts.inPurgeable = true; 
    opts.inScaled = true; 
    Bitmap preview_bitmap = BitmapFactory.decodeStream(assetManager.open("drawable-mdpi/FAQ_hi_in.png",null,opts); 
    Bitmap bmp = Bitmap.createScaledBitmap(preview_bitmap, width, height, true); 
    view.setImageBitmap(bmp); 
} 

В этом коде я взял height и width из фактического изображения, а затем масштабировать мое растровое изображение на эту высоту и ширину. Затем я преобразовал это scaled bitmap в drawable и установил его в мой ImageView, вот он. Он разрешил мою проблему черной границы вокруг изображения.

1

Вы можете избавиться от черных границ с помощью

android:adjustViewBounds="true" in xml 

или

imageView.setAdjustViewBounds(true) in Java. 

EDIT: Тогда попробуйте использовать рисуем только

Drawable d = Drawable.createFromStream(assetManager.open(filePath), null); 
view.setImageDrawable(d) 
+0

я попытался setAdjustViewBounds (правда), но не сработало. –

+0

@Mazz Thanx для вашей помощи .. Я применил изображениеView.setAdjustViewBounds (true), но он, похоже, не работает. Но предложение, которое вы редактировали, работало. –

Смежные вопросы