#趣米杯#码农天气--码农自己的天气APP(二)

本帖最后由 jnhoodlum 于 2013-12-30 18:51 编辑

本文参与趣米杯征文活动,如需转载请注明出处和作者

这一讲我们就主要实现一下码农天气的首页:
 

这个页面有城市名,当天的天气的logo ,当前温度,当前天气,湿度,风力,以及未来5 天的天气的预报数据,这些数据是从哪里得到的呢?


这个问题我找了很长时间,终于功夫不负有心人,让我在彩虹天气的strings.xml 里面找到了:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3.     <string name="app_name">彩虹天气</string>
  4.     <string name="loading_msg">正在努力加载天气信息 …</string>
  5.     <string name="widget_clock">彩虹天气-时钟2x1</string>
  6.     <string name="widget_today_weather_big">彩虹天气-当天4x1</string>
  7.     <string name="widget_4_weathers">彩虹天气-三天4x1</string>
  8.     <string name="widget_today_select">彩虹天气-自选2x1</string>
  9.     <string name="widget_4x2_weathers">彩虹时钟+天气4x2</string>
  10.     <string name="widget_weather_clock">彩虹时钟+天气4x1</string>
  11.     <string name="forecast_url">http://m.weather.com.cn/data/%s.html</string>
  12.     <string name="current_url">http://www.weather.com.cn/data/sk/%s.html</string>
  13. </resources>
复制代码
这个是我反解的彩虹天气的资源文件,最后2 行就是我们要使用的请求天气数据的接口。真是踏破铁鞋无觅处,得来全不费工夫!

对于第1 个接口,返回信息比较全面,也是以json 格式提供。请求北京的天气数据: http://m.weather.com.cn/data/101010100.html ,返回的格式如下(注意:// 是我添加的注释):
{"weatherinfo":{
// 基本信息
"city":" 北京","city_en":"beijing","date_y":"2013 12 30 ","date":"","week":" 星期一","fchh":"11","cityid":"101010100",
// 摄氏温度
"temp1":"8 ~-5 ","temp2":"8 ~-4 ","temp3":"9 ~-4 ","temp4":"8 ~-4 ","temp5":"7 ~-5 ","temp6":"6 ~-5 ",
// 华氏温度
"tempF1":"46.4 ~23 ","tempF2":"46.4 ~24.8 ","tempF3":"48.2 ~24.8 ","tempF4":"46.4 ~24.8 ","tempF5":"44.6 ~23 ","tempF6":"42.8 ~23 ",
// 天气描述
"weather1":" ","weather2":" ","weather3":" ","weather4":" ","weather5":" 晴转多云","weather6":" 多云转晴",
// 天气描述图片序号
"img1":"0","img2":"99","img3":"0","img4":"99","img5":"0","img6":"99","img7":"0","img8":"99","img9":"0","img10":"1","img11":"1","img12":"0","img_single":"0",
// 图片名称
"img_title1":" ","img_title2":" ","img_title3":" ","img_title4":" ","img_title5":" ","img_title6":" ","img_title7":" ","img_title8":" ","img_title9":" ","img_title10":" 多云","img_title11":" 多云","img_title12":" ","img_title_single":" ",
// 风速描述
"wind1":" 微风","wind2":" 北风3-4 级转微风","wind3":" 微风","wind4":" 微风","wind5":" 微风","wind6":" 微风","fx1":" 微风","fx2":" 微风",
// 风速级别描述
"fl1":" 小于3 ","fl2":"3-4 级转小于3 ","fl3":" 小于3 ","fl4":" 小于3 ","fl5":" 小于3 ","fl6":" 小于3 ",
// 今天穿衣指数
"index":" ","index_d":" 天气冷,建议着棉服、羽绒服、皮夹克加羊毛衫等冬季服装。年老体弱者宜着厚棉衣、冬大衣或厚羽绒服。",
//48 小时穿衣指数
"index48":" ","index48_d":" 天气冷,建议着棉服、羽绒服、皮夹克加羊毛衫等冬季服装。年老体弱者宜着厚棉衣、冬大衣或厚羽绒服。",
// 紫外线及48 小时紫外线
"index_uv":" 中等","index48_uv":" 中等",
// 洗车
"index_xc":" 适宜",
// 旅游
"index_tr":" 适宜",
// 舒适指数
"index_co":" 较舒适","st1":"8","st2":"-5","st3":"7","st4":"-1","st5":"8","st6":"-2",
// 晨练
"index_cl":" 适宜",
// 晾晒
"index_ls":" 基本适宜",
// 过敏
"index_ag":" 极不易发"}}



