Universal Image Loader gerundetBitmapDisplayer Fragen

Ich benutze die neueste universal-image-loader-1.9.2-SNAPSHOT-with-sources.jar-Datei. Es funktioniert gut Ich möchte das Bild umdrehen (Kreis). Ich habe folgende Anzeigeoptionen benutzt.

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(); 

Es funktioniert nicht für einige Bilder. Ich habe das in eine niedrige und hohe Auflösung getestet.

  • Android Espresso, Wake up Gerät vor Test. Wie benutzt man ein benutzerdefiniertes Manifest für Test?
  • Crashlytics Entwickler-Tools Fehler beim Aufbau von Android-Setup-Projekt
  • Wie wählt man aus Ressourcen zufällig (R.drawable.xxxx)
  • Zähler zurücksetzen nach Schaltfläche klicken
  • Gradle Android Projekt mit Java 8 Modul
  • Fügen Sie dem Progress Dialog eine Verzögerung hinzu
  • Hinweis: In meiner xml Imageview Höhe und mit (55 * 55).

    Bildbeschreibung hier eingebenBildbeschreibung hier eingebenBildbeschreibung hier eingebenBildbeschreibung hier eingeben

    Bitte helfen Sie mir bitte, wie Sie dieses Problem lösen können. Ich kann dieses Problem nicht lösen.

    Vielen Dank,

  • So öffnen Sie LogCat in Eclipse (für Android Debug)
  • Android2.x: MediaPlayer Fehlercode (1, -19)
  • Berechnen Sie Abstand zwischen Bluetooth-Gerät in Android
  • Android Spinner mit Unterstreichung appcompat
  • GetContext () existiert nicht
  • Android PhoneGap, um eine neue Aktivität zu öffnen
  • 6 Solutions collect form web for “Universal Image Loader gerundetBitmapDisplayer Fragen”

    Wenn du ein kreisförmiges Bild willst, kannst du .displayer(new RoundedBitmapDisplayer(25)) zu .displayer(new RoundedBitmapDisplayer(1000)) der für mich gearbeitet hat.

    Wenn du ein abgerundetes Bild willst, musst du den abgerundeten Bitmap-Display auf den Radius des Bildes setzen, das in deinem Fall 1/2 55 oder 27,5 ist

     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(); 

    Aber es ist wahrscheinlich nicht eine gute Idee zu harte Code, dass ich die config ändern würde, wenn du tatsächlich die Bitmap bekommst und die Breite berechst.

    Ich habe den RoundedBitmpDisplayer schon ziemlich langsam mit dem letzten Umschreiben gefunden. Bei weitem der schnellste Weg, den ich gefunden habe, um eine abgerundete Ecken zu erhalten, ist es konsequent, RoundedImageView zu verwenden. https://github.com/vinc3m1/RoundedImageView Sie können diese Ansicht in UIL übergeben und die Ansicht kümmert sich um die Rundung der Ecken für Sie. Sie geben einfach den gewünschten Radius an.

    Wie Kingargyle sagte mit RoundedImageView ist der beste Ansatz und Sie können erreichen, was Sie wollen, indem Sie nur dies tun:

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

    Also, wenn Sie nicht brauchen, um viel Cache-Optionen zu kalkulieren, mit Picasso anstelle von Universal Image Loader mit RoundedImageView ist es die beste Option.

    Die Lösung von Tim ist gut, aber in meinem Fall, wenn das Bild größer ist, dann größer ist das Bild ovaler als Kreis. Versuchen Sie diesen Code, es funktioniert mit jeder Bildgröße:

     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); } } } 

    Benutze es als normale Anzeige:

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

    Verwenden Sie .displayer(new CircleBitmapDisplayer()) in DisplayImageOptions

    zusammen mit

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

    In deinem Modul Level build.gradle.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.