Fresco加载Gif写入RecyclerView

本文介绍使用Facebook的Fresco库进行图片加载的实现方法,包括依赖配置、初始化过程及RecyclerView中图片展示的具体代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

依赖

   compile 'com.facebook.fresco:fresco:1.5.0'
    compile 'com.facebook.fresco:animated-gif:1.5.0'
    compile 'com.android.support:recyclerview-v7:26.1.0'

注册

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}

主布局

android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="bwei.com.tupa.MainActivity">
<!--<com.facebook.drawee.view.SimpleDraweeView-->
    <!--android:id="@+id/sdv"-->
    <!--android:layout_width="150dp"-->
    <!--android:layout_height="150dp" />-->
        <android.support.v7.widget.RecyclerView
        android:id="@+id/rlv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

子布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="150dp">

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/sdv"
        android:layout_width="123dp"
        android:layout_height="123dp"
        app:placeholderImage="@mipmap/ic_launcher" />
</LinearLayout>

主界面

public class MainActivity extends AppCompatActivity {

    private SimpleDraweeView mSdv;
    private RecyclerView mRlv;
    private List<Uri> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        inXun();
    }
    private void inXun() {
        mRlv.setLayoutManager(new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL));
        list = new ArrayList<>();
        String ss = "http://c.hiphotos.baidu.com/image/w%3D500/sign=64d9fd84bc003af34dbadc60052bc619/37d12f2eb9389b501dc8fddf8f35e5dde7116e03.jpg";
        for (int i = 0; i < 10; i++) {
            Uri uri = Uri.parse(ss);
            list.add(uri);
        }
        Recycler recycler = new Recycler(list, this);
        mRlv.setAdapter(recycler);
    }
    private void initView() {
        mRlv = (RecyclerView) findViewById(R.id.rlv);
//        String ss = "http://c.hiphotos.baidu.com/image/w%3D500/sign=64d9fd84bc003af34dbadc60052bc619/37d12f2eb9389b501dc8fddf8f35e5dde7116e03.jpg";
//        mSdv = (SimpleDraweeView) findViewById(R.id.sdv);
//        DraweeController controller = Fresco.newDraweeControllerBuilder()
//                .setUri(Uri.parse(ss))
//                .setAutoPlayAnimations(true)
//                .build();
//        mSdv.setController(controller);
    }
}

RecyclerView

public class Recycler extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private List<Uri> list;
    private Context context;


    public Recycler(List<Uri> list, Context context) {
        this.list = list;
        this.context = context;

    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item,parent,false);
        return new MyviewHodler(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        MyviewHodler myviewHodler = (MyviewHodler) holder;
        DraweeController controller = Fresco.newDraweeControllerBuilder()
                .setUri(list.get(position))
                .setAutoPlayAnimations(true)
                .build();
        myviewHodler.sdv.setController(controller);
    }
    @Override
    public int getItemCount() {
        return list.size();
    }
    public class MyviewHodler extends RecyclerView.ViewHolder {

        private final SimpleDraweeView sdv;

        public MyviewHodler(View itemView) {
            super(itemView);
            sdv = itemView.findViewById(R.id.sdv);
        }
    }
}

到这就完了,
http://blog.youkuaiyun.com/Yw59792649/article/details/78658320这篇是Fresco加载Gif最简单的版本

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值