Android 网络通信框架Volley简介(Google IO 2013)的学习使用

import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;
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.ImageListener;
import com.android.volley.toolbox.ImageRequest;
import com.android.volley.toolbox.NetworkImageView;
import com.android.volley.toolbox.Volley;
public class MainActivity extends Activity {
private RequestQueue mQueue;
NetworkImageView networkImageView;
private ImageView imageRequestView;
private ImageView imageLoaderView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mQueue = Volley.newRequestQueue(MainActivity.this);
imageRequestView = (ImageView) findViewById(R.id.image_request);
imageLoaderView = (ImageView) findViewById(R.id.image_loader);
networkImageView = (NetworkImageView) findViewById(R.id.network_image_view);
findViewById(R.id.startactivity).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this,
OtherActivity.class));
}
});
/* ImageRequest的用法 */
ImageRequest imageRequest = new ImageRequest(
"http://img2.imgtn.bdimg.com/it/u=356245718,4187900464&fm=21&gp=0.jpg",
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
imageRequestView.setImageBitmap(response);
}
}, 0, 0, Config.ARGB_8888, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
imageRequestView
.setImageResource(R.drawable.icon_error);
}
});
mQueue.add(imageRequest);
/* ImageLoader的用法 */
ImageLoader imageLoader = new ImageLoader(mQueue, new BitmapCache());
ImageListener listener = ImageLoader.getImageListener(imageLoaderView,
R.drawable.ic_launcher, R.drawable.ic_launcher);
imageLoader
.get("http://img5.imgtn.bdimg.com/it/u=3462404313,3291882384&fm=21&gp=0.jpg",
listener);
// imageLoader.get("https://img-my.csdn.net/uploads/201404/13/1397393290_5765.jpeg",listener,
// 200, 200);
/* NetworkImageView的用法 */
networkImageView.setDefaultImageResId(R.drawable.ic_launcher);
networkImageView.setErrorImageResId(R.drawable.ic_launcher);
networkImageView
.setImageUrl(
"http://img5.imgtn.bdimg.com/it/u=507528704,2967639579&fm=90&gp=0.jpg",
new ImageLoader(mQueue, new BitmapCache()));
}
public void onRequest(View view) {
XrVolleyTools tools = new XrVolleyTools(this, new ResponseInterfaces() {
/* 请求成功,返回XML */
@Override
public void onResponse(XmlPullParser response) {
Toast.makeText(MainActivity.this,
"xml   ---   " + response + "   xml需要解析", 1).show();
}
/* 请求成功,返回JSON */
@Override
public void onResponse(JSONObject response) {
Toast.makeText(MainActivity.this, "json   ---   " + response, 1)
.show();
}
/* 请求成功,返回String */
@Override
public void onResponse(String response) {
Toast.makeText(MainActivity.this, "string   ---   " + response,
1).show();
}
/* 请求失败 */
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this, "error   ---   " + error, 1)
.show();
}
});
tools.xrStringRequest("http://www.baidu.com");
tools.xrJsonRequest("http://m.weather.com.cn/data/101010100.html");
tools.xrXmlRequest("http://flash.weather.com.cn/wmaps/xml/beijing.xml");
}
}
import java.util.Map;
import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;
import android.content.Context;
import android.util.Log;
import com.android.volley.AuthFailureError;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
public class XrVolleyTools {
private Context mContext;
private RequestQueue mQueue;
private ResponseInterfaces mInterfaces;
public XrVolleyTools(Context context, ResponseInterfaces interfaces) {
this.mContext = context;
this.mInterfaces = interfaces;
this.mQueue = Volley.newRequestQueue(mContext);
}
/**
* @Title: xrStringRequest
* @Description: TODO(xrStringRequest)
* @param @param url
* @return void
*/
public void xrStringRequest(String url) {
StringRequest stringRequest = new StringRequest(url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("String", response);
mInterfaces.onResponse(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("String error", error.getMessage(), error);
mInterfaces.onErrorResponse(error);
}
});
mQueue.add(stringRequest);
}
/**
* @Title: xrStringRequest
* @Description: TODO(xrStringRequest)
* @param @param method
* @param @param url
* @param @param map
* @return void
*/
public void xrStringRequest(int method, String url,
final Map<String, String> map) {
StringRequest stringRequest = new StringRequest(method, url,
new Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("String", response);
mInterfaces.onResponse(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("String error", error.getMessage(), error);
mInterfaces.onErrorResponse(error);
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return map;
}
};
mQueue.add(stringRequest);
}
/**
* @Title: xrJsonRequest
* @Description: TODO(xrJsonRequest)
* @param @param url
* @return void
*/
public void xrJsonRequest(String url) {
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null,
new Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("Json", response.toString());
mInterfaces.onResponse(response);
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Json error", error.getMessage(), error);
mInterfaces.onErrorResponse(error);
}
});
mQueue.add(jsonObjectRequest);
}
/**
* @Title: xrJsonRequest
* @Description: TODO(xrJsonRequest)
* @param @param method
* @param @param url
* @param @param map
* @return void
*/
public void xrJsonRequest(int method, String url,
final Map<String, String> map) {
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(method,
url, null, new Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("Json", response.toString());
mInterfaces.onResponse(response);
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Json error", error.getMessage(), error);
mInterfaces.onErrorResponse(error);
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return map;
}
};
mQueue.add(jsonObjectRequest);
}
/**
* @Title: xrXmlRequest
* @Description: TODO(xrXmlRequest)
* @param @param url
* @return void
*/
public void xrXmlRequest(String url) {
XmlRequest xmlRequest = new XmlRequest(url,
new Listener<XmlPullParser>() {
@Override
public void onResponse(XmlPullParser response) {
Log.d("Xml", response.toString());
mInterfaces.onResponse(response);
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Xml error", error.getMessage(), error);
mInterfaces.onErrorResponse(error);
}
});
mQueue.add(xmlRequest);
}
/**
* @Title: xrXmlRequest
* @Description: TODO(xrXmlRequest)
* @param @param method
* @param @param url
* @param @param map
* @return void
*/
public void xrXmlRequest(int method, String url,
final Map<String, String> map) {
XmlRequest xmlRequest = new XmlRequest(method, url,
new Listener<XmlPullParser>() {
@Override
public void onResponse(XmlPullParser response) {
Log.d("Xml", response.toString());
mInterfaces.onResponse(response);
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Xml error", error.getMessage(), error);
mInterfaces.onErrorResponse(error);
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return map;
}
};
mQueue.add(xmlRequest);
}
}
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.HttpHeaderParser;
public class XmlRequest extends Request<XmlPullParser> {
private final Listener<XmlPullParser> mListener;
public XmlRequest(int method, String url, Listener<XmlPullParser> listener,
ErrorListener errorlistener) {
super(method, url, errorlistener);
mListener = listener;
}
public XmlRequest(String url, Listener<XmlPullParser> listener,
ErrorListener errorlistener) {
this(Method.GET, url, listener, errorlistener);
}
@Override
protected void deliverResponse(XmlPullParser response) {
mListener.onResponse(response);
}
@Override
protected Response<XmlPullParser> parseNetworkResponse(
NetworkResponse response) {
try {
String xmlString = new String(response.data,
HttpHeaderParser.parseCharset(response.headers));
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser = factory.newPullParser();
xmlPullParser.setInput(new StringReader(xmlString));
return Response.success(xmlPullParser,
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (XmlPullParserException e) {
return Response.error(new ParseError(e));
}
}
}
import android.graphics.Bitmap;
import android.support.v4.util.LruCache;
import com.android.volley.toolbox.ImageLoader.ImageCache;
/**
 * @ClassName: BitmapCache
 * @Description: TODO(图片缓存10M)
 * @author A18ccms a18ccms_gmail_com
 * @date 2015-4-21 下午4:05:37
 * 
 */
public class BitmapCache implements ImageCache {
private LruCache<String, Bitmap> mCache;
public BitmapCache() {
int maxSize = 10 * 1024 * 1024;// 10M的缓存
mCache = new LruCache<String, Bitmap>(maxSize) {
@Override
protected int sizeOf(String key, Bitmap bitmap) {
return bitmap.getRowBytes() * bitmap.getHeight();
}
};
}
@Override
public Bitmap getBitmap(String url) {
return mCache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
mCache.put(url, bitmap);
}
}

图片

转载于:https://my.oschina.net/spoon2014/blog/423745

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值