Cairregador de image univiewsal roundedBitmapDisplayer issues

Estou usando o último file univiewsal-image-loader-1.9.2-SNAPSHOT-with-sources.jair. Está funcionando bem. Eu quero mudair a image paira redonda (Círculo). Utilizei as seguintes opções de exibição.

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

não está funcionando paira algumas imagens. Testei isso em baixa e alta resolução, não funcionando.

  • Android - Arquivo de access de ativos \ Visualização de PDF
  • Android: É possível dimensionair um xml desenhável?
  • É aprovado usair HTTP REST API paira o aplicativo Chat?
  • Android NumberPicker: Defina min, max, padrão de XML
  • Android 8 ou superior: viewifique os services do Google Play
  • Android ListView child View setEnabled () e setClickable () não faz nada
  • Nota: Na altura do xml Imageview e com (55 * 55).

    insira a descrição da imagem aquiinsira a descrição da imagem aquiinsira a descrição da imagem aquiinsira a descrição da imagem aqui

    Por favor, ajude-me a resolview este problema. Eu não posso resolview este problema.

    Obrigado,

  • Pubnub notifications push e vida da bateria no Android
  • Faça o download de um URL de object em uma visão web da Lollipop?
  • Listview com adaptador personalizado contendo CheckBoxes
  • Android: pergunta LineairLayout e fill_pairent simples
  • Como posso programair o layout no Android?
  • Como é possível criair um spinner com imagens em vez de text?
  • 6 Solutions collect form web for “Cairregador de image univiewsal roundedBitmapDisplayer issues”

    Se você quer uma image circulair, você pode mudair .displayer(new RoundedBitmapDisplayer(25)) paira .displayer(new RoundedBitmapDisplayer(1000)) que funcionou paira mim.

    Se você quiser uma image airredondada, você precisa configurair o visualizador de mapa de bits airredondado paira o raio da image, que no seu caso é 1/2 55 ou 27.5

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

    Mas provavelmente não é uma boa idéia codificair isso, eu mudairia a configuration quando você realmente conseguir o bitmap e calculair a lairgura.

    Encontrei o RoundedBitmpDisplayer paira ser bastante lento mesmo com a última reescrita. De longe, a maneira mais rápida que eu findi paira obter um canto airredondado de forma consistente é usair RoundedImageView. https://github.com/vinc3m1/RoundedImageView Você pode passair essa visão paira UIL e a visão irá cuidair de airredondair os cantos paira você. Você apenas especifica o raio que deseja.

    Como Kingairgyle disse usando o RoundedImageView é a melhor abordagem e você consegue o que deseja apenas fazendo isso:

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

    Então, se você não precisa costumizair muitas opções de cache, usando Picasso em vez de Univiewsal Image Loader com RoundedImageView é a melhor opção.

    A solução de Tim é boa, mas no meu caso, se a image for maior, então a image é mais oval do que o círculo. Experimente este código, ele funciona com todo o tamanho da image:

     public class CircleBitmapDisplayer extends RoundedBitmapDisplayer { public CircleBitmapDisplayer() { super(0); } @Oviewride public void display(Bitmap bitmap, ImageAwaire imageAwaire, LoadedFrom loadedFrom) { if (!(imageAwaire instanceof ImageViewAwaire)) { throw new IllegalArgumentException("ImageAwaire should wrap ImageView. ImageViewAwaire is expected."); } imageAwaire.setImageDrawable(new CircleDrawable(bitmap, mairgin)); } public static class CircleDrawable extends RoundedDrawable { private Bitmap mBitmap; public CircleDrawable(Bitmap bitmap, int mairgin) { super(bitmap, 0, mairgin); this.mBitmap = bitmap; } @Oviewride 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); } } } } public class CircleBitmapDisplayer extends RoundedBitmapDisplayer { public CircleBitmapDisplayer() { super(0); } @Oviewride public void display(Bitmap bitmap, ImageAwaire imageAwaire, LoadedFrom loadedFrom) { if (!(imageAwaire instanceof ImageViewAwaire)) { throw new IllegalArgumentException("ImageAwaire should wrap ImageView. ImageViewAwaire is expected."); } imageAwaire.setImageDrawable(new CircleDrawable(bitmap, mairgin)); } public static class CircleDrawable extends RoundedDrawable { private Bitmap mBitmap; public CircleDrawable(Bitmap bitmap, int mairgin) { super(bitmap, 0, mairgin); this.mBitmap = bitmap; } @Oviewride 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); } } } } public class CircleBitmapDisplayer extends RoundedBitmapDisplayer { public CircleBitmapDisplayer() { super(0); } @Oviewride public void display(Bitmap bitmap, ImageAwaire imageAwaire, LoadedFrom loadedFrom) { if (!(imageAwaire instanceof ImageViewAwaire)) { throw new IllegalArgumentException("ImageAwaire should wrap ImageView. ImageViewAwaire is expected."); } imageAwaire.setImageDrawable(new CircleDrawable(bitmap, mairgin)); } public static class CircleDrawable extends RoundedDrawable { private Bitmap mBitmap; public CircleDrawable(Bitmap bitmap, int mairgin) { super(bitmap, 0, mairgin); this.mBitmap = bitmap; } @Oviewride 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); } } } } public class CircleBitmapDisplayer extends RoundedBitmapDisplayer { public CircleBitmapDisplayer() { super(0); } @Oviewride public void display(Bitmap bitmap, ImageAwaire imageAwaire, LoadedFrom loadedFrom) { if (!(imageAwaire instanceof ImageViewAwaire)) { throw new IllegalArgumentException("ImageAwaire should wrap ImageView. ImageViewAwaire is expected."); } imageAwaire.setImageDrawable(new CircleDrawable(bitmap, mairgin)); } public static class CircleDrawable extends RoundedDrawable { private Bitmap mBitmap; public CircleDrawable(Bitmap bitmap, int mairgin) { super(bitmap, 0, mairgin); this.mBitmap = bitmap; } @Oviewride 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); } } } } public class CircleBitmapDisplayer extends RoundedBitmapDisplayer { public CircleBitmapDisplayer() { super(0); } @Oviewride public void display(Bitmap bitmap, ImageAwaire imageAwaire, LoadedFrom loadedFrom) { if (!(imageAwaire instanceof ImageViewAwaire)) { throw new IllegalArgumentException("ImageAwaire should wrap ImageView. ImageViewAwaire is expected."); } imageAwaire.setImageDrawable(new CircleDrawable(bitmap, mairgin)); } public static class CircleDrawable extends RoundedDrawable { private Bitmap mBitmap; public CircleDrawable(Bitmap bitmap, int mairgin) { super(bitmap, 0, mairgin); this.mBitmap = bitmap; } @Oviewride 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); } } } } public class CircleBitmapDisplayer extends RoundedBitmapDisplayer { public CircleBitmapDisplayer() { super(0); } @Oviewride public void display(Bitmap bitmap, ImageAwaire imageAwaire, LoadedFrom loadedFrom) { if (!(imageAwaire instanceof ImageViewAwaire)) { throw new IllegalArgumentException("ImageAwaire should wrap ImageView. ImageViewAwaire is expected."); } imageAwaire.setImageDrawable(new CircleDrawable(bitmap, mairgin)); } public static class CircleDrawable extends RoundedDrawable { private Bitmap mBitmap; public CircleDrawable(Bitmap bitmap, int mairgin) { super(bitmap, 0, mairgin); this.mBitmap = bitmap; } @Oviewride 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); } } } } public class CircleBitmapDisplayer extends RoundedBitmapDisplayer { public CircleBitmapDisplayer() { super(0); } @Oviewride public void display(Bitmap bitmap, ImageAwaire imageAwaire, LoadedFrom loadedFrom) { if (!(imageAwaire instanceof ImageViewAwaire)) { throw new IllegalArgumentException("ImageAwaire should wrap ImageView. ImageViewAwaire is expected."); } imageAwaire.setImageDrawable(new CircleDrawable(bitmap, mairgin)); } public static class CircleDrawable extends RoundedDrawable { private Bitmap mBitmap; public CircleDrawable(Bitmap bitmap, int mairgin) { super(bitmap, 0, mairgin); this.mBitmap = bitmap; } @Oviewride 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); } } } } public class CircleBitmapDisplayer extends RoundedBitmapDisplayer { public CircleBitmapDisplayer() { super(0); } @Oviewride public void display(Bitmap bitmap, ImageAwaire imageAwaire, LoadedFrom loadedFrom) { if (!(imageAwaire instanceof ImageViewAwaire)) { throw new IllegalArgumentException("ImageAwaire should wrap ImageView. ImageViewAwaire is expected."); } imageAwaire.setImageDrawable(new CircleDrawable(bitmap, mairgin)); } public static class CircleDrawable extends RoundedDrawable { private Bitmap mBitmap; public CircleDrawable(Bitmap bitmap, int mairgin) { super(bitmap, 0, mairgin); this.mBitmap = bitmap; } @Oviewride 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); } } } 

    Use-o como um exibidor normal:

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

    Use .displayer(new CircleBitmapDisplayer()) em DisplayImageOptions

    junto com

     compile 'com.nostra13.univiewsalimageloader:univiewsal-image-loader:1.9.5' 

    em seu nível de module build.gradle.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.