2017-01-31 5 views
1

J'essaie d'utiliser Universal Image Loader (UIL) dans mon projet de test, et je pense avoir des problèmes pour charger les images lorsque leur hauteur est plus grand que leur largeur. Les images chargées par UIL sur ma vue d'image sont trop petites, même si les images sont réellement de grande taille. Ainsi, lorsque j'étire mes images pour qu'elles correspondent à leurs parents, les images semblent être très floues et de mauvaise qualité.Universal Image Loader (UIL) rend les images trop petites lorsqu'elles sont chargées dans les vues

Mais UIL charge correctement mes images lorsque leur hauteur est inférieure ou égale à leur largeur.

Voici mon code java:

DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder() 
      .cacheOnDisk(true) 
      .imageScaleType(ImageScaleType.NONE) 
      .bitmapConfig(Bitmap.Config.ARGB_8888) 
      .build(); 
File cacheDir = StorageUtils.getCacheDirectory(getApplicationContext()); 
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) 
      .defaultDisplayImageOptions(defaultOptions) 
      .threadPoolSize(1) 
      .diskCache(new UnlimitedDiskCache(cacheDir)) 
      .diskCacheExtraOptions(480, 320, null) 
      .build(); 
ImageLoader imageLoader = ImageLoader.getInstance(); 
imageLoader.init(config); 

String imageURL; 

ImageView imageView1 = (ImageView)findViewById(R.id.imageview1); 
imageURL = "http://www.up.edu.ph/wp-content/uploads/2017/01/twsc-40th-posters-WEB-01.png"; 
imageLoader.displayImage(imageURL, imageView1); 

ImageView imageView2 = (ImageView)findViewById(R.id.imageview2); 
imageURL = "http://www.up.edu.ph/wp-content/uploads/2017/01/UPD-Chancy-Selection1.png"; 
imageLoader.displayImage(imageURL, imageView2); 

Et voici mon code xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="ph.edu.up.e.universalimageloadersample.MainActivity" 
    android:orientation="vertical"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 

      <ImageView 
       android:id="@+id/imageview1" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:adjustViewBounds="true" 
       android:scaleType="centerCrop" /> 

      <ImageView 
       android:id="@+id/imageview2" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:adjustViewBounds="true" 
       android:scaleType="centerCrop" /> 

     </LinearLayout> 

    </ScrollView> 

</LinearLayout> 

Voici comment les images ressemblent quand il est chargé par l'UIL:

imageView1

imageView2

Veuillez ne pas suggérer d'autres chargeurs d'images. En plus de cela, toute aide serait appréciée. Merci!

+0

Voici les liens vers les images originales: http://www.up.edu.ph/wp-content/uploads/2017/01/twsc-40th-posters- WEB-01.png http://www.up.edu.ph/wp-content/uploads/2017/01/UPD-Chancy-Selection1.png – fcang1

+0

Utilisez [Glide] (https://github.com/ bumptech/glide) –

+0

merci pour la suggestion – fcang1

Répondre

1

J'ai fait une erreur stupide, mais j'ai finalement trouvé une solution. Soyez prudent lors de l'utilisation:

.diskCacheExtraOptions(480, 320, null) 

peut réduire la qualité de votre image, quel que soit le type d'échelle de votre image.

IMPORTANT: Lorsque vous utilisez

.cacheOnDisk(true) 

supprimer le cache/données sur votre émulateur/téléphone avant de lancer votre programme à nouveau (juste pour être sûr, je supprime généralement l'application entière et réinstalle sur mon prochain run). Il semble que UIL ne téléchargera pas les versions de meilleure qualité des images plus tard lorsqu'elles ont déjà été mises en cache, quelle que soit leur qualité.

Hope this helps quelqu'un