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("http://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); } }
//返回XML格式的类 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); } }
//小白做记录,还在抄代码的阶段,吐槽就免了
http://pan.baidu.com/s/1jGsx0ma