不多说直接上干货
设置全局变量,在前文设置过就不用重复设置了。
1
public class MyApp extends Application{
2
//1.创建请求队列,可以设置为全局变量
3
private static RequestQueue mQueue;
4
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
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
34
public void onResponse(Bitmap bitmap) {
35
iv.setImageBitmap(bitmap);
36
}
37
}, 250, 250, Bitmap.Config.RGB_565, new Response.ErrorListener() {
38
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
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>
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
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
}
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
10
protected int sizeOf(String key, Bitmap value) {
11
//计算出要存储的bitmap对象的字节数
12
return value.getRowBytes()*value.getHeight();
13
}
14
};
15
}
16
17
18
public Bitmap getBitmap(String s) {
19
return cache.get(s);
20
}
21
22
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" />