Android 用网络图片做帧动画

本文介绍如何在Android应用中利用Glide库加载网络图片,并将其转化为帧动画。通过创建一个AnimationDrawable对象,设置循环播放,然后依次加载网络图片到ArrayList中,最后将所有图片添加到帧动画并启动。

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

package com.zerofield.netanimation;

import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget;

import java.util.ArrayList;
import java.util.HashMap;

public class MainActivity extends AppCompatActivity {

    private ImageView iv_image;
    ArrayList<String> strArray=new ArrayList<>();
    //HashMap<Integer,ArrayList<Drawable>> mhashMap=new HashMap<>();
    ArrayList mArrayList=new ArrayList();
      HashMap<Integer,GlideDrawable> mhashmap=new HashMap<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        iv_image=findViewById(R.id.iv_image);
        netAnima();
        strArray.add("http://qiniuupload.i-vsun.com/5478cc2cf148276d8abf1d3660232dc1.jpg");
        strArray.add("http://qiniuupload.i-vsun.com/2948ca06f97ec48907c5a71dff34fced.jpg");
        for (int i=0;i<strArray.size();i++){
            final int pos=i;
            loadImage(strArray.get(i),  pos);
        }
    }
    AnimationDrawable frameAnim;
    public void netAnima(){
        frameAnim =new AnimationDrawable();
        // 设置为循环播放
        frameAnim.setOneShot(false);
    }
    public void loadImage(String url,final int pos ) {
        SimpleTarget<GlideDrawable> simpleTarget = new SimpleTarget<GlideDrawable>() {
            @Override
            public void onResourceReady(GlideDrawable resource, GlideAnimation glideAnimation) {
                 mhashmap.put(pos,resource);
                 if(mhashmap.size()==strArray.size()){
                     for (int i=0;i<strArray.size();i++){
                         frameAnim.addFrame( mhashmap.get(i),400);
                         iv_image.setImageDrawable(frameAnim);
                         frameAnim.start();
                     }

                 }
            }

        };
        Glide.with(this)
                .load(url)
                .into(simpleTarget);
    }


    public interface  TCallBack{
        public void BackCall(int pos);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值