Volley加载网络动态图

参考 https://www.cnblogs.com/androidsuperman/p/8a157b18ede85caa61ca5bc04bba43d0.html 文章,用了其中一种方法。

layout布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/img_test"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_gravity="center" />

</LinearLayout>

activity类

public class VolleyTestActivity extends AppCompatActivity {

    private ImageView img_test;
    String imgUrl = "https://img-my.csdn.net/uploads/201403/03/1393854084_1323.jpg";
    private RequestQueue mQueue; //创建请求队列;
    private ImageLoader imageLoader;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.glide_test_activity);

        img_test = findViewById(R.id.img_test);

        mQueue = Volley.newRequestQueue(this);
       //创建imageloader对象,其中imageloader的构造方法第二个参数为imageCache的实现类,实现图片缓存的算法类。
        imageLoader = new ImageLoader(mQueue, LruImageCache.getInstance());
       //创建imagelistener对象,主要设置图片加载失败和加载过程中的图片设置。
        ImageLoader.ImageListener listener = ImageLoader.getImageListener(img_test,
                R.mipmap.ic_launcher, R.mipmap.ic_launcher);
        imageLoader.get(imgUrl, listener);
    }
}


LruImageCache缓存类

LruImageCache是个Lru算法类,主要用于处理缓存的大小问题,可以避免加载图片的时候oom的问题,ImageLoader是volley提供的另外一种加载图片的方式。

 public class LruImageCache implements ImageLoader.ImageCache {

        private static  LruCache<String, Bitmap> mMemoryCache;

        private static LruImageCache lruImageCache;

        private LruImageCache(){
            // Get the Max available memory
            int maxMemory = (int) Runtime.getRuntime().maxMemory();
            int cacheSize = maxMemory / 8;
            mMemoryCache = new LruCache<String, Bitmap>(cacheSize){
                @Override
                protected int sizeOf(String key, Bitmap bitmap){
                    return bitmap.getRowBytes() * bitmap.getHeight();
                }
            };
        }

        public  static LruImageCache getInstance(){
            if(lruImageCache == null){
                lruImageCache = new LruImageCache();
            }
            return lruImageCache;
        }

        @Override
        public Bitmap getBitmap(String arg0) {
            return mMemoryCache.get(arg0);
        }

        @Override
        public void putBitmap(String arg0, Bitmap arg1) {
            if(getBitmap(arg0) == null){
                mMemoryCache.put(arg0, arg1);
            }
        }
    }
感谢作者分享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值