原文:Android经典项目开发之天气APP实例分享

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mzc186/article/details/53819371

引言

  由于系统的天气App比较简陋,而从Android市场下载下来的天气App比如墨迹天气界面虽然美观,数据也比较详实,但是却非常多乱七八糟的广告,一不小心点错了就后台帮你偷偷下载。作为Android开发者当然理解这种利益诉求,但从一个用户的角度而言,我却认为这已经严重影响用户体验了。因此,才有了卸载墨迹天气的下文。

  后来因为考虑到自己从事安卓开发已经有一段时间了,虽然大大小小的项目也做过一些了,但是却还没有从头到尾完全独立开发过一个属于自己的App,考虑到天气App涉及知识面广,综合性强,作为android经典开发项目之一,比较能强化和深入自己对知识的理解以及锻炼提升自己的知识运用水平,加上上文提到的那些因素,因此就有了完全属于自己的天气App项目iWeather。

关于iWeather项目的开源

我的iWeather项目现在已经在github开源,感兴趣的朋友可以参考借鉴,访问我的iWeather项目的github地址.点击我访问我的github上的iWeather项目.

iWeather项目的特点

  • 较详实的天气数据

  • 较美观合理易用的UI

  • 支持同时显示多个城市的天气

  • 支持下拉刷新

  • 背景随机切换

  • 绝对纯净简洁安全,无广告(我不会告诉你其实是没啥广告价值)

iWeather天气App截图

关于App数据来源

  • 天气数据来源于和风天气,我是通过百度API Store来调用的,这个和风天气免费版提供的数据还比较多,但不是很稳定,晚上12点前后虽然可以访问,但其实数据没有按照白天的频率更新。每天可以访问3000次。总的来说对于免费的天气接口,和风天气目前还算是比较好的一个选择。

  • 图标和图片资源,有的来源于百度,有的来源于谷歌提供的material design通用图标,有的是把其它app的图标资源copy过来用(ps:对于非商业目的我觉得没什么问题,而且要找一套风格统一且美观大方的图标不是很容易,再说多把时间花在编程上才是正事)。

iWeather项目待改进方面

  • 还未提供一个用于在桌面显示天气的widget插件

  • 可以考虑将节气和节日也恰当地集成进去,方便用户

  • 城市选择列表可以考虑添加侧栏字母索引排序,还有搜索添加的功能。虽然每个城市列表item数不多,滑动点击选择没有太大影响效率,但添加这两项功能无疑能改进用户体验。

  • 没有灾害预警功能,降雨小时预报(不过这个受限于天气接口)

  • 可以考虑将台风实时路径发布系统集成进去,我目前还没有发现有这样功能的天气App,其实这还是有需求的,在沿海城市厦门生活的我今年(2016年)强烈感受到查看台风跑哪了不能直接从天气App直接查看真是一大失望(其实不难,只是一个web页面,但是要考虑到webView的内存泄漏问题)

  • 由于城市接口用的是中央气象台的,所以目前只支持查看中国的天气,和风天气接口本身是支持全球天气的。

  • 背景可以更换成象征此时天气的图片而不是目前随机的风景图片,这可能会有更好的体验(ps:不过这种图片要找一套比较理想的还是挺难的)。又或者可以学习墨迹天气,背景不仅对应相应的天气状况变化,而且还是动态的,感觉效果挺好的。不过这些都要自己对每一种天气状况做一个自定义View或者动画,时间开销会比较大,性价比会比较低。

关于iWeather App的下载

  • 由于将应用上架到国内的App市场现在都要实名制,要上传手持身份证的照片,觉得麻烦又有点担心信息泄露,而且我现在这个应用也不是针对消费市场,更多的是出于与各位Android开发者同行相互学习交流的目的,因此就不打算上架到国内的应用市场了。想要下载试用的朋友,可以移步到我的github地址。点击我从github下载iWeather天气App. 更新:之前有上传资源到CSDN,但由于在CSDN上更新资源挺麻烦的,往后如果有版本更新统一都在github上了

  • 由于该天气接口每个百度API key每天所能访问的次数有限(每天3000次),因此不建议把从该链接下载的App作长期使用,如果有需要,你可以移步去iWeather项目的github地址(见上)去fork,然后将netutil包下面的HttpUtil.java中的百度API key改成你自己的就OK了。

  • 注意,该App只支持API 15及以上,即android 4.0.3及以上版本。

