Cargador de imágenes universal roundedBitmapDisplayer issues

Estoy utilizando el último archivo universal-image-loader-1.9.2-SNAPSHOT-with-sources.jar. Su funcionamiento muy bien. Quiero cambiar la imagen a circular (Círculo). He utilizado las siguientes opciones de visualización.

DisplayImageOptions userimgoptions = new DisplayImageOptions.Builder() .displayer(new RoundedBitmapDisplayer(35)) .showImageOnLoading(android.R.color.transparent) .showImageForEmptyUri(R.drawable.picture_info_profile_img) .showImageOnFail(R.drawable.picture_info_profile_img) .cacheInMemory(true).cacheOnDisc(true) .bitmapConfig(Bitmap.Config.RGB_565).build(); 

No funciona para algunas imágenes. He probado esto en baja y alta resolución no funciona.

Nota: En mi xml Imageview altura y con (55 * 55).

Introduzca aquí la descripción de la imagenIntroduzca aquí la descripción de la imagenIntroduzca aquí la descripción de la imagenIntroduzca aquí la descripción de la imagen

Por favor ayúdenme cómo resolver este problema. No puedo resolver este problema.

Gracias,

Si quieres una imagen circular, puedes cambiar .displayer(new RoundedBitmapDisplayer(25)) a .displayer(new RoundedBitmapDisplayer(1000)) que funcionó para mí.

Si desea una imagen redondeada debe configurar el visualizador de mapa de bits redondeado al radio de la imagen que en su caso es 1/2 55 o 27.5

 DisplayImageOptions userimgoptions = new DisplayImageOptions.Builder() .displayer(new RoundedBitmapDisplayer((int) 27.5f)) .showImageOnLoading(android.R.color.transparent) .showImageForEmptyUri(R.drawable.picture_info_profile_img) .showImageOnFail(R.drawable.picture_info_profile_img) .cacheInMemory(true).cacheOnDisc(true) .bitmapConfig(Bitmap.Config.RGB_565).build(); 

Pero probablemente no es una buena idea para código duro que, yo cambiaría la configuración cuando realmente obtener el mapa de bits y calcular el ancho.

He encontrado el RoundedBitmpDisplayer a ser bastante lento, incluso con la última reescritura. De lejos, la forma más rápida que he encontrado para obtener un Rounded esquinas consistentemente es utilizar RoundedImageView. https://github.com/vinc3m1/RoundedImageView Puede pasar esa vista en UIL y la vista se encargará de redondear las esquinas para usted. Sólo tiene que especificar el radio que desea.

Como kingargyle dijo que usando RoundedImageView es el mejor enfoque y se puede lograr lo que quieres simplemente haciendo esto:

 Transformation transformation = new RoundedTransformationBuilder() .borderColor(Color.BLACK) .borderWidthDp(3) .cornerRadiusDp(30) .oval(false) .build(); Picasso.with(context) .load(url) .fit() .transform(transformation) .into(imageView); 

Por lo tanto, si no necesita personalizar muchas opciones de caché, usar Picasso en lugar de Universal Image Loader con RoundedImageView es la mejor opción.

La solución de Tim es buena pero en mi caso si la imagen es más grande entonces más alta la imagen es más oval que el círculo. Pruebe este código, funciona con cada tamaño de imagen:

 public class CircleBitmapDisplayer extends RoundedBitmapDisplayer { public CircleBitmapDisplayer() { super(0); } @Override public void display(Bitmap bitmap, ImageAware imageAware, LoadedFrom loadedFrom) { if (!(imageAware instanceof ImageViewAware)) { throw new IllegalArgumentException("ImageAware should wrap ImageView. ImageViewAware is expected."); } imageAware.setImageDrawable(new CircleDrawable(bitmap, margin)); } public static class CircleDrawable extends RoundedDrawable { private Bitmap mBitmap; public CircleDrawable(Bitmap bitmap, int margin) { super(bitmap, 0, margin); this.mBitmap = bitmap; } @Override public void draw(Canvas canvas) { int radius = 0; if(mBitmap.getWidth() > mBitmap.getHeight()) { radius = mBitmap.getHeight() / 2; }else { radius = mBitmap.getWidth() / 2; } canvas.drawRoundRect(mRect, radius, radius, paint); } } } 

Utilícelo como visualizador normal:

 DisplayImageOptions options = new DisplayImageOptions.Builder() .displayer(new CircleBitmapDisplayer()) .cacheInMemory(true) .cacheOnDisk(true) .build(); ImageLoader.getInstance().displayImage(url, imageView,options); 

Utilice .displayer(new CircleBitmapDisplayer()) en DisplayImageOptions

junto con

 compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' 

En tu nivel de módulo build.gradle.

  • Establecer fondo de RelativeLayout con la imagen descargada con Universal Image Loader
  • ¿Cómo cargar la miniatura con Universal Image Loader para Android?
  • Universal Image Loader gridview parpadea después de la llamada notifyDataSetChanged
  • Señal fatal 11 (SIGSEGV) en 0x00000000 (código = 1), hilo 27830 (ple.myfragexample) - sólo en Android 4.1.2
  • Fondo negro en la imagen cargada con univerisal cargador de imágenes
  • Android: cargador de imágenes universal cargar imagen grande
  • Android: Universal Image Loader y ProgressBar en ViewPager no funcionan
  • Universal Image Loader para archivos de almacenamiento externo
  • Se cancelan las solicitudes de Universal Image Loader de Android con la misma URL
  • Relación de mantenimiento del cargador de imágenes universal
  • Universal Image Loader: ¿Puedo usar cache pero también actualizarlo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.