android通过google API获取天气信息(转载) http://www.oschina.net/code/snippet_149945_6389
[代码][Java]代码
001 public class WeatherActivity extends Activity{
002 private TextViewtxCity;
003 private ButtonbtnSearch;
004 private Handlerweatherhandler;
005 private DialogprogressDialog;
006 private Timertimer;
007 /** Calledwhentheactivityisfirstcreated. */
008 @Override
009 public void onCreate(BundlesavedInstanceState){
010 super .onCreate(savedInstanceState);
011 setContentView(R.layout.main);
012 timer = new Timer();
013 txCity = (TextView)findViewById(R.id.txCity);
014 btnSearch = (Button)findViewById(R.id.btnSearch);
015 progressDialog = new AlertDialog.Builder( this )
016 .setTitle( " 读取数据中 " )
017 .setMessage( " 正在加载数据,请稍等 " )
018 .create();
019
020 weatherhandler = new Handler(){
021 public void handleMessage(Messagemsg){
022 final StringcityName = txCity.getText().toString().trim();
023 searchWeather(cityName);
024 progressDialog.hide();
025 }
026 };
027
028 btnSearch.setOnClickListener( new OnClickListener(){
029
030 @Override
031 public void onClick(Viewv){
032 progressDialog.show();
033 timer.schedule( new TimerTask(){
034 @Override
035 public void run(){
036 Messagemsg = new Message();
037 msg.setTarget(weatherhandler);
038 msg.sendToTarget();
039 }
040 }, 100 );
041 }
042 });
043 }
044 private void searchWeather(Stringcity){
045 SAXParserFactoryspf = SAXParserFactory.newInstance();
046 try {
047 SAXParsersp = spf.newSAXParser();
048 XMLReaderreader = sp.getXMLReader();
049 XmlHandlerhandler = new XmlHandler();
050 reader.setContentHandler(handler);
051 URLurl = new URL( " http://www.google.com/ig/api?hl=zh-cn&weather= " + URLEncoder.encode(city));
052 InputStreamis = url.openStream();
053 InputStreamReaderisr = new InputStreamReader(is, " GBK " );
054 InputSourcesource = new InputSource(isr);
055 reader.parse(source);
056 List < Weather > weatherList = handler.getWeatherList();
057 TableLayouttable = (TableLayout)findViewById(R.id.table);
058 table.removeAllViews();
059 for (Weatherweather:weatherList){
060 TableRowrow = new TableRow( this );
061 row.setLayoutParams( new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
062 row.setGravity(Gravity.CENTER_VERTICAL);
063 ImageViewimg = new ImageView( this );
064 img.setImageDrawable(loadImage(weather.getImageUrl()));
065 img.setMinimumHeight( 80 );
066 row.addView(img);
067 TextViewday = new TextView( this );
068 day.setText(weather.getDay());
069 day.setGravity(Gravity.CENTER_HORIZONTAL);
070 row.addView(day);
071 TextViewtemp = new TextView( this );
072 temp.setText(weather.getLowTemp() + " ℃- " + weather.getHighTemp() + " " );
073 temp.setGravity(Gravity.CENTER_HORIZONTAL);
074 row.addView(temp);
075 TextViewcondition = new TextView( this );
076 condition.setText(weather.getCondition());
077 condition.setGravity(Gravity.CENTER_HORIZONTAL);
078 row.addView(condition);
079 table.addView(row);
080 }
081 } catch (Exceptione){
082 e.printStackTrace();
083 new AlertDialog.Builder( this )
084 .setTitle( " 解析错误 " )
085 .setMessage( " 获取天气数据失败,请稍候再试。 " )
086 .setNegativeButton( " 确定 " , null )
087 .show();
088 }
089
090 }
091 private DrawableloadImage(StringimageUrl){
092 try {
093 return Drawable.createFromStream((InputStream) new URL( " http://www.google.com/ " + imageUrl).getContent(), " test " );
094 } catch (MalformedURLExceptione){
095 e.printStackTrace();
096 } catch (IOExceptione){
097 e.printStackTrace();
098 }
099 return null ;
100 }
101 }

更多相关文章

  1. JSONObject 保存和传送 数组数据 ,如int[] ,double[] ,String[]..
  2. Android原生开发:两种提示框
  3. 浅谈Android(安卓)数据库的使用
  4. Android(安卓)Appliction 使用解析
  5. android TextView控件文字下划线
  6. android 打开GPS的2种方式
  7. android SDK开发 -- TitleBar封装(二)
  8. Android(安卓)让一个Service开机自动启动
  9. 关于自定义无限轮播图_Android

随机推荐

  1. Android跟蓝牙耳机建立连接有两种方式
  2. Android:媒体播放器
  3. 你不应该错过的 Android(安卓)全方位面试
  4. Android实现直接播放麦克风采集到的声音
  5. Android折腾记——Linux on Android在And
  6. Zygote家的大儿子 —— SystemServer
  7. Android第二十五课 native程序异常crash
  8. 在Android中使用Kotlin实现发送验证码60
  9. 资料描述Android依赖注入:Google Guice on
  10. Android开发FAQ