2015-09-30 20 views
8

Làm cách nào để hiển thị hình ảnh tải gif trong trình giữ chỗ Picasso của tôi?Android Studio Picasso gif tải hình ảnh cho trình giữ chỗ

tôi muốn sử dụng gif trong phần này mã

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); 

hãy kiểm tra và cải thiện mã của tôi ..

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> 

Trả lời

7

Từ những gì tôi biết, Android không có hỗ trợ sẵn có cho GIF. Vì vậy, ImageView không hỗ trợ GIF theo mặc định.

Tôi khuyên bạn nên sử dụng Glide library để tải hình ảnh và lưu vào bộ nhớ cache vì nó cung cấp hỗ trợ cho GIF. Glide tương tự như Picasso, và đôi khi được coi là tốt hơn Picasso. Các phương pháp được sử dụng cũng tương tự như Picasso, ngoại trừ việc nó có phương thức asGif() có thể tải hình ảnh vào ImageView dưới dạng GIF.

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

Nếu bạn đang rất quan tâm về việc sử dụng Picasso chính nó, sau đó bạn có thể phải xem xét này stackoverflow post

+1

bây giờ tôi sử dụng Glide nhưng vấn đề là loading_gif không hoạt động trong trình giữ chỗ .. tôi muốn GIF trong trình giữ chỗ, vì vậy hình ảnh tải sẽ hiển thị trước hình ảnh trong url .. – Joe

+0

Tôi gặp phải vấn đề khác khi tải gióng Glide. Một khung hình vắng mặt và hoạt ảnh ổn định. Tôi đã thử https://github.com/koral--/android-gif-drawable. Và nó làm việc tốt cho tôi, nhưng nó không phải là ImageView. – Yazon2006

1

picaso là dành cho imageviews, bạn có thể hiển thị tập tin GIF của bạn trong một WebView, nhưng u sử dụng không thể mà webview trong picaso cho chắc chắn.

Các vấn đề liên quan