2016-07-09 3 views
0

Я использую эту библиотеку gif https://github.com/koral--/android-gif-drawable для отображения gif в xml и gifImageView в качестве представления, я использовал ImageRequest в volley для загрузки gif из url. но gif отображается как неподвижное изображение в приложении. не могу выяснить, что случилось? PLS помочь мне с моим кодом или PLS сказать мне, как скачать gif через залп.Как загружать и загружать .gif в андроид, используя залп?

переменные определены: -

SwipeDeck cardSwipe; 
String url = ""; 
ImageView iv; 
RequestQueue que; 
RequestQueue que2; 
SwipeCardAdapter adapter; 
ArrayList<Bitmap> urls = new ArrayList<>(); 

это stringRequest функциональный блок для извлечения JSon

public StringRequest strReq(){ 

    StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      try { 
       JSONObject jsonObject = new JSONObject(response); 
       JSONArray dataObject = jsonObject.getJSONArray("data"); 

       for(int i = 0 ; i < dataObject.length() ; i++){ 
        JSONObject thisObject = dataObject.getJSONObject(i); 
        JSONObject image = thisObject.getJSONObject("images"); 
        JSONObject imageType = image.getJSONObject("original"); 
        String imageUrl = imageType.getString("url"); 
        Log.d("TAG", imageUrl); 
        URL url = new URL(imageUrl); 
        que2.add(imageReq(imageUrl)); 

       } 

      } catch (JSONException e) { 
       e.printStackTrace(); 
       Log.d("TAG","error occured in try and catch"); 

      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

      if(error.getCause() != null){ 
       error.getCause().printStackTrace(); 
      } 
      if(error.networkResponse != null){ 
       Toast.makeText(MainActivity.this, "Network Response is " + error.networkResponse , Toast.LENGTH_SHORT).show(); 
      } 

     } 
    }); 


      return stringRequest; 
} 

и это функция imageRequest блок для загрузки GIF из URL: -

public ImageRequest imageReq(String url){ 

     ImageRequest imageRequest = new ImageRequest(url, new Response.Listener<Bitmap>() { 
      @Override 
      public void onResponse(Bitmap response) { 

       urls.add(response); 

       adapter.notifyDataSetChanged(); 



      } 
     }, 0, 0, null, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

       if(error.getCause() != null){ 
        error.getCause().printStackTrace(); 
       } 
       if(error.networkResponse != null){ 
        Toast.makeText(MainActivity.this, "Network Response is " + error.networkResponse , Toast.LENGTH_SHORT).show(); 
       } 

      } 
     }); 
     return imageRequest; 
    } 

и это внутри класса адаптера для установки gifImageView: -

GifImageView gifImageView = (GifImageView) convertView.findViewById(R.id.gifIV); 


      Bitmap thisGif = getItem(position); 

      gifImageView.setImageBitmap(thisGif); 

ответ

0

Я не совсем уверен, почему вы используете библиотеку GifDrawable, библиотека Glide намного лучше. https://github.com/bumptech/glide

Glide.with(mContext).load(image.getMedium()) 
       .thumbnail(0.5f) 
       .crossFade() 
       .diskCacheStrategy(DiskCacheStrategy.ALL) 
       .into(holder.thumbnail); 
+0

спасибо большое скольжение с использованием GlideDrawableImageViewTarget. –

+0

Кроме того, если вы читаете образцы, вы можете значительно расширить скольжение, чтобы начать DiskCacheStrategy - это то, что вы, возможно, захотите изучить, также – dominicd

+0

ya его довольно хороший я использовал placeholder, чтобы показать экран загрузки, хотя я не могу анимировать загрузка еще, но его хороший я использовал CrossFade и ошибку, я обязательно посмотрю на DiskCacheStrategy и применил его в своем приложении. Еще раз вам спасибо –

Смежные вопросы