2016-01-11 4 views
6

Ich verwende Glide, um Bild herunterzuladen und anzuzeigen, aber wenn ich versuchte, die Größe des Bildes zu ändern, tut es dies nicht. Ich bekomme zufällige Größe (oder vielleicht ist es die tatsächliche Größe des Bildes).Glide Größe Bild über Override ändert nicht die Größe des Bildes

Hier ist der Code, den ich für das Laden über Glide verwendet

Glide.with(context) 
    .load(file.getUrl()) 
    .asBitmap() 
    .diskCacheStrategy(DiskCacheStrategy.ALL) 
    .centerCrop() 
    .transform(new CropCircleTransform(context)) 
    .override(dimen, dimen) 
    .into(new SimpleTarget<Bitmap>() { 
     @Override 
     public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { 
      bitmap = resource; 

      Log.info(resource.getWidth() + "x" + resource.getHeight()); 
     } 
     }); 

die CropCircleTransform nur die Ernte Bitmap kreisförmig und in der Mitte machen. Ich habe versucht, es zu entfernen, nur um zu testen, ob diese Methode das Problem verursacht, aber das Bild wird nicht auf die von mir angegebene Dimension geändert.

Alles falsch mit meinem Code? oder missverstehe ich hier die Override-Methode?

EDIT:
Versuchte die Überschreibung zu entfernen, und es scheint im Großformat das Bild geladen zu haben, so dass es bedeutet, dass es tatsächlich eine Redimensionierung, was geschieht, wenn die Überschreibung verwenden.

Wie kommt es, dass es nicht auf den tatsächlichen Wert, den ich angegeben habe, skaliert wird?

EDIT:
Als Beispiel ist der Wert für dimen 96, aber die Dimension im Protokoll für die Bilder angezeigt werden, wie 97x97, 117x117, 154x154 usw.

Heisst das, die Der Wert für die Überschreibungsmethode ist die Basis für die Größenänderung und nicht die tatsächliche zu verwendende Dimension.

Antwort

1

Ich treffe diesen Fehler gerade jetzt. Meine Lösung ist die Bildansicht wie folgt eingestellt:

  1. Legen Sie Ihre Bildgröße in Xml-Datei.
  2. Glide.with(context).load(path).centerCrop().crossFade().into(imageview);

es funktioniert.

+0

benötigen Sie den Imageview wie dies die Größe, auch. – Leito

+0

danke es hat funktioniert! – Woppi

0

Ich habe gerade die gleiche Situation getroffen. Und ich denke, das ist ein Fehler von Glide. Daher müssen Sie selbst, wie dies die Bitmap-Größe ändern:

Glide.with(context).load(url).asBitmap().into(new SimpleTarget<Bitmap>{ 

    @Override 
    public void onResourceReady(Bitmap resource,GlideAnimation<? extends Bitmap>(){ 
      // resize the bitmap 
      bitmap = resize(width,height); 
      imageView.setImageBitmap(bitmap); 
    } 

}) 

By the way, die Scaletype des Image wie 'fitXY', 'centerCrop', 'Fitcenter' und so weiter, macht auch ein Unterschied zu der Art, wie Glide das Bild skaliert.

+0

Woher kommt "resize()"? –

+1

Es ist eine private Methode, aber nicht der Punkt. –

+0

danke @Qian Sijianhao –

0

`ImageView iv = (Bildansicht) findViewById (R.id.left);

Int Breite = 60; int Höhe = 60;

LinearLayout.LayoutParams parms = neue LinearLayout.LayoutParams (Breite, Höhe); iv.setLayoutParams (parms);

Glide.with (Kontext) .load (Pfad) .centerCrop() Überblendung() in (iv).. `