部分设计参考xcc3641的开源项目SeeWeather,在此表示感谢!
第一次开始这个项目是2014年4月份,我还在大二的时候,当时有一个程序设计实践课,想着简单点就选了天气预报这个题目,时隔两年又重新拾起,给它脱胎换骨,就是想拿他作为一个学习新知识的实战项目,期间也做过改动,比如曾经把网络请求模块从android-async-http改为Volley。
注意:隐私相关的key我没有提交,clone后需要自行申请和风天气和bmob的key才能运行,其他key可直接忽略。
- 开源不易,希望能给个Star鼓励
- 项目地址:https://github.com/ChanWong21/PonyWeather
- 有问题请提Issues
简介
小马天气是一款开源Android天气信息查询软件。
- 实景天气,寻找你身边的美景
- 多城市天气预报,记得提醒远方的TA
- 语音播报,一键听天气
- Material Design 设计风格,从未如此简约
- 自动夜间模式,更加贴心
更新说明
v 2.1
- 新增搜索城市
- 新增设置自动更新时间间隔
v 2.0
- 新增实景天气
- 新增城市管理
- 新增语音播报
- 支持自动夜间模式
v 1.5
- 重构代码,全新风格设计
- 增加支持国内全部县级以上城市可选
v 1.4
- 支持Android 6.0
下载地址
fir.im:http://fir.im/ponyweather
应用宝:http://android.myapp.com/myapp/detail.htm?apkName=me.wcy.weather
TODO
-
实景天气 -
城市管理 -
语音播报 -
自动夜间模式 - 桌面小部件
项目
公开API
- 天气数据:和风天气
- 定位服务:高德定位
- 语音合成:百度语音
- 云存储:Bmob后端云
开源技术
- Rxjava
- Retrofit
- ASimpleCache
- Android-Universal-Image-Loader
- android-floating-action-button
关键代码
网络请求RxJava+Retrofit
private void fetchDataFromNetWork(final CityEntity city) { Api.getIApi().getWeather(city.name, ApiKey.HE_KEY) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .filter(new Func1<WeatherData, Boolean>() { @Override public Boolean call(final WeatherData weatherData) { boolean success = weatherData.weathers.get(0).status.equals("ok"); return success; } }) .map(new Func1<WeatherData, Weather>() { @Override public Weather call(WeatherData weatherData) { return weatherData.weathers.get(0); } }) .doOnNext(new Action1<Weather>() { @Override public void call(Weather weather) { mACache.put(city.name, weather); SystemUtils.saveRefreshTime(WeatherActivity.this); } }) .subscribe(new Subscriber<Weather>() { ... updateView(weather); ... }); }
截图
资源均来自第三方,谨慎下载,前往第三方网站下载