package com.way.weather;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.way.apapter.WeatherPagerAdapter;
import com.way.app.Application;
import com.way.bean.City;
import com.way.bean.Pm2d5;
import com.way.bean.SimpleWeather;
import com.way.bean.SimpleWeatherinfo;
import com.way.bean.Weather;
import com.way.bean.Weatherinfo;
import com.way.db.CityDB;
import com.way.fragment.FirstWeatherFragment;
import com.way.fragment.SecondWeatherFragment;
import com.way.indicator.CirclePageIndicator;
import com.way.util.ConfigCache;
import com.way.util.IphoneDialog;
import com.way.util.L;
import com.way.util.NetUtil;
import com.way.util.SharePreferenceUtil;
import com.way.util.T;
import com.way.util.TimeUtil;
public class MainActivity extends FragmentActivity implements
Application.EventHandler, OnClickListener {
public static final String UPDATE_WIDGET_WEATHER_ACTION = "com.way.action.update_weather";
public static final String WEATHER_SIMPLE_URL = "http://www.weather.com.cn/data/sk/";// 简要天气信息
public static final String WEATHER_BASE_URL = "http://m.weather.com.cn/data/";// 详细天气
public static final String PM2D5_BASE_URL = "http://www.pm25.in/api/querys/pm2_5.json?city=SHENZHEN&token=HUL7sQBaUKVvgWzdKdTB&stations=no";
private static final String WEATHER_INFO_FILENAME = "_weather.json";
private static final String SIMPLE_WEATHER_INFO_FILENAME = "_simple_weather.json";
private static final String PM2D5_INFO_FILENAME = "_pm2d5.json";
private static final int LOACTION_OK = 0;
private static final int ON_NEW_INTENT = 1;
private static final int UPDATE_EXISTS_CITY = 2;
private static final int GET_WEATHER_RESULT = 3;
private LocationClient mLocationClient;
private CityDB mCityDB;
private SharePreferenceUtil mSpUtil;
private Application mApplication;
private City mCurCity;
private Weatherinfo mCurWeatherinfo;
private SimpleWeatherinfo mCurSimpleWeatherinfo;
private Pm2d5 mCurPm2d5;
private Gson mGson;
private ImageView mCityManagerBtn, mUpdateBtn, mLocationBtn, mShareBtn;
private ProgressBar mUpdateProgressBar;
private TextView mTitleTextView;
private City mNewIntentCity;
private WeatherPagerAdapter mWeatherPagerAdapter;
private TextView cityTv, timeTv, humidityTv, weekTv, pmDataTv, pmQualityTv,
temperatureTv, climateTv, windTv;
private ImageView weatherImg, pmImg;;
private ViewPager mViewPager;
private List<Fragment> fragments;
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case LOACTION_OK:
String cityName = (String) msg.obj;
L.i("cityName = " + cityName);
mCurCity = mCityDB.getCity(cityName);
L.i(mCurCity.toString());
mSpUtil.setCity(mCurCity.getCity());
cityTv.setText(mCurCity.getCity());
updateWeather(true);
break;
case ON_NEW_INTENT:
mCurCity = mNewIntentCity;
mSpUtil.setCity(mCurCity.getCity());
cityTv.setText(mCurCity.getCity());
updateWeather(true);
break;
case UPDATE_EXISTS_CITY:
String sPCityName = mSpUtil.getCity();
mCurCity = mCityDB.getCity(sPCityName);
updateWeather(false);
break;
case GET_WEATHER_RESULT:
updateWeatherInfo();
updatePm2d5Info();
updateWidgetWeather();
mUpdateBtn.setVisibility(View.VISIBLE);
mUpdateProgressBar.setVisibility(View.GONE);
break;
default:
break;
}
}
};
private void updateWidgetWeather() {
sendBroadcast(new Intent(UPDATE_WIDGET_WEATHER_ACTION));
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
initView();
}
private void startActivityForResult() {
Intent i = new Intent(this, SelectCtiyActivity.class);
startActivityForResult(i, 0);
}
private void initView() {
mCityManagerBtn = (ImageView) findViewById(R.id.title_city_manager);
mUpdateBtn = (ImageView) findViewById(R.id.title_update_btn);
mShareBtn = (ImageView) findViewById(R.id.title_share);
mLocationBtn = (ImageView) findViewById(R.id.title_location);
mCityManagerBtn.setOnClickListener(this);
mUpdateBtn.setOnClickListener(this);
mShareBtn.setOnClickListener(this);
mLocationBtn.setOnClickListener(this);
mShareBtn.setVisibility(View.GONE);
mUpdateProgressBar = (ProgressBar) findViewById(R.id.title_update_progress);
mTitleTextView = (TextView) findViewById(R.id.title_city_name);
cityTv = (TextView) findViewById(R.id.city);
timeTv = (TextView) findViewById(R.id.time);
timeTv.setText(TimeUtil.getDay(mSpUtil.getTimeSamp())
+ mSpUtil.getTime() + "发布");
humidityTv = (TextView) findViewById(R.id.humidity);
weekTv = (TextView) findViewById(R.id.week_today);
weekTv.setText("今天 " + TimeUtil.getWeek(0, TimeUtil.XING_QI));
pmDataTv = (TextView) findViewById(R.id.pm_data);
pmQualityTv = (TextView) findViewById(R.id.pm2_5_quality);
pmImg = (ImageView) findViewById(R.id.pm2_5_img);
temperatureTv = (TextView) findViewById(R.id.temperature);
climateTv = (TextView) findViewById(R.id.climate);
windTv = (TextView) findViewById(R.id.wind);
weatherImg = (ImageView) findViewById(R.id.weather_img);
fragments = new ArrayList<Fragment>();
fragments.add(new FirstWeatherFragment());
fragments.add(new SecondWeatherFragment());
mViewPager = (ViewPager) findViewById(R.id.viewpager);
mWeatherPagerAdapter = new WeatherPagerAdapter(
getSupportFragmentManager(), fragments);
mViewPager.setAdapter(mWeatherPagerAdapter);
((CirclePageIndicator) findViewById(R.id.indicator))
.setViewPager(mViewPager);
if (TextUtils.isEmpty(mSpUtil.getCity())) {
if (NetUtil.getNetworkState(this) != NetUtil.NETWORN_NONE) {
mLocationClient.start();
mLocationClient.requestLocation();
T.showShort(this, "正在定位...");
mUpdateBtn.setVisibility(View.GONE);
mUpdateProgressBar.setVisibility(View.VISIBLE);
} else {
T.showShort(this, R.string.net_err);
}
} else {
mHandler.sendEmptyMessage(UPDATE_EXISTS_CITY);
}
}
private void initData() {
Application.mListeners.add(this);
mApplication = Application.getInstance();
mSpUtil = mApplication.getSharePreferenceUtil();
mLocationClient = mApplication.getLocationClient();
mLocationClient.registerLocationListener(mLocationListener);
mCityDB = mApplication.getCityDB();
// 不转换没有 @Expose 注解的字段
mGson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation()
.create();
}
private void updateWeather(final boolean isRefresh) {
if (NetUtil.getNetworkState(this) == NetUtil.NETWORN_NONE && isRefresh) {
T.showLong(this, R.string.net_err);
return;
}
if (mCurCity == null) {
T.showLong(mApplication, "未找到此城市,请重新定位或选择...");
return;
}
// T.showShort(this, "正在刷新天气...");
timeTv.setText("同步中...");
mTitleTextView.setText(mCurCity.getCity
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android仿墨迹天气应用源码 (207个子文件)
city.db 123KB
android-support-v4.jar 384KB
gson-2.2.4.jar 186KB
pinyin4j-2.5.0.jar 184KB
locSDK_3.3.jar 98KB
MainActivity.java 20KB
CirclePageIndicator.java 16KB
Application.java 11KB
SelectCtiyActivity.java 8KB
Lunar.java 7KB
WeatherUpdateService.java 6KB
Weatherinfo.java 5KB
CityAdapter.java 4KB
BladeView.java 4KB
FirstWeatherFragment.java 3KB
SecondWeatherFragment.java 3KB
PinnedHeaderListView.java 3KB
ConfigCache.java 3KB
WeatherWidget.java 3KB
SearchCityAdapter.java 3KB
CityDB.java 2KB
T.java 2KB
IphoneDialog.java 2KB
ToPinYin.java 2KB
FileUtils.java 2KB
PageIndicator.java 2KB
SharePreferenceUtil.java 2KB
City.java 2KB
SimpleWeatherinfo.java 1KB
TimeUtil.java 1KB
Pm2d5.java 1KB
L.java 1008B
NetUtil.java 903B
WeatherPagerAdapter.java 573B
Weather.java 391B
SimpleWeather.java 318B
biz_plugin_weather_shenzhen_bg.jpg 76KB
base_action_bar_back_divider.jpg 1KB
base_action_bar_back_divider.jpg 1KB
w17.png 53KB
w16.png 52KB
w5.png 51KB
w6.png 50KB
w15.png 49KB
w19.png 49KB
w13.png 48KB
w34.png 47KB
w4.png 46KB
w3.png 46KB
w14.png 46KB
w33.png 45KB
w9.png 44KB
w8.png 44KB
w10.png 43KB
w7.png 42KB
w36.png 41KB
w20.png 41KB
na.png 34KB
w1.png 32KB
w31.png 32KB
w35.png 25KB
w29.png 25KB
w0.png 23KB
w18.png 22KB
w32.png 21KB
biz_plugin_weather_sunny.png 19KB
w2.png 18KB
w30.png 15KB
widget_4x2_grey.png 13KB
ic_launcher.png 11KB
ic_launcher.png 11KB
title_city.png 6KB
biz_plugin_weather_selectcity_empty.png 5KB
biz_plugin_weather_zhenxue.png 5KB
biz_plugin_weather_zhenyu.png 4KB
biz_plugin_weather_leizhenyubingbao.png 4KB
biz_plugin_weather_tedabaoyu.png 4KB
biz_plugin_weather_dabaoyu.png 4KB
nw6.png 4KB
biz_plugin_weather_baoxue.png 4KB
biz_plugin_weather_dayu.png 4KB
biz_plugin_weather_daxue.png 4KB
nw8.png 4KB
focused.png 4KB
nw9.png 4KB
biz_plugin_weather_baoyu.png 4KB
biz_plugin_weather_greater_300.png 4KB
biz_plugin_weather_yujiaxue.png 4KB
biz_plugin_weather_yin.png 4KB
nofocused.png 4KB
biz_plugin_weather_xiaoyu.png 4KB
biz_plugin_weather_zhongxue.png 4KB
biz_plugin_weather_zhongyu.png 4KB
nw3.png 4KB
biz_plugin_weather_leizhenyu.png 4KB
biz_plugin_weather_xiaoxue.png 3KB
nw0.png 3KB
biz_plugin_weather_201_300.png 3KB
base_action_bar_action_city.png 3KB
nw2.png 3KB
共 207 条
- 1
- 2
- 3
资源评论
kcabmai
- 粉丝: 34
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功