Android经典项目开发之天气APP实例分享的更多相关文章

  1. Android 实践项目开发 总结

      Android 实践项目开发 总结 课程:移动平台应用开发实践  班级:201592  姓名:杨凤  学号:20159213 成绩:___________       指导老师:娄嘉鹏       ...

  2. Android 实践项目开发二

    在地图开发中项目中,我这周主要完成的任务是和遇到的问题是以下几个方面. 1.在本次的项目中主要是利用百度地图的.jar包实现地图的定位与搜索功能,需要在百度地图开发中心网站取得 密钥,并下载相关.ja ...

  3. Android 实践项目开发一

    这次做的项目是—手机地图系统 本次实验的功能是,为用户提供需要的目标定位系统定位处理,即用户设置一个目标后, 可以在后台启动一个Service,能够定时读取GPS数据已获得用户当前所在的位置信息, 并 ...

  4. 基于Android开发的天气预报app(源码下载)

    原文:基于Android开发的天气预报app(源码下载) 基于AndroidStudio环境开发的天气app -系统总体介绍:本天气app使用AndroidStudio这个IDE工具在Windows1 ...

  5. fir.im Weekly - 600个 Android 开源项目汇总

    本期 Weekly 收集了一些热度资源,包含 Android.iOS 开发工具与源码分享,程序员也应该了解的产品运营.设计等 Tips ,希望对你有帮助. 600个Android开源项目汇总 勤劳的 ...

  6. Android中制作自定义dialog对话框的实例

    http://www.jb51.net/article/83319.htm   这篇文章主要介绍了Android中制作自定义dialog对话框的实例分享,安卓自带的Dialog显然不够用,因而我们要继 ...

  7. [Android教程] Cordova开发App入门(一)创建android项目

    前言 Apache Cordova是一个开源的移动开发框架.允许使用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发. 应用在每个平台的具体执行被封装了起来,并依靠符合标准的A ...

  8. [Android]天气App 2 项目搭建

       对于天气App,为了简化一些功能,暂时模仿MUUI系统提供的那个App.    本项目需要引入本人经常使用的一个工具库DroidTool,这个是本人根据工作中,收集到一些工具类,下载地址.    ...

  9. 【Android 应用开发】GitHub 优秀的 Android 开源项目

    原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea 主要介绍那些不错个性化的View,包括Lis ...

随机推荐

  1. UE4 Editor快捷键(ShortCut Key)

    转载请注明出处,所有权利保留. Unreal Engine4的快捷键现在无官方文档,因为他们工作比较忙啊. 记录时间:2014-10-15 现在自己整理一个,仅供参考. 因为他们的team成员说的还有 ...

  2. 如何解决安卓SDK无法下载Package的问题 分类: H1_ANDROID 2013-09-09 10:26 1199人阅读 评论(0) 收藏

    转载自:http://jingyan.baidu.com/article/8275fc86dbe84046a03cf69d.html 有些用户在安装好Android SDK后,打开Android SD ...

  3. erlang一些参考资源

    1. erlang非业余研究 http://blog.yufeng.info/ 2.code.wang http://www.cnblogs.com/codew/ 3.码农生涯 http://www. ...

  4. [React] Use React Context to Manage Application State Through Routes

    We’ll create a Router component that will wrap our application and manage all URL related state. We’ ...

  5. 【codeforces 604D】Moodular Arithmetic

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  6. JS----checked----checked选中和未选中的获取

    , allValue.length - 1); allValue = allValue.replace(/[ ]/g, ""); var checkedIds = allValue ...

  7. Qt的paint函数重写,以及QPaint给一条线绘制箭头

    直接代码: QPainter *painter; static const double Pi = 3.14159265358979323846264338327950288419717; stati ...

  8. Quartz 入门详解 专题

    Cron-Expressions are used to configure instances of CronTrigger. Cron-Expressions are strings that a ...

  9. RabbitMQ 延迟队列实现订单支付结果异步阶梯性通知

    在第三方支付中,例如支付宝.或者微信,对于订单请求,第三方支付系统采用的是消息同步返回.异步通知+主动补偿查询的补偿机制. 由于互联网通信的不可靠性,例如双方网络.服务器.应用等因素的影响,不管是同步 ...

  10. Thermal management in a gaming machine

    BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to wager gaming ...