使用搜索引擎可以得到很多的天气预报接口,这里以某个api为例
>
参数为city=城市名称
尝试获取南昌的天气预报
>
得到下面xml数据
<xml version="10" encoding="utf-8"><resp>
<city>南昌</city>
<updatetime>16:55</updatetime>
<wendu>5</wendu>
<fengli>3级</fengli>
<shidu>90%</shidu>
<fengxiang>北风</fengxiang>
<sunrise_1>06:54</sunrise_1>
<sunset_1>17:19</sunset_1>
<sunrise_2/>
<sunset_2/>
<environment>
<aqi>26</aqi>
<pm25>13</pm25>
<suggest>各类人群可自由活动</suggest>
<quality>优</quality>
<MajorPollutants/>
<o3>44</o3>
<co>1</co>
<pm10>14</pm10>
<so2>4</so2>
<no2>27</no2>
<time>16:00:00</time>
</environment>
<yesterday>
<date_1>4日星期五</date_1>
<high_1>高温 11℃</high_1>
<low_1>低温 7℃</low_1>
<day_1>
<type_1>阴</type_1>
<fx_1>无持续风向</fx_1>
<fl_1>微风</fl_1>
</day_1>
<night_1>
<type_1>小到中雨</type_1>
<fx_1>北风</fx_1>
<fl_1>3-4级</fl_1>
</night_1>
</yesterday>
<forecast>
<weather>
<date>5日星期六</date>
<high>高温 7℃</high>
<low>低温 5℃</low>
<day>
<type>中到大雨</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</day>
<night>
<type>小到中雨</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</night>
</weather>
<weather>
<date>6日星期天</date>
<high>高温 10℃</high>
<low>低温 5℃</low>
<day>
<type>阴</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</day>
<night>
<type>多云</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</night>
</weather>
<weather>
<date>7日星期一</date>
<high>高温 13℃</high>
<low>低温 6℃</low>
<day>
<type>多云</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</day>
<night>
<type>晴</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</night>
</weather>
<weather>
<date>8日星期二</date>
<high>高温 13℃</high>
<low>低温 7℃</low>
<day>
<type>晴</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</day>
<night>
<type>多云</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</night>
</weather>
<weather>
<date>9日星期三</date>
<high>高温 13℃</high>
<low>低温 10℃</low>
<day>
<type>小雨</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</day>
<night>
<type>小雨</type>
<fengxiang>无持续风向</fengxiang>
<fengli>微风级</fengli>
</night>
</weather>
</forecast>
<zhishus>
<zhishu>
<name>晨练指数</name>
<value>不宜</value>
<detail>有较强降水,请避免户外晨练,建议在室内做适当锻炼,保持身体健康。</detail>
</zhishu>
<zhishu>
<name>舒适度</name>
<value>较舒适</value>
<detail>白天有雨,人们会感到有些凉意,但大部分人完全可以接受。</detail>
</zhishu>
<zhishu>
<name>穿衣指数</name>
<value>较冷</value>
<detail>建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。</detail>
</zhishu>
<zhishu>
<name>感冒指数</name>
<value>极易发</value>
<detail>将有一次强降温过程,天气寒冷,且空气湿度较大,极易发生感冒,请特别注意增加衣服保暖防寒。</detail>
</zhishu>
<zhishu>
<name>晾晒指数</name>
<value>不宜</value>
<detail>有较强降水,不适宜晾晒。若需要晾晒,请在室内准备出充足的空间。</detail>
</zhishu>
<zhishu>
<name>旅游指数</name>
<value>较不宜</value>
<detail>天气稍凉,有微风,同时有有较强降水,会给出行产生很多麻烦,建议好还是多选择在室内活动!。</detail>
</zhishu>
<zhishu>
<name>紫外线强度</name>
<value>最弱</value>
<detail>属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。</detail>
</zhishu>
<zhishu>
<name>洗车指数</name>
<value>不宜</value>
<detail>不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。</detail>
</zhishu>
<zhishu>
<name>运动指数</name>
<value>较不宜</value>
<detail>有较强降水,建议您选择在室内进行健身休闲运动。</detail>
</zhishu>
<zhishu>
<name>约会指数</name>
<value>不适宜</value>
<detail>较强降水天气会给室外约会增添许多麻烦,尽量不要外出约会,最好在室内促膝谈心。</detail>
</zhishu>
<zhishu>
<name>雨伞指数</name>
<value>带伞</value>
<detail>有较强降水,您在外出的时候一定要带雨伞,以免被雨水淋湿。</detail>
</zhishu>
</zhishus>
</resp>
得到数据后使用XML解析数据即可,最好是建立一个实体类来存储数据
下面是使用DOM方式解析部分数据代码
DocumentBuilder builder = DocumentBuilderFactorynewInstance()newDocumentBuilder();//is是网络连接得到的输入流
Document doc = builderparse(is);
if(doc==null) throw new Exception();
Element element = docgetDocumentElement();
NodeList childList = elementgetChildNodes();
for(int i=0; i<childListgetLength(); i++){
Element e = (Element) childListitem(i);
String tag = egetTagName();
String text = egetTextContent();
if("city"equals(tag)){
//城市
}else if("updatetime"equals(tag)){
//更新时间
}else if("wendu"equals(tag)){
//即时温度
}else if("fengli"equals(tag)){
//风力
}else if("shidu"equals(tag)){
//湿度
}else if("fengxiang"equals(tag)){
//风向
}
}加入V4兼容包,AndroidManifestxml里设置成:
<uses-sdk
android:minSdkVersion="4"
android:targetSdkVersion="16" />
projectproperties这个文件配置成:target=android-16
这样你开发的程序就可以兼容16——41版本的android手机了Android 自定义控件或多或少都会用到Canvas,那么我们就需要熟悉它的API。Canvas给我们提供了大量的的DrawXXX方法,通过这些方法我们就可以绘制出我们想要的效果。接下来看看官方是怎么说的:
大致意思就是说:
Canvas类持有“draw”调用。 要绘制一些东西,你需要4个基本组件:一个位图来保存像素,一张画布(Canvas)来主持绘图调用(写入位图),一个绘图图元(如Rect,Path,text,Bitmap)和一支画笔(描述绘图的颜色和样式)。
首先介绍下画笔(Paint)的常用API:
Paint默认的字体大小为12px,在绘制文本时我们往往要考虑密度density设置合适的字体大小。画笔的默认颜色为黑色,默认的style为FILL,默认的cap为BUTT,默认的线宽为0。
单一颜色填充Canvas画布
以上就是大部分的绘制 *** 作,当然还有一些没介绍到,还有一些需要在API21(50)以上才能使用,这个使用到的时候可以弄个小demo看下效果,接下来介绍下针对画布变换和画布裁剪做一些介绍。
在学习绘制 *** 作的时候很多地方都使用到了translate 和rotate 这里就不再对它们进行 *** 作
1画布scale
2画布skew
这里针对Canvas的API进行了一些说明,希望对大家有所帮助。没有添加完整工程上来,但是每一个方法都是实际跑过的,只需要在onDraw中调用就可以看到效果了。解压android的sdk即 android-sdk-windows-15_r2后,就可以在android-sdk-windows-15_r2的文件夹下看到一个documentationhtml得文件,这就是android api的文档短信API(短信应用程序接口)其实是一组定义、程序及协议的集合,通过 API 接口实现计算机软件之间的相互通信。API 的一个主要功能是提供通用功能集。程序员通过使用 API 函数开发应用程序,从而可以避免编写无用程序,以减轻编程任务。 API 同时也是一种中间件,为各种不同平台提供数据共享。如果只是隐藏了,不需要特殊权限,你可以在你的APP中建一个包名类名和你要调用的隐藏API的包名类名一样的类,在里边写一个空方法,方法名就是你的API名,将APK安装到系统中后,实际调用的还是系统的API。这种方法称之为API欺骗,具体百度了解吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)