Android Open Source - MyWeather Weather Activity






From Project

Back to project page MyWeather.

License

The source code is released under:

Apache License

If you think the Android project MyWeather listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package activity;
/*www  .  ja v  a  2 s .  co m*/
import service.AutoUpdateService;
import util.HttpCallbackListener;
import util.HttpUtil;
import util.Utility;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.myweather.app.R;

public class WeatherActivity extends Activity implements OnClickListener{
  
  private LinearLayout weatherInfoLayout;
  private TextView cityNameText;
  private TextView publishText;
  private TextView weatherDespText;
  private TextView temp1Text;
  private TextView temp2Text;
  private TextView currentDateText;
  private Button switchCity;
  private Button refreshWeather;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.weather_layout);
    weatherInfoLayout = (LinearLayout) findViewById(R.id.weather_info_layout);
    cityNameText = (TextView) findViewById(R.id.city_name);
    publishText = (TextView) findViewById(R.id.publish_text);
    weatherDespText = (TextView) findViewById(R.id.weather_desp);
    temp1Text = (TextView) findViewById(R.id.temp1);
    temp2Text = (TextView) findViewById(R.id.temp2);
    currentDateText = (TextView) findViewById(R.id.current_date);
    switchCity = (Button) findViewById(R.id.switch_city);
    refreshWeather = (Button) findViewById(R.id.refresh_weather);
    String countyCode = getIntent().getStringExtra("county_code");
    if(!TextUtils.isEmpty(countyCode)){
      publishText.setText("?????...");
      weatherInfoLayout.setVisibility(View.INVISIBLE);
      cityNameText.setVisibility(View.INVISIBLE);
      queryWeatherCode(countyCode);
    }else{
      showWeather();
    }
    switchCity.setOnClickListener(this);
    refreshWeather.setOnClickListener(this);
  }

  @Override
  public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.switch_city:
      Intent intent = new Intent(this, ChooseAreaActivity.class);
      intent.putExtra("from_weather_activity", true);
      startActivity(intent);
      finish();
      break;
    case R.id.refresh_weather:
      publishText.setText("?????...");
      SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
      String weatherCode = prefs.getString("weather_code", "");
      if(!TextUtils.isEmpty(weatherCode)){
        queryWeatherInfo(weatherCode);
      }
      break;
    default:
      break;
    }
  }
  
  /**
   * query county
   */
  private void queryWeatherCode(String countyCode){
    String address = "http://www.weather.com.cn/data/list3/city" + countyCode + ".xml";
    queryFromServer(address, "countyCode");
  }
  
  /**
   * query weather
   */
  private void queryWeatherInfo(String weatherCode){
    String address = "http://www.weather.com.cn/data/cityinfo/" + weatherCode + ".html";
    queryFromServer(address, "weatherCode");
  }
  
  /**
   * query from server
   */
  private void queryFromServer(final String address, final String type){
    HttpUtil.sendHttpRequest(address, new HttpCallbackListener() {
      
      @Override
      public void onFinish(String response) {
        // TODO Auto-generated method stub
        if("countyCode".equals(type)){
          if(!TextUtils.isEmpty(response)){
            String[] array = response.split("\\|");
            if(array != null && array.length == 2){
              String weatherCode = array[1];
              queryWeatherInfo(weatherCode);
            }
          }
        }else if("weatherCode".equals(type)){
          Utility.handleWeatherResponse(WeatherActivity.this, response);
          runOnUiThread(new Runnable() {
            
            @Override
            public void run() {
              // TODO Auto-generated method stub
              showWeather();
            }
          });
        }
      }
      
      @Override
      public void onError(Exception e) {
        // TODO Auto-generated method stub
        publishText.setText("??????");
      }
    });
  }
  
  /**
   * load weather info from sharedPreferences
   */
  private void showWeather(){
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    cityNameText.setText(prefs.getString("city_name", ""));
    temp1Text.setText(prefs.getString("temp1", ""));
    temp2Text.setText(prefs.getString("temp2", ""));
    weatherDespText.setText(prefs.getString("weather_desp", ""));
    publishText.setText("??" + prefs.getString("publish_time", "") + "????");
    currentDateText.setText(prefs.getString("current_date", ""));
    weatherInfoLayout.setVisibility(View.VISIBLE);
    cityNameText.setVisibility(View.VISIBLE);
    Intent intent = new Intent(this, AutoUpdateService.class);
    startService(intent);
  }
  
  
}




Java Source Code List

activity.ChooseAreaActivity.java
activity.WeatherActivity.java
db.MyWeatherDB.java
db.MyWeatherOpenHelper.java
model.City.java
model.County.java
model.Province.java
receiver.AutoUpdateReceiver.java
service.AutoUpdateService.java
util.HttpCallbackListener.java
util.HttpUtil.java
util.Utility.java