package com.example.Volley01;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.android.volley.*;
import com.android.volley.toolbox.*;
import java.util.HashMap;
import java.util.Map;
/**
* 1.源码地址:https://android.googlesource.com/platform/frameworks/volley
* 2.通过源码导出jar
* 3.将jar引入工程
*/
public class MyActivity extends Activity implements View.OnClickListener {
/**
* HttpClient
* 1 拿到httpClient对象
* 2 创建请求方式对象(需要访问路径) httpGet()
* 3 httpClient对象使用execute执行请求对象
* 4 得到返回对象,从返回对象上拿到返回码
* 5 对返回码进行判断
* 6 从返回对象上拿到返回值
*/
/**
* volley
* 1.创建请求队列
* 2.创建请求
* 3.将请求放入队列
*/
private final String GET_URL = "http://www.weather.com.cn/data/sk/101010100.html";
private final String IMG_URL = "http://my.csdn.net/uploads/avatar/F/A/3/1_cym492224103.jpg";
RequestQueue requestQueue;
ImageView ivReq;
ImageView ivReqLoader;
NetworkImageView nivReq;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnGet = (Button) findViewById(R.id.btn_get);
ivReq = (ImageView) findViewById(R.id.iv_req);
ivReqLoader = (ImageView) findViewById(R.id.iv_req_loader);
nivReq = (NetworkImageView) findViewById(R.id.niv_req);
btnGet.setOnClickListener(this);
ivReq.setOnClickListener(this);
nivReq.setOnClickListener(this);
ivReqLoader.setOnClickListener(this);
requestQueue = Volley.newRequestQueue(this);
}
@Override
public void onClick(View view) {
Request request = null;
ImageLoader imageLoader = new ImageLoader(requestQueue,new MyImageCache());
switch (view.getId())
{
case R.id.btn_get:
request = new StringRequest(GET_URL,new Response.Listener<String>() {
@Override
public void onResponse(String response) {
showMsg(response);
}
},new MyErrorListener());
// request.setTag("x");
// requestQueue.add(request);
// requestQueue.cancelAll("x");x
// ==========================
//
// request = new StringRequest(Request.Method.POST,GET_URL,new Response.Listener<String>() {
// @Override
// public void onResponse(String response) {
// showMsg(response);
// }
// },new Response.ErrorListener() {
// @Override
// public void onErrorResponse(VolleyError error) {
// showMsg(error.getMessage());
// }
// }){
// @Override
// protected Map<String, String> getParams() throws AuthFailureError {
// Map<String,String> map = new HashMap<String, String>();
// map.put("name","xxxx");
// map.put("pwd","123");
// return map;
// }
// };
break;
case R.id.iv_req:
// 加载网络图片 但是不支持内存缓存
request = new ImageRequest(IMG_URL,new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
ivReq.setImageBitmap(response);
}
},200,200, Bitmap.Config.ARGB_8888,new MyErrorListener());
break;
case R.id.iv_req_loader:
// 加载网络图片 支持内存缓存
ImageLoader.ImageListener imageListener = ImageLoader.getImageListener(ivReqLoader,R.drawable.ic_launcher,R.drawable.ic_launcher);
imageLoader.get(IMG_URL,imageListener);
break;
case R.id.niv_req:
// 加载网络图片 支持内存缓存 而且可以解决批量加载图片的错位问题,并且还可以当图片画出屏幕的时候取消为未完成的请求。
nivReq.setImageUrl(IMG_URL,imageLoader);
break;
}
if(request != null) {
requestQueue.add(request);
}
}
private void showMsg(String msg){
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}
private class MyErrorListener implements Response.ErrorListener{
@Override
public void onErrorResponse(VolleyError error) {
showMsg(error.getMessage());
}
}
}