2015-09-30 26 views
8

Come posso visualizzare l'immagine di caricamento GIF nel mio segnaposto Picasso?Android Studio Picasso gif caricamento immagine per segnaposto

voglio usare gif in questa parte del codice

imageView = (ImageView) rootView.findViewById(R.id.imageView); 
Picasso.with(getActivity()).load("http://joehamirbalabadan.com/android/android/imghome/index1.png").placeholder(R.drawable.indexloading).into(imageView); 
imageView3 = (ImageView) rootView.findViewById(R.id.imageView3); 
Picasso.with(getActivity()).load("http://joehamirbalabadan.com/android/android/imghome/index3.png").placeholder(R.drawable.indexloading).into(imageView3); 

si prega di controllare e migliorare il mio codice ..

HomeFragment.java

package com.example.administrator.mosbeau; 

import android.app.Activity; 
import android.app.Fragment; 
import android.app.FragmentManager; 
import android.graphics.Bitmap; 
import android.graphics.drawable.BitmapDrawable; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.ProgressBar; 

import com.squareup.picasso.Picasso; 

/** 
* Created by Administrator on 9/7/2015. 
*/ 
public class HomeFragment extends Fragment { 

    public static HomeFragment newInstance() { 
     HomeFragment fragment = new HomeFragment(); 
     return fragment; 
    } 

    public HomeFragment() { 
    } 

    Boolean InternetAvailable = false; 
    Seocnd detectconnection; 

    ImageView imageView, imageView3; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.homelayout, container, false); 

     detectconnection = new Seocnd(getActivity()); 
     InternetAvailable = detectconnection.InternetConnecting(); 
     if (InternetAvailable) { 

      imageView = (ImageView) rootView.findViewById(R.id.imageView); 
      Picasso.with(getActivity()).load("http://joehamirbalabadan.com/android/android/imghome/index1.png").placeholder(R.drawable.indexloading).into(imageView); 

      imageView3 = (ImageView) rootView.findViewById(R.id.imageView3); 
      Picasso.with(getActivity()).load("http://joehamirbalabadan.com/android/android/imghome/index3.png").placeholder(R.drawable.indexloading).into(imageView3); 


     } else { 
      NointernetFragment fragment = new NointernetFragment(); 
      FragmentManager fragmentManager = getFragmentManager(); 
      fragmentManager.beginTransaction() 
        .replace(R.id.container, fragment) 
        .commit(); 
     } 

     return rootView; 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     ((MainActivity) activity).onSectionAttached(1); 
    } 

} 

homelayout.xml

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:fillViewport="false" 
    android:background="#fffff1f1"> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    android:background="#fffff1f1" 
    android:padding="10dp"> 



    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/imageView" 
     android:src="@drawable/index1" 
     android:layout_alignParentEnd="false" 
     android:layout_alignParentStart="false" 
     android:layout_alignParentTop="false" 
     android:layout_alignParentLeft="false" 
     android:layout_alignParentRight="false" 
     android:layout_alignWithParentIfMissing="false" 
     android:adjustViewBounds="true" 
     android:layout_marginBottom="10dp" 
     android:layout_centerHorizontal="true" 
     android:background="#ffffffff" /> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/imageView2" 
     android:src="@drawable/index2" 
     android:layout_below="@+id/imageView" 
     android:adjustViewBounds="true" 
     android:layout_marginBottom="10dp" /> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/imageView3" 
     android:src="@drawable/index3" 
     android:layout_below="@+id/imageView2" 
     android:layout_alignParentBottom="true" 
     android:adjustViewBounds="true" 
     android:background="#ffffffff" 
     android:layout_centerHorizontal="true" /> 

</RelativeLayout> 
</ScrollView> 

risposta

7

Da quello che so, Android non ha il supporto integrato per GIF. Quindi ImageView non supporta GIF per impostazione predefinita.

vorrei suggerire di utilizzare Glide library per il caricamento delle immagini, e il caching in quanto fornisce il supporto per GIF. Glide è simile a Picasso e talvolta è considerato migliore di Picasso. I metodi utilizzati sono simili a Picasso, tranne per il fatto che ha un metodo asGif() che può caricare l'immagine in ImageView come GIF.

Glide.with(context) 
    .load(imageUrl) 
    .asGif() 
    .placeholder(R.drawable.loading_gif) 
    .into(imageView); 

Se siete così appassionato utilizzando Picasso stesso, allora si potrebbe avere a guardare in questo stackoverflow post

+1

Ora utilizzo Glide ma il problema è loading_gif non funziona nel segnaposto. Voglio GIF nel segnaposto in modo che l'immagine di caricamento venga visualizzata prima dell'immagine nell'url .. – Joe

+0

Ho affrontato un altro problema con Glide che carica gif. Un frame è assente e glitch di animazione. Ho provato https://github.com/koral--/android-gif-drawable. E funziona bene per me, ma NON è ImageView. – Yazon2006

1

picaso è per imageviews, è possibile mostrare il file GIF in una WebView, ma u uso non posso che webview in picaso di sicuro.