Andriod手机地图设计实现分析Word文档格式.docx
《Andriod手机地图设计实现分析Word文档格式.docx》由会员分享,可在线阅读,更多相关《Andriod手机地图设计实现分析Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
因此,它具有很大的市场发展潜力。
近年来,Google智能手机平台Android得到了手机行业及客户的普遍认可,呈爆炸性的趋势发展,为移动运营商、手机制造商、软件开发商及客户提供了无限的发展空间,使市场上不断涌现出大量的基于Android平台的软件和增值服务。
随着手机功能的不断发展,android系统下的各种应用程序应运而生。
尤其是谷歌自带的地图功能使得地图开发更加便捷,开发之前需为你的电脑注册一个androidgooglemapkey,现在这个注册页面已经迁移了,地图一般都是应用XX地图,由于我们这个程序开发的较早,还是用的googlemap。
2.设计实现
2.1需求分析
如今Android手机软件遍布网络,各种各样的软件有些是不容易操作,有些是没实际用处,让人搞不懂,譬如说地图软件就有很多,谷歌地图、还有使用谷歌地图的一些软件,有些还会插入广告。
这样就让人很是反感。
我自己也想要一款实用的、简易方便操作的软件。
我们团队做的滨海地图软件有两个基本点,一个是简单易用,第二是功能方面基于人性化设计。
我们第三个模块跟第四个模块完全从人性化方面考虑,设身处地的为使用者着想,在一个陌生地方,由地图给你推荐旅游线路、地方特色小吃,想想就是一件舒心、温暖的事情。
主要实现四个模块我的位置、我的同伴、景点推荐、特色小吃。
2.2结构设计
Android程序=Activity+xml(view、surfaceview)+res+string.xml
滨海地图软件景点推荐模块,主要包括行政楼、博物馆、一字湖、路线推荐。
每个页面进入之后是这个景点的详细介绍,可以点击景点位置跳转到景点在地图上的位置,也可返回上一页面。
线路推荐则是推荐的几条游玩线路,选中任意一条线路可进入在地图上显示的线路,线路用红色线标出。
经典推荐模块的主页面设计的上面是轮转图片,下面是可拖动的景点列表。
2.3详细设计
2.3.1设计思想
(1)xml配置文件
采用LinearLayout线性布局、RelativeLayout相对布局对软件的界面进行布局。
(2)继承View类
主要是使用了EditText、TextView、button、ImageView等等界面控件
2.3.2具体实现
滨海地图程序图标如图2-1,滨海地图主界面如图2-2所示,滨海地图软件景点推荐模块主界面如下图2-3所示,下面我主要介绍景点推荐模块设计。
图2-1滨海地图程序图标
图2-2主界面
图2-3景点推荐模块界面
这一界面设计用的是相对布局,页面可以上下拖动,最下面Menu菜单是用绝对布局固定住的。
上面的图片是轮转图片,如图2-4、2-5、2-6。
图2-4轮转图片1
图2-5轮转图片2
图2-6轮转图片3
1、行政楼
(1)、行政楼界面如图2-7所示,显示了行政楼的图片以及简介。
(2)、点击景点位置按钮进入的是景点所在位置,以红点表示,如图2-8。
(3)、点击返回按钮返回上一页面。
图2-7行政楼
图2-8景点所在位置
2、博物馆
(1)、博物馆界面如图2-9所示,显示了博物馆的图片以及简介。
(2)、点击景点位置按钮进入的是景点所在位置,以红点表示,如图2-10。
图2-9博物馆
图2-10景点所在位置
3、一字湖
(1)、一字湖界面如图2-11所示,显示了一字湖的图片以及简介。
(2)、点击景点位置按钮进入的是景点所在位置,以红点表示,如图2-12。
图2-11一字湖
图2-12景点所在位置
4、路线推荐界面
(1)、线路推荐界面如图2-13,
(2)、点击某条线路进入的是线路图页面,以红线表示、第一条如图2-14,第二条如图2-15,第三条如图2-16。
图2-13路线推荐界面
图2-14线路1
图2-15线路2
图2-16线路3
2.3.3程序代码详解
1、轮转图片,是使用dispatchTouchEvent、onTouchEvent方法。
(1)viewGroup的dispatchTouchEvent方法会在其onInterceptTouchEvent方法之前被触发.又搜了些资料,个人觉得最受用的总结如下:
首先触发ACTIVITY的dispatchTouchEvent,然后触发ACTIVITY的onUserInteraction,然后触发LAYOUT的dispatchTouchEvent,然后触发LAYOUT的onInterceptTouchEvent。
publicbooleanonTouchEvent(MotionEventevent)参数event:
参数event为手机屏幕触摸事件封装类的对象,其中封装了该事件的所有信息,例如触摸的位置、触摸的类型以及触摸的时间等。
该对象会在用户触摸手机屏幕时被创建。
返回值:
该方法的返回值机理与键盘响应事件的相同,同样是当已经完整地处理了该事件且不希望其他回调方法再次处理时返回true,否则返回false。
该方法并不像之前介绍过的方法只处理一种事件,一般情况下以下三种情况的事件全部由onTouchEvent方法处理,只是三种情况中的动作值不同。
屏幕被按下:
当屏幕被按下时,会自动调用该方法来处理事件,此时MotionEvent.getAction()的值为MotionEvent.ACTION_DOWN,如果在应用程序中需要处理屏幕被按下的事件,只需重新该回调方法,然后在方法中进行动作的判断即可。
屏幕被抬起:
当触控笔离开屏幕时触发的事件,该事件同样需要onTouchEvent方法来捕捉,然后在方法中进行动作判断。
当MotionEvent.getAction()的值为MotionEvent.ACTION_UP时,表示是屏幕被抬起的事件。
在屏幕中拖动:
该方法还负责处理触控笔在屏幕上滑动的事件,同样是调用MotionEvent.getAction()方法来判断动作值是否为MotionEvent.ACTION_MOVE再进行处理。
2、绝对布局、相对布局。
AbsoluteLayout(绝对布局),在拖动控件,或有动画的空间中常用绝对布局;
我使用的标签有
android:
layout_above="
@id/footbar_layout_ly"
android:
layout_below="
@id/title_ry"
>
在简单页面运用相对布局布局,灵活性很大,两种布局嵌套使用等等。
设计方面还使用了EditText、TextView、button、ImageView等界面控件。
3.结论
滨海地图软件我个人认为做的很成功,但也有需要改进的地方,比如说地图调用方面有时会出现问题,我想以后改为XX地图的开发,界面设计还需要更加的优化,我的技术还是不够成熟,还需要继续努力。
通过设计滨海地图软件,加强了我对Android手机应用程序开发的理解,学会掌握了dispatchTouchEvent、onTouchEvent方法。
滨海地图的设计过程,让我更加深刻的了解了Android平台。
本论文从软件的产生背景需求到详细设计最后还给出了具体的实现,算是一个较完整的小项目。
设计中我学到了很多在书本上学不到的知识,本来以为软件开发是一件很简单的事情,但通过自己亲自动手才了解到,软件开发不是那么简单。
做软件其实是一个很复杂而艰苦的工作,其中有很多的技巧和无奈,不过当做出来的时候也是非常有成就感的。
设计让我们把平时在书本上的理论知识得到了升华,对目前流行的软件开发方法和手段,有了一定的认识,丰富了软件开发的经验,提高了编制程序的水平,SharedPreferences、JAVA、Android的使用增加了我的知识面。
通过这次设计,我感觉到我的知识不足,在遇到问题的时候需要各种查资料,通过这个软件的编写使我更加了解软件的开发,现在我能够清晰地认识到实践对于能力提高的重要性与必要性。
总结一下,本次设计让我学到了很多课本上没有的东西,并且对我的将来有用的东西,不仅是理论上的更多的是实践上的。
同时也让我看到了自己的差距,要想在以后的工作中游刃有余,还需要更多的努力!
参考文献
[1]《android开发入门指南》(第2版)索盖林著
[2]孙卫琴.Tomcat与JavaWeb开发电子工业出版社2007年2月,第二版
[3]《BeginningAndroid》MarkL.Murphy著
[4]郭宏志.Android应用开发详解电子工业出版社2011年5月,第一版
[5]《UnlockingAndroid》W.FRANKABLESON,CHARLIECOLLINS,ROBISEN著
附录
部分实现代码
1、图片轮转xml部分
<
hui.mytest.MyScrollView
layout_width="
match_parent"
layout_height="
wrap_content"
id="
@+id/viewflipper_scrollview"
scrollbars="
none"
focusable="
false"
<
RelativeLayout
ViewFlipper
@+id/mViewFliper_vf"
layout_marginTop="
15dip"
LinearLayout
android:
gravity="
center"
<
ImageView
@+id/imageview1"
android:
220dip"
background="
@drawable/default_pic_1"
contentDescription="
@string/app_name"
/>
/LinearLayout>
orientation="
vertical"
@drawable/default_pic_2"
<
@drawable/default_pic_3"
/ViewFlipper>
2、图片轮转action部分
packagehui.mytest;
importandroid.content.Context;
importandroid.util.AttributeSet;
importandroid.view.GestureDetector;
importandroid.view.MotionEvent;
importandroid.widget.ScrollView;
publicclassMyScrollViewextendsScrollView{
GestureDetectorgestureDetector;
publicMyScrollView(Contextcontext){
super(context);
//TODOAuto-generatedconstructorstub
}
publicMyScrollView(Contextcontext,AttributeSetattrs){
super(context,attrs);
publicMyScrollView(Contextcontext,AttributeSetattrs,intdefStyle){
super(context,attrs,defStyle);
publicvoidsetGestureDetector(GestureDetectorgestureDetector){
this.gestureDetector=gestureDetector;
@Override
publicbooleanonTouchEvent(MotionEventev){
//TODOAuto-generatedmethodstub
super.onTouchEvent(ev);
returngestureDetector.onTouchEvent(ev);
publicbooleandispatchTouchEvent(MotionEventev){
gestureDetector.onTouchEvent(ev);
super.dispatchTouchEvent(ev);
returntrue;
}
}
3、主页面xml
?
xmlversion="
1.0"
encoding="
utf-8"
RelativeLayoutxmlns:
android="
@android:
color/white"
>
@+id/title_ry"
layout_alignParentTop="
true"
includelayout="
@layout/index_title_layout"
/RelativeLayout>
LinearLayout
@+id/footbar_layout_ly"
layout_alignParentBottom="
@layout/index_footbar_layout"
/include>
"
android:
@+id/home_date_ratio_ly"
@id/mViewFliper_vf"
<
@layout/index_data_bar"
@layout/index_select_list_layout"
/hui.mytest.MyScrollView>