当前位置: 移动技术网 > IT编程>移动开发>Android > android通过google api获取天气信息示例

android通过google api获取天气信息示例

2019年07月24日  | 移动技术网IT编程  | 我要评论

真爱之吻男主角,程莉,运行启动项

android通过google api获取天气信息

复制代码 代码如下:

public class weatheractivity extends activity {
 private textview txcity;
 private button btnsearch;
 private handler weatherhandler;
 private dialog progressdialog;
 private timer timer;
    /** called when the activity is first created. */
    @override
    public void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.main);
        timer = new timer();
        txcity = (textview)findviewbyid(r.id.txcity);
        btnsearch = (button)findviewbyid(r.id.btnsearch);
        progressdialog = new alertdialog.builder(this)
        .settitle("读取数据中")
        .setmessage("正在加载数据,请稍等")
        .create();

        weatherhandler = new handler(){
         public void handlemessage(message msg){
          final string cityname = txcity.gettext().tostring().trim();
          searchweather(cityname);
          progressdialog.hide();
         }
        };

        btnsearch.setonclicklistener(new onclicklistener() {

   @override
   public void onclick(view v) {
    progressdialog.show();
    timer.schedule(new timertask() {
     @override
     public void run() {
      message msg = new message();
      msg.settarget(weatherhandler);
      msg.sendtotarget();
     }
    },100);
   }
  });
    }
    private void searchweather(string city){
     saxparserfactory spf = saxparserfactory.newinstance();
     try {
   saxparser sp = spf.newsaxparser();
   xmlreader reader = sp.getxmlreader();
   xmlhandler handler = new xmlhandler();
   reader.setcontenthandler(handler);
   url url = new url("http://www.google.com/ig/api?hl=zh-cn&weather="+urlencoder.encode(city));
   inputstream is = url.openstream();
   inputstreamreader isr = new inputstreamreader(is, "gbk");
   inputsource source = new inputsource(isr);
   reader.parse(source);
   list<weather>weatherlist = handler.getweatherlist();
   tablelayout table = (tablelayout)findviewbyid(r.id.table);
   table.removeallviews();
   for(weather weather:weatherlist){
    tablerow row = new tablerow(this);
    row.setlayoutparams(new layoutparams(layoutparams.fill_parent,layoutparams.wrap_content));
    row.setgravity(gravity.center_vertical);
    imageview img = new imageview(this);
    img.setimagedrawable(loadimage(weather.getimageurl()));
    img.setminimumheight(80);
    row.addview(img);
    textview day = new textview(this);
    day.settext(weather.getday());
    day.setgravity(gravity.center_horizontal);
    row.addview(day);
    textview temp = new textview(this);
    temp.settext(weather.getlowtemp()+"℃-"+weather.gethightemp()+"℃");
    temp.setgravity(gravity.center_horizontal);
    row.addview(temp);
    textview condition = new textview(this);
    condition.settext(weather.getcondition());
    condition.setgravity(gravity.center_horizontal);
    row.addview(condition);
    table.addview(row);
   }
  } catch (exception e) {
   e.printstacktrace();
   new alertdialog.builder(this)
    .settitle("解析错误")
    .setmessage("获取天气数据失败,请稍候再试。")
    .setnegativebutton("确定", null)
    .show();  
  }

    }
 private drawable loadimage(string imageurl) {
  try {
   return drawable.createfromstream((inputstream) new url("http://www.google.com/"+imageurl).getcontent(), "test");
  } catch (malformedurlexception e) {
   e.printstacktrace();
  } catch (ioexception e) {
   e.printstacktrace();
  }
  return null;
 }
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网