19软件34 ImageRequest的使用

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ImageRequest"
        android:id="@+id/btn_image_request"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ImageLoader"
        android:id="@+id/btn_image_loader"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="NetworkImageView"
        android:id="@+id/btn_net_work_iv"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Glide"
        android:id="@+id/btn_glide"/>

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/iv_show"/>

    <com.android.volley.toolbox.NetworkImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/net_work_iv"
        />

</LinearLayout>

MainActivity

package com.example.helloworld;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.ImageRequest;
import com.android.volley.toolbox.NetworkImageView;
import com.android.volley.toolbox.Volley;
import com.bumptech.glide.Glide;

public class MainActivity extends AppCompatActivity {
    
    
    private Button btn_image_request;
    private Button btn_image_loader;
    private ImageView iv_show;
    private RequestQueue requestQueue;
    private BitmapCache bitmapCache;
    private NetworkImageView net_work_iv;
    private Button btn_net_work_iv;
    private Button btn_glide;

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

        bitmapCache = new BitmapCache();
        requestQueue = Volley.newRequestQueue(MainActivity.this);

        btn_image_request = findViewById(R.id.btn_image_request);
        btn_image_request.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                useImageReques();
            }
        });

        iv_show = findViewById(R.id.iv_show);

        btn_image_loader = findViewById(R.id.btn_image_loader);
        btn_image_loader.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                useImageLoader();
            }
        });

        net_work_iv = findViewById(R.id.net_work_iv);
        btn_net_work_iv = findViewById(R.id.btn_net_work_iv);
        btn_net_work_iv.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                net_work_iv.setDefaultImageResId(R.drawable.loading);
                net_work_iv.setErrorImageResId(R.drawable.load_fail);
                String url = "http://www.gdcp.edu.cn/service?token=e32c902f50c44c04923842e735ae15eb";
                net_work_iv.setImageUrl(url, new ImageLoader(requestQueue, bitmapCache));
            }
        });

        // 王炸  Glide
        btn_glide = findViewById(R.id.btn_glide);
        btn_glide.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                String url = "http://www.gdcp.edu.cn/service?token=e32c902f50c44c04923842e735ae15eb";
                // 一行代码解决所有问题
                Glide.with(MainActivity.this).load(url)
                        .placeholder(R.drawable.loading)
                        .error(R.drawable.load_fail)
                        .into(iv_show);
            }
        });
    }

    // 使用ImageLoader加载图片
    private void useImageLoader() {
    
    
        /*ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() {
            @Override
            public Bitmap getBitmap(String s) {
                Log.e("ImageLoader", "getBitmap s = " + s);
                return null;
            }

            @Override
            public void putBitmap(String s, Bitmap bitmap) {
                Log.e("ImageLoader", "putBitmap s = " + s + "  bitmapsize = " + bitmap.getByteCount());
            }
        });*/

        // 使用BitmapCache
        ImageLoader imageLoader = new ImageLoader(requestQueue, bitmapCache);

        ImageLoader.ImageListener imageListener = ImageLoader.getImageListener(iv_show,
                R.drawable.loading, R.drawable.load_fail);

        String imgUrl = "http://www.gdcp.edu.cn/service?token=9c2e74734dfd4f699487d9b184676a49";
        imageLoader.get(imgUrl, imageListener);
    }

    // 使用ImageRequest加载图片
    private void useImageReques() {
    
    
        String imgUrl = "http://www.gdcp.edu.cn/service?token=9c2e74734dfd4f699487d9b184676a49";
        ImageRequest imageRequest = new ImageRequest(imgUrl, new Response.Listener<Bitmap>() {
    
    
            @Override
            public void onResponse(Bitmap bitmap) {
    
    
                Log.e("ImageRequest", "bitmap1 = " + bitmap.getByteCount());
                Log.e("ImageRequest", "bitmap2 = " + bitmap.getRowBytes() * bitmap.getHeight());
                iv_show.setImageBitmap(bitmap);
            }
        }, 0, 0, Bitmap.Config.ARGB_8888,
                new Response.ErrorListener() {
    
    
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
    
    
                        Log.e("ImageRequest", "volleyError = " + volleyError.getMessage());
                    }
                });

        requestQueue.add(imageRequest);
    }
}

BitmapCache

package com.example.helloworld;

import android.graphics.Bitmap;
import android.util.Log;
import android.util.LruCache;

import com.android.volley.toolbox.ImageLoader;

public class BitmapCache implements ImageLoader.ImageCache {
    
    
    private LruCache<String, Bitmap> lruCache;

    public BitmapCache() {
    
    
        final int MAX_SIZE = 10 * 1024 * 1024;

        lruCache = new LruCache<String, Bitmap>(MAX_SIZE){
    
    
            @Override
            protected int sizeOf(String url, Bitmap bitmap) {
    
    
                return bitmap.getRowBytes() * bitmap.getHeight();
            }
        };
    }

    @Override
    public Bitmap getBitmap(String url) {
    
    
        Log.e("BitmapCache", "getBitmap url" + url);
        return lruCache.get(url);
    }

    @Override
    public void putBitmap(String url, Bitmap bitmap) {
    
    
        Log.e("BitmapCache", "putBitmap " + bitmap.getByteCount() + " url = " + url);
        lruCache.put(url, bitmap);
    }
}

添加Glide依赖

在app文件夹 build.gradle 的dependencies中添加

 implementation 'com.github.bumptech.glide:glide:3.7.0'

猜你喜欢

转载自blog.csdn.net/zksdu/article/details/114301164
34