day5.24总结_Volley框架(加载json字符串和图片)

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 + "]";

                                               }

 

                                     }

                            }

 

                   }

         }

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值