Android利用Volley异步加载数据(JSON和图片)完整示例
来源:互联网 发布:coc加农炮升级数据 编辑:程序博客网 时间:2024/06/05 07:53
MainActivity如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package
cc.testvolley;
import
org.json.JSONObject;
import
android.app.Activity;
import
android.app.ProgressDialog;
import
android.graphics.Bitmap;
import
android.os.Bundle;
import
android.support.v4.util.LruCache;
import
android.widget.ImageView;
import
com.android.volley.Request;
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.ImageLoader.ImageCache;
import
com.android.volley.toolbox.ImageLoader.ImageListener;
import
com.android.volley.toolbox.JsonObjectRequest;
import
com.android.volley.toolbox.NetworkImageView;
import
com.android.volley.toolbox.Volley;
/**
* Demo描述:
* 1 利用Volley获取JSON数据
* 2 利用Volley异步加载图片
* 1 利用NetworkImageView加载网路图片
*
* 参考资料:
* 1 http://blog.csdn.net/t12x3456/article/details/9221611
* 2 http://blog.csdn.net/xyz_lmn/article/details/12063561
* 3 http://blog.csdn.net/lfdfhl/article/details/12221875
* Thank you very much
*/
public
class
MainActivity
extends
Activity {
private
ImageView mImageView;
private
NetworkImageView mNetworkImageView;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}
private
void
init(){
mImageView=(ImageView) findViewById(R.id.imageView);
mNetworkImageView=(NetworkImageView)findViewById(R.id.networkImageView);
getJSONByVolley();
loadImageByVolley();
showImageByNetworkImageView();
}
/**
* 利用Volley获取JSON数据
*/
private
void
getJSONByVolley() {
RequestQueue requestQueue = Volley.newRequestQueue(
this
);
String JSONDataUrl =
"http://pipes.yahooapis.com/pipes/pipe.run?_id=giWz8Vc33BG6rQEQo_NLYQ&_render=json"
;
final
ProgressDialog progressDialog = ProgressDialog.show(
this
,
"This is title"
,
"...Loading..."
);
JsonObjectRequest jsonObjectRequest =
new
JsonObjectRequest(
Request.Method.GET,
JSONDataUrl,
null
,
new
Response.Listener<JSONObject>() {
@Override
public
void
onResponse(JSONObject response) {
System.out.println(
"response="
+response);
if
(progressDialog.isShowing()&&progressDialog!=
null
) {
progressDialog.dismiss();
}
}
},
new
Response.ErrorListener() {
@Override
public
void
onErrorResponse(VolleyError arg0) {
System.out.println(
"sorry,Error"
);
}
});
requestQueue.add(jsonObjectRequest);
}
/**
* 利用Volley异步加载图片
*
* 注意方法参数:
* getImageListener(ImageView view, int defaultImageResId, int errorImageResId)
* 第一个参数:显示图片的ImageView
* 第二个参数:默认显示的图片资源
* 第三个参数:加载错误时显示的图片资源
*/
private
void
loadImageByVolley(){
String imageUrl=
"http://avatar.csdn.net/6/6/D/1_lfdfhl.jpg"
;
RequestQueue requestQueue = Volley.newRequestQueue(
this
);
final
LruCache<String, Bitmap> lruCache =
new
LruCache<String, Bitmap>(
20
);
ImageCache imageCache =
new
ImageCache() {
@Override
public
void
putBitmap(String key, Bitmap value) {
lruCache.put(key, value);
}
@Override
public
Bitmap getBitmap(String key) {
return
lruCache.get(key);
}
};
ImageLoader imageLoader =
new
ImageLoader(requestQueue, imageCache);
ImageListener listener = ImageLoader.getImageListener(mImageView, R.drawable.ic_launcher,R.drawable.ic_launcher);
imageLoader.get(imageUrl, listener);
}
/**
* 利用NetworkImageView显示网络图片
*/
private
void
showImageByNetworkImageView(){
String imageUrl=
"http://avatar.csdn.net/6/6/D/1_lfdfhl.jpg"
;
RequestQueue requestQueue = Volley.newRequestQueue(
this
);
final
LruCache<String, Bitmap> lruCache =
new
LruCache<String, Bitmap>(
20
);
ImageCache imageCache =
new
ImageCache() {
@Override
public
void
putBitmap(String key, Bitmap value) {
lruCache.put(key, value);
}
@Override
public
Bitmap getBitmap(String key) {
return
lruCache.get(key);
}
};
ImageLoader imageLoader =
new
ImageLoader(requestQueue, imageCache);
mNetworkImageView.setTag(
"url"
);
mNetworkImageView.setImageUrl(imageUrl,imageLoader);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<
RelativeLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
xmlns:tools
=
"http://schemas.android.com/tools"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
>
<
com.android.volley.toolbox.NetworkImageView
android:id
=
"@+id/networkImageView"
android:layout_width
=
"120dip"
android:layout_height
=
"120dip"
android:layout_centerHorizontal
=
"true"
android:layout_marginTop
=
"30dip"
/>
<
ImageView
android:id
=
"@+id/imageView"
android:layout_width
=
"120dip"
android:layout_height
=
"120dip"
android:layout_centerInParent
=
"true"
/>
</
RelativeLayout
>
0 0
- volley学习笔记(四):Android利用Volley异步加载数据(JSON和图片)完整示例
- Android利用Volley异步加载(JSON和图片)完整示例
- Android利用Volley异步加载数据(JSON和图片)完整示例
- Android利用Volley异步加载数据(JSON和图片)完整示例
- Android利用Volley异步加载数据(JSON和图片)完整示例
- Android利用Volley异步加载数据(JSON和图片)完整示例
- Android利用Volley异步加载数据(JSON和图片)完整示例
- Android利用Volley异步加载数据完整详细示例(二)
- Android利用Volley异步加载数据完整详细示例(一)
- Android利用universal-image-loader异步加载大量图片完整示例
- volley获取JSON数据+异步加载图片+NetworkImageView加载网路图片(一)
- 利用Volley和JSON从服务器里加载数据
- 利用LruCache为GridView异步加载大量网络图片完整示例
- 利用LruCache为GridView异步加载大量网络图片完整示例
- Volley异步加载数据和升级
- Android利用Volley框架加载网络图片
- 网络通信框架Volley之一——获取String数据和图片的异步加载
- 利用LruCache为GridView加载大量本地图片完整示例
- drag event
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- ASP.NET Web Api中使用Session、Cache和Application的几个方法
- 生产者-消费者模型的Java实现
- android.util.Log
- Android利用Volley异步加载数据(JSON和图片)完整示例
- 指针拷贝小例子
- DBUtils使用
- 用Android Studio 导出jar包
- PAT 1073. Scientific Notation (20)
- jQuery validator 详解/应用
- 自定义可勾选的ListView
- Enable Debug log for Requests
- 【Unity】Unity中根据角度和距离生成物体