package xiaosi.WeatherForecast;
import java.io.StringReader;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
public class WeatherForecastActivity extends Activity
{
private Button button = null;
private EditText edit = null;
private TextView weatherCT = null;
private TextView weatherCondition = null;
private TextView forecastWeather1 = null;
private TextView forecastWeather2 = null;
private TextView forecastWeather3 = null;
private TextView forecastWeather4 = null;
private TextView text = null;
private ImageView forecastIcon1 = null;
private ImageView forecastIcon2 = null;
private ImageView forecastIcon3 = null;
private ImageView forecastIcon4 = null;
private ImageView weatherConditionIcon = null;
private WeatherConditions weatherConditions = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}
private void init()
{
button = (Button) findViewById(R.id.search);
button.setOnClickListener(new searchListener());
edit = (EditText) findViewById(R.id.edit);
weatherCT = (TextView) findViewById(R.id.weatherCT);
weatherCondition = (TextView) findViewById(R.id.weatherCondition);
forecastWeather1 = (TextView) findViewById(R.id.forecastWeather1);
forecastWeather2 = (TextView) findViewById(R.id.forecastWeather2);
forecastWeather3 = (TextView) findViewById(R.id.forecastWeather3);
forecastWeather4 = (TextView) findViewById(R.id.forecastWeather4);
text = (TextView) findViewById(R.id.text);
weatherConditionIcon = (ImageView) findViewById(R.id.weatherConditionIcon);
forecastIcon1 = (ImageView) findViewById(R.id.forecastIcon1);
forecastIcon2 = (ImageView) findViewById(R.id.forecastIcon2);
forecastIcon3 = (ImageView) findViewById(R.id.forecastIcon3);
forecastIcon4 = (ImageView) findViewById(R.id.forecastIcon4);
weatherConditions = new WeatherConditions();
}
private class searchListener implements OnClickListener
{
@Override
public void onClick(View v)
{
String searchContent = edit.getText().toString().trim();
System.out.println("城市:" + searchContent);
try
{
//XML解析
String weatherXML = WeatherUtils.getWeatherXML(searchContent);
SAXParserFactory saxFactory = SAXParserFactory.newInstance();
XMLReader xmlReader = saxFactory.newSAXParser().getXMLReader();
MyContentHandler contentHandler = new MyContentHandler();
//把解析出来的值复制给weatherConditions对象
contentHandler.setWeather(weatherConditions);
xmlReader.setContentHandler(contentHandler);
xmlReader.parse(new InputSource(new StringReader(weatherXML)));
//UI界面显示
setWeather();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
public void setWeather()
{
// 当前天气预报
weatherCT.setText(weatherConditions.getCity() + "\t\t\t\t" + weatherConditions.getCurrentTime());
String currentWeather = weatherConditions.getCurrentCondition() + "\n摄氏温度:"
+ weatherConditions.getCurrentCTemperature() + "°C|华氏温度:" + weatherConditions.getCurrentFTemperature()
+ "℉\n" + weatherConditions.getCurrentWind() + "\n" + weatherConditions.getCurrentHumidity();
weatherCondition.setText(currentWeather);
Bitmap bitmap = WeatherUtils.getWeatherConditionIcon("http://www.google.com/"
+ weatherConditions.getCurrentIcon());
weatherConditionIcon.setImageBitmap(bitmap);
text.setText("未来四天天气预报");
// 未来四天
// 第一天
Bitmap bitmap1 = WeatherUtils.getWeatherConditionIcon("http://www.google.com/"
+ weatherConditions.getForecastIcon(1));
forecastIcon1.setImageBitmap(bitmap1);
forecastWeather1.setText(weatherConditions.getForecastWeek(1) + "\n"
+ weatherConditions.getForecastCondition(1) + "\n" + weatherConditions.getForecastLowTemperature(1)
+ "°C~" + weatherConditions.getForecastHighTemperature(1) + "°C");
// 第二天
Bitmap bitmap2 = WeatherUtils.getWeatherConditionIcon("http://www.google.com/"
+ weatherConditions.getForecastIcon(2));
forecastIcon2.setImageBitmap(bitmap2);
forecastWeather2.setText(weatherConditions.getForecastWeek(2) + "\n"
+ weatherConditions.getForecastCondition(2) + "\n" + weatherConditions.getForecastLowTemperature(2)
+ "°C~" + weatherConditions.getForecastHighTemperature(2) + "°C");
// 第三天
Bitmap bitmap3 = WeatherUtils.getWeatherConditionIcon("http://www.google.com/"
+ weatherConditions.getForecastIcon(3));
forecastIcon3.setImageBitmap(bitmap3);
forecastWeather3.setText(weatherConditions.getForecastWeek(3) + "\n"
+ weatherConditions.getForecastCondition(3) + "\n" + weatherConditions.getForecastLowTemperature(3)
+ "°C~" + weatherConditions.getForecastHighTemperature(3) + "°C");
// 第四天
Bitmap bitmap4 = WeatherUtils.getWeatherConditionIcon("http://www.google.com/"
+ weatherConditions.getForecastIcon(4));
forecastIcon4.setImageBitmap(bitmap4);
forecastWeather4.setText(weatherConditions.getForecastWeek(4) + "\n"
+ weatherConditions.getForecastCondition(4) + "\n" + weatherConditions.getForecastLowTemperature(4)
+ "°C~" + weatherConditions.getForecastHighTemperature(4) + "°C");
}
}
- 1
- 2
前往页