public class MainActivity extends Activity {
RequestQueue queue; ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
iv=(ImageView) findViewById(R.id.iv); //1、创建队列 queue=Volley.newRequestQueue(this); //testStringRequest( ); //testImageRequest(); //testImageLoader(); testWeatherRequest(); }
/** * Gson的使用 step 1:根据json字符串来构建对应的实体类 实体类要与json字符串的每一个key所对应 step 2: 创建一个Gson对象 step 3: 调用Gson对象的fromjson方法 */ private void testWeatherRequest() { try { String city = URLEncoder.encode("广州", "utf8"); String url="http://op.juhe.cn/onebox/weather/query?cityname="+city+"&key=c68b7ad46d3a7e3e6dc9b8712f16e2a9";
WeatherRequest request = new WeatherRequest(url, new Listener<WeatherBean>() {
@Override public void onResponse(WeatherBean arg0) { Log.i("tag", "自定义:"+arg0.toString());
} }, new ErrorListener() {
@Override public void onErrorResponse(VolleyError arg0) { Log.i("tag", "错误信息::"+arg0.getMessage()); } });
queue.add(request); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
}
/** * 3)ImageLoader Volley提供的一个图片加载类。内部封装了ImageRequest,并使用缓存机制保存已经加载过的图片。 */ private void testImageLoader() { ImageLoader loader= new ImageLoader(queue, new ImageCache() { LruCache<String, Bitmap> cache = new LruCache<String, Bitmap>((int) (Runtime.getRuntime().maxMemory()/8)){ //设置一个缓存 @Override protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes()*value.getHeight(); } };
@Override public void putBitmap(String arg0, Bitmap arg1) { cache.put(arg0, arg1);
}
@Override public Bitmap getBitmap(String arg0) {
return cache.get(arg0); } }); // // String requestUrl="http://g.hiphotos.baidu.com/image/h%3D200/sig" // + "n=09071f1a83d6277ff612353818391f63/500fd9f9d72a" // + "6059ab2b6abb2c34349b033bba5c.jpg"; String requestUrl="http://a.cphotos.bdimg.com/timg?image&quality=100&size=b4000_4000&sec=1464070836&di=24cd9be0e579b746da61081807f08a13&src=http://img4q.duitang.com/uploads/item/201506/06/20150606092701_U2CdL.thumb.700_0.jpeg"; ImageListener listener =ImageLoader.getImageListener(iv, R.drawable.ic_launcher, R.drawable.img01); 设置到imageview上,一开始有默认图片 loader.get(requestUrl, listener );
}
/** * 获得图片类型的内容使用 ImageRequest ImageRequest需要6个参数,分别是: i.要加载的图像路径 ii.加载图片成功后的监听器。在图像获取完毕后,volley会调用监听器的onResponse方法,并把图像作为参数
传入 iii/iv:是否要对获得的原始图像进行压缩。如果都指定0,则不进行任何压缩 v. 指定图像格式Bitmap.Config vi.指定错误时监听器。当加载过程中出现错误,会调用监听器的onErrorResponse方法并传入一个VolleyError对象封装错误信息。
*/ private void testImageRequest() { String url="http://g.hiphotos.baidu.com/image/h%3D200/sig" + "n=09071f1a83d6277ff612353818391f63/500fd9f9d72a" + "6059ab2b6abb2c34349b033bba5c.jpg"; //2、创建请求对象 ImageRequest request = new ImageRequest(url, new Listener<Bitmap>() {
@Override public void onResponse(Bitmap arg0) { iv.setImageBitmap(arg0);
} }, 0, 0, Bitmap.Config.ARGB_8888, new ErrorListener() {
@Override public void onErrorResponse(VolleyError arg0) { Log.i("tag", arg0.getMessage()); } });
queue.add(request);
}
/** * 获得字符串类型的内容使用 */ private void testStringRequest() { try { String city = URLEncoder.encode("广州", "utf8"); String url="http://op.juhe.cn/onebox/weather/query?cityname="+city+"&key=c68b7ad46d3a7e3e6dc9b8712f16e2a9"; //String url="http://web.juhe.cn:8080/finance/stock/hs?gid=sh000162&key=46baff1e778cd0f61eab0a2a79e1b9f4"; Listener<String> listener=new Listener<String>() {
@Override public void onResponse(String arg0) { //Log.i("tag", "arg0="+arg0); Gson gson =new Gson(); WeatherBean bean = gson.fromJson(arg0, WeatherBean.class); //Log.i("tag", "WeatherBean="+bean.toString()); } };
ErrorListener errorListener=new ErrorListener() {
@Override public void onErrorResponse(VolleyError arg0) { Log.i("tag", arg0.getMessage()); } }; //2、创建请求对象 StringRequest request = new StringRequest(url, listener, errorListener); //3、加入队列 queue.add(request); } catch (Exception e) { e.printStackTrace(); }
}
/** * * 4)自定义Request 写一个WeatherRequest,发起请求,请求结束以后,直接获得WeatherBean对象,作为参数传递到监听器的onResponse方法中。 * */ public class WeatherRequest extends Request<WeatherBean>{
Listener<WeatherBean> listener ; public WeatherRequest(String url,Listener<WeatherBean> listener ,ErrorListener errorlistener) { super(Method.GET, url, errorlistener); this.listener=listener; }
@Override protected void deliverResponse(WeatherBean arg0) { listener.onResponse(arg0);
}
@Override protected Response<WeatherBean> parseNetworkResponse( NetworkResponse arg0) { //服务器返回的原始结果 try { //字节数组转字符串 String string = new String(arg0.data,"utf8"); //转成对象 Gson gson = new Gson(); WeatherBean bean = gson.fromJson(string, WeatherBean.class); //转成Respones return Response.success(bean, HttpHeaderParser.parseCacheHeaders(arg0)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return Response.error(new VolleyError(e.getMessage())); } } } } |
|
public class WeatherBean {
String reason; Result result; int error_code;
public String getReason() { return reason; }
public void setReason(String reason) { this.reason = reason; }
public Result getResult() { return result; }
public void setResult(Result result) { this.result = result; }
public int getError_code() { return error_code; }
public void setError_code(int error_code) { this.error_code = error_code; }
@Override public String toString() { return "WeatherBean [reason=" + reason + ", result=" + result + ", error_code=" + error_code + "]"; }
public static class Result{ Data data;
public Data getData() { return data; }
public void setData(Data data) { this.data = data; }
@Override public String toString() { return "Result [data=" + data + "]"; }
public static class Data{ Realtime realtime; Life life; List<Weather> weather; PM25 pm25; String date; int isForeign;
@Override public String toString() { return "Data [realtime=" + realtime + ", life=" + life + ", weather=" + weather + ", pm25=" + pm25 + ", date=" + date + ", isForeign=" + isForeign + "]"; } public Realtime getRealtime() { return realtime; } public void setRealtime(Realtime realtime) { this.realtime = realtime; } public Life getLife() { return life; } public void setLife(Life life) { this.life = life; } public List<Weather> getWeather() { return weather; } public void setWeather(List<Weather> weather) { this.weather = weather; } public PM25 getPm25() { return pm25; } public void setPm25(PM25 pm25) { this.pm25 = pm25; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public int getIsForeign() { return isForeign; } public void setIsForeign(int isForeign) { this.isForeign = isForeign; } public static class Realtime{
@Override public String toString() { return "Realtime [wind=" + wind + ", time=" + time + ", weather=" + weather + ", dataUptime=" + dataUptime + ", date=" + date + ", city_code=" + city_code + ", city_name=" + city_name + ", week=" + week + ", moon=" + moon + "]"; }
public Wind getWind() { return wind; }
public void setWind(Wind wind) { this.wind = wind; }
public String getTime() { return time; }
public void setTime(String time) { this.time = time; }
public Weather getWeather() { return weather; }
public void setWeather(Weather weather) { this.weather = weather; }
public long getDataUptime() { return dataUptime; }
public void setDataUptime(long dataUptime) { this.dataUptime = dataUptime; }
public String getDate() { return date; }
public void setDate(String date) { this.date = date; }
public String getCity_code() { return city_code; }
public void setCity_code(String city_code) { this.city_code = city_code; }
public String getCity_name() { return city_name; }
public void setCity_name(String city_name) { this.city_name = city_name; }
public int getWeek() { return week; }
public void setWeek(int week) { this.week = week; }
public String getMoon() { return moon; }
public void setMoon(String moon) { this.moon = moon; }
Wind wind; String time; Weather weather; long dataUptime; String date; String city_code; String city_name; int week; String moon;
public static class Wind{ String windspeed; String direct; String power; String offset; public String getWindspeed() { return windspeed; } public void setWindspeed(String windspeed) { this.windspeed = windspeed; } public String getDirect() { return direct; } public void setDirect(String direct) { this.direct = direct; } public String getPower() { return power; } public void setPower(String power) { this.power = power; } public String getOffset() { return offset; } public void setOffset(String offset) { this.offset = offset; } @Override public String toString() { return "Wind [windspeed=" + windspeed + ", direct=" + direct + ", power=" + power + ", offset=" + offset + "]"; }
}
public static class Weather{ String humidity; String img; String info; String temperature; public String getHumidity() { return humidity; } public void setHumidity(String humidity) { this.humidity = humidity; } public String getImg() { return img; } public void setImg(String img) { this.img = img; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } public String getTemperature() { return temperature; } public void setTemperature(String temperature) { this.temperature = temperature; } @Override public String toString() { return "Weather [humidity=" + humidity + ", img=" + img + ", info=" + info + ", temperature=" + temperature + "]"; }
} } public static class Life{
String date; Info info;
@Override public String toString() { return "Life [date=" + date + ", info=" + info + "]"; }
public String getDate() { return date; }
public void setDate(String date) { this.date = date; }
public Info getInfo() { return info; }
public void setInfo(Info info) { this.info = info; }
public static class Info{
List<String> kongtiao; List<String> yundong; List<String> ziwaixian; List<String> ganmao; List<String> xiche; List<String> wuran; List<String> chuanyi; public List<String> getKongtiao() { return kongtiao; } public void setKongtiao(List<String> kongtiao) { this.kongtiao = kongtiao; } public List<String> getYundong() { return yundong; } public void setYundong(List<String> yundong) { this.yundong = yundong; } public List<String> getZiwaixian() { return ziwaixian; } public void setZiwaixian(List<String> ziwaixian) { this.ziwaixian = ziwaixian; } public List<String> getGanmao() { return ganmao; } public void setGanmao(List<String> ganmao) { this.ganmao = ganmao; } public List<String> getXiche() { return xiche; } public void setXiche(List<String> xiche) { this.xiche = xiche; } public List<String> getWuran() { return wuran; } public void setWuran(List<String> wuran) { this.wuran = wuran; } public List<String> getChuanyi() { return chuanyi; } public void setChuanyi(List<String> chuanyi) { this.chuanyi = chuanyi; } @Override public String toString() { return "Info [kongtiao=" + kongtiao + ", yundong=" + yundong + ", ziwaixian=" + ziwaixian + ", ganmao=" + ganmao + ", xiche=" + xiche + ", wuran=" + wuran + ", chuanyi=" + chuanyi + "]"; }
} } public static class Weather{
String date; Info info; String week; String nongli;
@Override public String toString() { return "Weather [date=" + date + ", info=" + info + ", week=" + week + ", nongli=" + nongli + "]"; }
public String getDate() { return date; }
public void setDate(String date) { this.date = date; }
public Info getInfo() { return info; }
public void setInfo(Info info) { this.info = info; }
public String getWeek() { return week; }
public void setWeek(String week) { this.week = week; }
public String getNongli() { return nongli; }
public void setNongli(String nongli) { this.nongli = nongli; }
public static class Info{ List<String> night; List<String> dawn; List<String> day;
} } public static class PM25{
String key; int show_desc; Pm25 pm25; String dateTime; String cityName;
@Override public String toString() { return "PM25 [key=" + key + ", show_desc=" + show_desc + ", pm25=" + pm25 + ", dateTime=" + dateTime + ", cityName=" + cityName + "]"; }
public String getKey() { return key; }
public void setKey(String key) { this.key = key; }
public int getShow_desc() { return show_desc; }
public void setShow_desc(int show_desc) { this.show_desc = show_desc; }
public Pm25 getPm25() { return pm25; }
public void setPm25(Pm25 pm25) { this.pm25 = pm25; }
public String getDateTime() { return dateTime; }
public void setDateTime(String dateTime) { this.dateTime = dateTime; }
public String getCityName() { return cityName; }
public void setCityName(String cityName) { this.cityName = cityName; }
public static class Pm25{ String curPm; String pm25; String pm10; int level; String quality; String des; public String getCurPm() { return curPm; } public void setCurPm(String curPm) { this.curPm = curPm; } public String getPm25() { return pm25; } public void setPm25(String pm25) { this.pm25 = pm25; } public String getPm10() { return pm10; } public void setPm10(String pm10) { this.pm10 = pm10; } public int getLevel() { return level; } public void setLevel(int level) { this.level = level; } public String getQuality() { return quality; } public void setQuality(String quality) { this.quality = quality; } public String getDes() { return des; } public void setDes(String des) { this.des = des; } @Override public String toString() { return "Pm25 [curPm=" + curPm + ", pm25=" + pm25 + ", pm10=" + pm10 + ", level=" + level + ", quality=" + quality + ", des=" + des + "]"; }
} }
} } } |