有些小伙伴可能就会问了,那个101010100这串数据是哪来的呢?其实这个就是中国天气网自己定义的北京的城市代码,我上网搜了一下,网上还是有很多好人的(或者像我一样无聊的人),他们已经把全国所有城市的代码都给扒了下来:


北京:101010100 朝阳:101010300 顺义:101010400 怀柔:101010500 通州:101010600 昌平:101010700 延庆:101010800 丰台:101010900 石景山:101011000 大兴:101011100 房山:101011200 密云:101011300 门头沟:101011400 平谷:101011500 八达岭:101011600 佛爷顶:101011700 汤河口:101011800 密云上甸子:101011900 斋堂:101012000 霞云岭:101012100 北京城区:101012200 海淀:101010200 天津:101030100 宝坻:101030300 东丽:101030400 西青:101030500 北辰:101030600 蓟县:101031400 汉沽:101030800 静海:101030900 津南:101031000 塘沽:101031100 大港:101031200 武清:101030200 宁河:101030700 上海:101020100 宝山:101020300 嘉定:101020500 南汇:101020600 浦东:101021300 青浦:101020800 松江:101020900 奉贤:101021000 崇明:101021100 徐家汇:101021200 闵行:101020200 金山:101020700 石家庄:101090101 张家口:101090301 承德:101090402 唐山:101090501 秦皇岛:101091101 沧州:101090701 衡水:101090801 邢台:101090901 邯郸:101091001 保定:101090201 廊坊:101090601 郑州:101180101 新乡:101180301 许昌:101180401 平顶山:101180501 信阳:101180601 南阳:101180701 开封:101180801 洛阳:101180901 商丘:101181001 焦作:101181101 鹤壁:101181201 濮阳:101181301 周口:101181401 漯河:101181501 驻马店:101181601 三门峡:101181701 济源:101181801 安阳:101180201 合肥:101220101 芜湖:101220301 淮南:101220401 马鞍山:101220501 安庆:101220601 宿州:101220701 阜阳:101220801 亳州:101220901 黄山:101221001 滁州:101221101 淮北:101221201 铜陵:101221301 宣城:101221401 六安:101221501 巢湖:101221601 池州:101221701 蚌埠:101220201 杭州:101210101 舟山:101211101 湖州:101210201 嘉兴:101210301 金华:101210901 绍兴:101210501 台州:101210601 温州:101210701 丽水:101210801 衢州:101211001 宁波:101210401 重庆:101040100 合川:101040300 南川:101040400 江津:101040500 万盛:101040600 渝北:101040700 北碚:101040800 巴南:101040900 长寿:101041000 黔江:101041100 万州天城:101041200 万州龙宝:101041300 涪陵:101041400 开县:101041500 城口:101041600 云阳:101041700 巫溪:101041800 奉节:101041900 巫山:101042000 潼南:101042100 垫江:101042200 梁平:101042300 忠县:101042400 石柱:101042500 大足:101042600 荣昌:101042700 铜梁:101042800 璧山:101042900 丰都:101043000 武隆:101043100 彭水:101043200 綦江:101043300 酉阳:101043400 秀山:101043600 沙坪坝:101043700 永川:101040200 福州:101230101 泉州:101230501 漳州:101230601 龙岩:101230701 晋江:101230509 南平:101230901 厦门:101230201 宁德:101230301 莆田:101230401 三明:101230801 兰州:101160101 平凉:101160301 庆阳:101160401 武威:101160501 金昌:101160601 嘉峪关:101161401 酒泉:101160801 天水:101160901 武都:101161001 临夏:101161101 合作:101161201 白银:101161301 定西:101160201 张掖:101160701 广州:101280101 惠州:101280301 梅州:101280401 汕头:101280501 深圳:101280601 珠海:101280701 佛山:101280800 肇庆:101280901 湛江:101281001 江门:101281101 河源:101281201 清远:101281301 云浮:101281401 潮州:101281501 东莞:101281601 中山:101281701 阳江:101281801 揭阳:101281901 茂名:101282001 汕尾:101282101 韶关:101280201 南宁:101300101 柳州:101300301 来宾:101300401 桂林:101300501 梧州:101300601 防城港:101301401 贵港:101300801 玉林:101300901 百色:101301001 钦州:101301101 河池:101301201 北海:101301301 崇左:101300201 贺州:101300701 贵阳:101260101 安顺:101260301 都匀:101260401 兴义:101260906 铜仁:101260601 毕节:101260701 六盘水:101260801 遵义:101260201 凯里:101260501 昆明:101290101 红河:101290301 文山:101290601 玉溪:101290701 楚雄:101290801 普洱:101290901 昭通:101291001 临沧:101291101 怒江:101291201 香格里拉:101291301 丽江:101291401 德宏:101291501 景洪:101291601 大理:101290201 曲靖:101290401 保山:101290501 呼和浩特:101080101 乌海:101080301 集宁:101080401 通辽:101080501 阿拉善左旗:101081201 鄂尔多斯:101080701 临河:101080801 锡林浩特:101080901 呼伦贝尔:101081000 乌兰浩特:101081101 包头:101080201 赤峰:101080601 南昌:101240101 上饶:101240301 抚州:101240401 宜春:101240501 鹰潭:101241101 赣州:101240701 景德镇:101240801 萍乡:101240901 新余:101241001 九江:101240201 吉安:101240601 武汉:101200101 黄冈:101200501 荆州:101200801 宜昌:101200901 恩施:101201001 十堰:101201101 神农架:101201201 随州:101201301 荆门:101201401 天门:101201501 仙桃:101201601 潜江:101201701 襄樊:101200201 鄂州:101200301 孝感:101200401 黄石:101200601 咸宁:101200701 成都:101270101 自贡:101270301 绵阳:101270401 南充:101270501 达州:101270601 遂宁:101270701 广安:101270801 巴中:101270901 泸州:101271001 宜宾:101271101 内江:101271201 资阳:101271301 乐山:101271401 眉山:101271501 凉山:101271601 雅安:101271701 甘孜:101271801 阿坝:101271901 德阳:101272001 广元:101272101 攀枝花:101270201 银川:101170101 中卫:101170501 固原:101170401 石嘴山:101170201 吴忠:101170301 西宁:101150101 黄南:101150301 海北:101150801 果洛:101150501 玉树:101150601 海西:101150701 海东:101150201 海南:101150401 济南:101120101 潍坊:101120601 临沂:101120901 菏泽:101121001 滨州:101121101 东营:101121201 威海:101121301 枣庄:101121401 日照:101121501 莱芜:101121601 聊城:101121701 青岛:101120201 淄博:101120301 德州:101120401 烟台:101120501 济宁:101120701 泰安:101120801 西安:101110101 延安:101110300 榆林:101110401 铜川:101111001 商洛:101110601 安康:101110701 汉中:101110801 宝鸡:101110901 咸阳:101110200 渭南:101110501 太原:101100101 临汾:101100701 运城:101100801 朔州:101100901 忻州:101101001 长治:101100501 大同:101100201 阳泉:101100301 晋中:101100401 晋城:101100601 吕梁:101101100 乌鲁木齐:101130101 石河子:101130301 昌吉:101130401 吐鲁番:101130501 库尔勒:101130601 阿拉尔:101130701 阿克苏:101130801 喀什:101130901 伊宁:101131001 塔城:101131101 哈密:101131201 和田:101131301 阿勒泰:101131401 阿图什:101131501 博乐:101131601 克拉玛依:101130201 拉萨:101140101 山南:101140301 阿里:101140701 昌都:101140501 那曲:101140601 日喀则:101140201 林芝:101140401 台北县:101340101 高雄:101340201 台中:101340401 海口:101310101 三亚:101310201 东方:101310202 临高:101310203 澄迈:101310204 儋州:101310205 昌江:101310206 白沙:101310207 琼中:101310208 定安:101310209 屯昌:101310210 琼海:101310211 文昌:101310212 保亭:101310214 万宁:101310215 陵水:101310216 西沙:101310217 南沙岛:101310220 乐东:101310221 五指山:101310222 琼山:101310102 长沙:101250101 株洲:101250301 衡阳:101250401 郴州:101250501 常德:101250601 益阳:101250700 娄底:101250801 邵阳:101250901 岳阳:101251001 张家界:101251101 怀化:101251201 黔阳:101251301 永州:101251401 吉首:101251501 湘潭:101250201 南京:101190101 镇江:101190301 苏州:101190401 南通:101190501 扬州:101190601 宿迁:101191301 徐州:101190801 淮安:101190901 连云港:101191001 常州:101191101 泰州:101191201 无锡:101190201 盐城:101190701 哈尔滨:101050101 牡丹江:101050301 佳木斯:101050401 绥化:101050501 黑河:101050601 双鸭山:101051301 伊春:101050801 大庆:101050901 七台河:101051002 鸡西:101051101 鹤岗:101051201 齐齐哈尔:101050201 大兴安岭:101050701 长春:101060101 延吉:101060301 四平:101060401 白山:101060901 白城:101060601 辽源:101060701 松原:101060801 吉林:101060201 通化:101060501 沈阳:101070101 鞍山:101070301 抚顺:101070401 本溪:101070501 丹东:101070601 葫芦岛:101071401 营口:101070801 阜新:101070901 辽阳:101071001 铁岭:101071101 朝阳:101071201 盘锦:101071301 大连:101070201 锦州:101070701



