2014-09-16 10 views
9

Ich versuche, einen allgemeinen Ladekreis als Platzhalter einzufügen, während ein Bild mit einer Bildladebibliothek wie Glide oder Picasso geladen wird.Wie können Sie einen Ladeplatzhalter verwenden, der ein animierter Spinner mit Bildladeprogrammen wie Glide, Picasso usw. ist?

Ich kann nicht für das Leben von mir herausfinden, wie Sie eine rotierende Zeichnungsdatei von XML erstellen sollen.

Ich habe versucht, eine AnimationDrawable in XML durch Erstellen einer Animationsliste, aber es erscheint nicht einmal (nicht einmal statisch).

Ich möchte nur einen einfachen Kreis, der sich selbst dreht, alles in einem XML-Zeichen, so dass ich die ID als Platzhalter an meinen Bildlader übergeben kann. Wenn das nicht möglich ist mir bitte jetzt sagen, so kann ich eine Menge Forschung sparen :)

EDIT: Einige Code, um es klar, ich brauche eine Spinn ziehbar für diesen Glide Befehl:

Glide.with(context) 
.load(imageUrl) 
.into(imageView) 
.placeHolder(R.drawable.spinning_loading_placeholder); 

Während das Bild geladen wird, wird ein Platzhalter, der gezeichnet werden kann, angezeigt, wo das Bild später sein wird. Ich brauche einen Drawable, der sich selbst dreht.

+2

Mai https://github.com/bumptech/glide/issues/505 ein Thema helfen? – CoolMind

+1

Hey CoolMind, danke für die Antwort! Ich bin nicht sicher, da diese Frage Jahre alt ist, aber danke, dass sie mich in die richtige Richtung weisen, es sieht nützlich aus, vielleicht werde ich eines Tages zu deiner Antwort zurückkommen und es hilft sicherlich anderen –

+0

A. Steenbergen, danke! Ich verstehe, dass zu viel Zeit vergangen ist, sorry. Ich habe dieses Problem nicht, aber vor kurzem hatte ein Problem mit ProgressBar Sichtbarkeit (gelöst mit http://StackOverflow.com/a/38849129/2914140). Auch möchten diese Links anhängen: http://stackoverflow.com/questions/35305875/progress-bar-while-loading-image-using-glide und https://github.com/bumptech/glide/issues/232. – CoolMind

Antwort

0

Sie können Ihrem Layout-XML ein ProgressBar-Element hinzufügen und dieses Element dann nach Bedarf ein-/ausblenden. Die ProgressBar-Ansicht ist integriert und bereits animiert, es ist keine benutzerdefinierte AnimationDrawable erforderlich.

+2

Danke, aber das ist nicht was ich brauche. Ich benutze bumbtechs glide image loading library, um eine Liste von Bildern von einem Server zu laden, während die Bilder geladen werden, wird für jedes Bild, auf dem sich das reale Bild später befindet, ein ziehbarer Platzhalter angezeigt. Ich möchte, dass dieser Platzhalter ein animierter kreisförmiger Kreis ist, um anzuzeigen, dass das Bild geladen wird, und dafür brauche ich diesen Kreis, um ein einzelnes Zeichen zu zeichnen, keinen zusätzlichen Code wie Objektanimatoren oder Animationen im Code. Ich habe etwas Code hinzugefügt, um es klarer zu machen. –

+2

Haben Sie jemals eine Lösung für dieses Problem Doge bekommen? Auch in einer Bindung auf der Suche nach diesem ... –

0

Sie können so etwas wie folgt verwenden:

Glide.with(mContext).load(imageUrl).asBitmap().centerCrop().into(new BitmapImageViewTarget(vh.avatarImageView) { 

     @Override 
     public void onLoadStarted(Drawable placeholder) { 
       vh.avatarImageView.setImageDrawable(mContext.getResources().getDrawable(R.drawable.ic_placeholder)); 
     } 

     @Override 
     public void onLoadFailed(Exception e, Drawable errorDrawable) { 
      vh.avatarImageView.setImageDrawable(mContext.getResources().getDrawable(R.drawable.ic_failed_download)); 
     } 

     @Override 
     protected void setResource(Bitmap resource) { 
      RoundedBitmapDrawable circularBitmapDrawable = 
        RoundedBitmapDrawableFactory.create(mContext.getResources(), resource); 
      circularBitmapDrawable.setCircular(true); 
      vh.avatarImageView.setImageDrawable(circularBitmapDrawable); 
     } 
    });