用户不单击城市选择按钮的时候,则会显示的是南京近两天的天气情况。如图4.3所示。第一次运行时,我是通过在手机文件系统中判断是否存在一个名为shared_prefs的文件来判断是否为第一次运行,如果存在则不是第一次运行,系统会继续执行向下执行代码,如果系统中不存在该文件,则为第一次运行该程序,程序弹出对话框告诉用户。
图 4.3 第一次运行效果图
在主程序界面,我运用的主要是ViewFlipper组件,通过该组件可以实现滑动显示界面,不过在设置滑动界面之前我们要先设定滑动的动画。该动画实在res\\anim中设置,如图4.4所示为左右滑动效果布局
图 4.4 界面滑动布局
其中left_in中的代码为:
其他四个与此基本相似,在此不再列出。
当我们定义了滑动效果之后还要在main.xml中把想要滑动的布局包含进去。
android:id=\ layout=\/>
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN){
touchDownX = event.getX(); return true;
}else if(event.getAction()==MotionEvent.ACTION_UP){
touchUpX = event.getX();
if(touchUpX-touchDownX>100){//从左往右滑动
viewFlipper.setAnimation(AnimationUtils.loadAnimation(this,android.R.anim.sli
de_in_left));
viewFlipper.setAnimation(AnimationUtils.loadAnimation(this,android.R.anim.sli
de_out_right));
viewFlipper.showPrevious();
}else if(touchDownX-touchUpX>100){
viewFlipper.setAnimation(AnimationUtils.loadAnimation(this,
R.anim.right_in));
viewFlipper.setAnimation(AnimationUtils.loadAnimation(this,R.anim.left_out)); }
}
return false;
}
return true;
viewFlipper.showNext();
获取天气信息并显示
天气预报系统最重要的当然是如何才能有效的获取天气信息了,要想获取实时的天气信息,我们就要访问专门提供天气信息的网站把网站返回的信息解析出想要的信息并显示在手机上。通过网上的搜索,我找到了一个提供webservice的网站: 通过向这个网站提供参数就可以获取指定城市的天气信息了,该网站是从中央气象台接收的信息,数据准确可靠。每隔两个小时更新一次天气情况,具有很好的实时性。
Webservice的出现成功的解决了不同平台和语言之间进行数据交换的问题,它主要使用XML文档来传递消息,并将该消息发送给任何请求对象,由于不同系统对XML的完美支持,因此从根本上完善了跨平台服务,任何时刻、任何平台我们可以使用任何语言来访问该Webservice服务。对于Webservice使用者而言,webservice API与任何操作平台无关,它只是以XML语言作为数据交换格式。
Webservice平台主要涉及到的技术是SOAP(Simple Object Access Protocol),WSDL(Web Service Description Language)
SOAP依赖于XML文档来构建,一条SOAP消息就是一份特定的XML文档,SOAP主要包含三个方面的主要元素:
(1)
(2)
(3)