大家看了这堆代码也不要害怕,这些代码我已经按照省和城市的分类做了一个数据库,最后一讲的时候会随代码一起上传,以后大家只管调用就好了。


彩虹天气的资源文件里还有一个接口: http://www.weather.com.cn/data/sk/%s.html

这个是干吗用的呢?把%s 换成北京市的城市代码,请求后的数据:
{"weatherinfo":{"city":" 北京","cityid":"101010100",
//  当前温度
"temp":"6",
//  风向
"WD":" 西风",
//  风力
"WS":"1 ",
//  湿度
"SD":"15%","WSE":"1","time":"17:10","isRadar":"1","Radar":"JC_RADAR_AZ9010_JB"}}

有了这些数据,加上彩虹天气的布局文件(反解一下彩虹天气就能得到了,如果有小伙伴还不会反解,google 一下吧,很简单的),大家应该就可以很轻松的做完彩虹天气的首页- 预报和首页- 指数的功能啦!

不过彩虹天气的指数有个小问题:
 

他的指数我换了2 部手机,都看不清楚上面写的是什么,不知道小伙伴们能不能看到呢?


这一讲最后再给大家推荐一个开源的项目: http://loopj.com/android-async-http/ ,各位小伙伴在做网络编程的时候可以考虑一下这个library 项目,我的大部分项目都是用的这个开源项目来请求网络数据的,据说 Instagram Pinterest 也是用的这个开源项目,虽然具体没有考证过,但是从我个人的经验来看,这个项目还是比较好用的。

这一次就写到这,接口和布局文件我都告诉各位小伙伴了,希望大家也自己动手写写吧。下一次我们会分析一下中间的这个趋势是怎么做的:
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值