2016-09-05 11 views
-3

Ist ein Quiz-Spiel und die Antwort kann Text oder Bild sein, ich benutze Gilde Bild, um es zu laden, aber für einige Benutzer können die Bilder nicht laden, auch wenn das Internet ist gut und die Bilder sind von geringer Qualität.Glide Bilder werden manchmal nicht geladen

Ich werde den ganzen Code kopieren, weil ich keine Ahnung habe, ob Gilde Problem ist oder nicht.

if (AppConstant.arQuestionList.get(questionid).getArAnswer().get(i).getAtype() 
        .equalsIgnoreCase("image")) { 
       txtOption = new ImageView(this); 

       try { 
        Glide.with(QuestionActivity.this).load(AppConstant.arQuestionList.get(questionid) 
          .getArAnswer().get(i).getAnswer()).override(60, 60).into((ImageView) 
          txtOption); 
       }catch (OutOfMemoryError e){ 
        e.printStackTrace(); 
       } 
       txtOption.setPadding(5, 5, 5, 5); 

      } else { 
       txtOption = new TextView(this); 

       ((TextView) txtOption).setText(AppConstant.arQuestionList.get(questionid) 
         .getArAnswer().get 
           (i).getAnswer()); 
       ((TextView) txtOption).setTextColor(getResources().getColor(R.color.answer_color)); 
       ((TextView) txtOption).setTypeface(tf, Typeface.BOLD); 
       ((TextView) txtOption).setGravity(Gravity.CENTER); 
       txtOption.setPadding(10, 20, 10, 20); 
      } 

Layout-

<LinearLayout 
     android:id="@+id/answerwrap" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="@dimen/dp_30" 
     android:layout_marginRight="@dimen/dp_30" 
     android:layout_marginTop="@dimen/dp_30" 
     android:orientation="vertical"> 

    </LinearLayout> 

Antwort

2

der beste Weg gleiten verwenden ich hier zu erklären.

//crete this method into your Utils class and call this method wherever you want to use. 
//you can set these placeHolder() and error() image static as well. I made it as comment inside this method, then no need to use [placeHolderUrl and errorImageUrl] parameters. remove it from this method. 
public static void loadImage(final Activity context, ImageView imageView, String url, int placeHolderUrl, int errorImageUrl) { 
    if (context == null || context.isDestroyed()) return; 

    //placeHolderUrl=R.drawable.ic_user; 
    //errorImageUrl=R.drawable.ic_error; 
     Glide.with(context) //passing context 
       .load(getFullUrl(url)) //passing your url to load image. 
       .placeholder(placeHolderUrl) //this would be your default image (like default profile or logo etc). it would be loaded at initial time and it will replace with your loaded image once glide successfully load image using url. 
       .error(errorImageUrl)//in case of any glide exception or not able to download then this image will be appear . if you won't mention this error() then nothing to worry placeHolder image would be remain as it is. 
       .diskCacheStrategy(DiskCacheStrategy.ALL) //using to load into cache then second time it will load fast. 
       .animate(R.anim.fade_in) // when image (url) will be loaded by glide then this face in animation help to replace url image in the place of placeHolder (default) image. 
       .fitCenter()//this method help to fit image into center of your ImageView 
       .into(imageView); //pass imageView reference to appear the image. 
} 

fade_in.xml (steckte es in res-> anim)

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<!--THIS ANIMATION IS USING FOR FADE IN --> 

<alpha 
    android:duration="800" 
    android:fromAlpha="0.0" 
    android:interpolator="@android:anim/decelerate_interpolator" 
    android:toAlpha="1.0" /> 

und rufen schließlich diese Methode

von Ihrer Aktivität.

Utils.loadImage(YourClassName.this,mImageView,url,R.drawable.ic_user,R.drawable.ic_error); 

ODER

von Ihrem Fragment

Utils.loadImage(getActivity,mImageView,url,R.drawable.ic_user,R.drawable.ic_error); 
+0

Ich habe versucht, aber immer noch nicht funktioniert. –

1

Ich habe alles gefolgt.

Added .dontAnimate hinzugefügt alle notwendigen Berechtigungen, Internet, ACCESS_NETWORK_STATE

Aber nichts funktioniert.

Schließlich fand ich den Grund für das Bild nicht laden, hat meine Image-URL http oder https nicht. Ich habe http:// vor meiner Bild-URL hinzugefügt und es lädt perfekt.