Volley实现图片加载功能

不多说直接上干货

设置全局变量,在前文设置过就不用重复设置了。

1
public class MyApp extends Application{
2
    //1.创建请求队列,可以设置为全局变量
3
    private static RequestQueue mQueue;
4
    @Override
5
    public void onCreate() {
6
        super.onCreate();
7
        //初始化请求队列
8
        mQueue = Volley.newRequestQueue(getApplicationContext());
9
    }
10
11
    public static RequestQueue getHttpQueue(){
12
        return  mQueue;
13
    }
14
15
}
用ImageRequest获取
1
public class ImageRequestActivity extends AppCompatActivity {
2
3
    private ImageView iv;
4
    private String url = "https://img-my.csdn.net/uploads/201407/26/1406383172_4577.jpg";
5
6
    @Override
7
    protected void onCreate(Bundle savedInstanceState) {
8
        super.onCreate(savedInstanceState);
9
        setContentView(R.layout.activity_image_request);
10
        iv = (ImageView) findViewById(R.id.iv);
11
        volleyImage(url);
12
    }
13
    /**
14
     * String url,    图片的地址
15
     * Listener<Bitmap> listener,   获取图片成功时会回调的接口
16
     * int maxWidth,                图片显示的最大宽度
17
     * int maxHeight,               图片显示的最大的高度
18
     * Config decodeConfig,         图片的加载质量
19
     *   可选四种:
20
     *   ARGB_8888    8+8+8+8 = 32 位    32/8 = 4字节
21
     *   =1个像素点上的字节数
22
     *   ARGB_4444   16位          2字节
23
     *   RGB_565     16位          2字节   图片压缩较小,而且比较清晰
24
     *   Alpha_8     8位           1字节
25
     *
26
     *   480*800=384000*4/1024/1024 = 1.4648m
27
     * ErrorListener errorListener :获取图片失败时会回调的接口
28
     * */
29
30
    public void volleyImage(String url){
31
32
        ImageRequest request = new ImageRequest(url, new Response.Listener<Bitmap>() {
33
            @Override
34
            public void onResponse(Bitmap bitmap) {
35
                iv.setImageBitmap(bitmap);
36
            }
37
        }, 250, 250, Bitmap.Config.RGB_565, new Response.ErrorListener() {
38
            @Override
39
            public void onErrorResponse(VolleyError volleyError) {
40
                iv.setImageResource(R.drawable.h2);
41
            }
42
        });
43
44
        MyApp.getHttpQueue().add(request);
45
    }
46
}
布局
1
 <ImageView
2
        android:id="@+id/iv"
3
        android:layout_centerInParent="true"
4
        android:layout_width="250dp"
5
        android:layout_height="250dp"
6
        android:src="@mipmap/ic_launcher"
7
        android:scaleType="centerCrop"/>



用NetImage获取
1
2
public class NetImageActivity extends AppCompatActivity {
3
4
    private NetworkImageView netIv;
5
    private String url = "https://img-my.csdn.net/uploads/201407/26/1406383130_7393.jpg";
6
    @Override
7
    protected void onCreate(Bundle savedInstanceState) {
8
        super.onCreate(savedInstanceState);
9
        setContentView(R.layout.activity_net_image);
10
        netIv = (NetworkImageView) findViewById(R.id.netIv);
11
12
        RequestQueue queue = MyApp.getHttpQueue();
13
        ImageLoader loader = new ImageLoader(queue,new BitmapCache());
14
        netIv.setDefaultImageResId(R.mipmap.ic_launcher);  //设置默认加载的图片
15
        netIv.setErrorImageResId(R.drawable.h2);        //设置网络加载失败时显示的图片
16
        //设置NetworkImageView的图片加载路径
17
        netIv.setImageUrl(url,loader);
18
    }
19
}
布局
1
  <com.android.volley.toolbox.NetworkImageView
2
        android:id="@+id/netIv"
3
        android:layout_height="250dp"
4
        android:layout_width="250dp"
5
        android:layout_centerInParent="true"
6
        android:scaleType="centerCrop">
7
8
    </com.android.volley.toolbox.NetworkImageView>

用ImageView 获取
1
public class ImageViewActivity extends AppCompatActivity {
2
3
    private ImageView iv;
4
    private String url = "https://img-my.csdn.net/uploads/201407/26/1406382941_4559.jpg";
5
    @Override
6
    protected void onCreate(Bundle savedInstanceState) {
7
        super.onCreate(savedInstanceState);
8
        setContentView(R.layout.activity_image_request);
9
        iv = (ImageView) findViewById(R.id.iv);
10
11
        //获得图片加载器对象
12
        ImageLoader loader = new ImageLoader(MyApp.getHttpQueue(),new BitmapCache());
13
14
        ImageLoader.ImageListener listener= loader.getImageListener(iv,R.mipmap.ic_launcher,R.drawable.h2);
15
16
        loader.get(url,listener);
17
18
19
    }
20
}

传入的工具类BitmapCache
1
public class BitmapCache implements ImageLoader.ImageCache{
2
    //定义缓存对象
3
    private LruCache<String,Bitmap>cache;
4
    private int maxSize = 8*1024*1024;
5
6
    public BitmapCache() {
7
8
        cache = new LruCache<String,Bitmap>(maxSize){
9
            @Override
10
            protected int sizeOf(String key, Bitmap value) {
11
                //计算出要存储的bitmap对象的字节数
12
                return value.getRowBytes()*value.getHeight();
13
            }
14
        };
15
    }
16
17
    @Override
18
    public Bitmap getBitmap(String s) {
19
        return cache.get(s);
20
    }
21
22
    @Override
23
    public void putBitmap(String url, Bitmap bitmap) {
24
        cache.put(url,bitmap);
25
    }
26
}
布局
1
 <ImageView
2
        android:id="@+id/iv"
3
        android:layout_centerInParent="true"
4
        android:layout_width="250dp"
5
        android:layout_height="250dp"
6
        android:src="@mipmap/ic_launcher"
7
        android:scaleType="centerCrop"/>

权限
1
2
    <uses-permission android:name="android.permission.INTERNET" />
3
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值