




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
届 别 2015届 学 号 201114100130 毕业设计(论文)基于Android平台的校园新闻app的开发姓 名 系 别、 专 业 数学与金融学院 信息与计算科学 导 师 姓 名、职 称 完 成 时 间 2015年5月 目 录摘 要IAbstractII1绪 论12设计原理和方法12.1 Android操作系统分析12.2 xml文件及pull解析介绍32.3 开发工具Eclipse介绍分析33 系统分析43.1 研究目的43.2 需求分析43.3 系统设计的原则44 系统设计54.1 数据库的设计55 详细设计85.1首页主界面85.1.1 功能描述85.1.2 界面设计95.1.3 具体实现及相关代码95.2 新闻模块105.2.1 新闻列表模块功能描述界面设计及主要代码实现105.2.2 新闻详情:135.2.3 新闻列表功能描述界面设计及主要代码实现145.3 注册登录模块165.3.1 功能描述165.3.2 界面设计175.3.3 具体实现及相关代码175.4 爆料模块185.4.1 功能描述185.4.2 界面设计195.4.3 具体实现及相关代码19结 论21参考文献22致 谢23摘 要 该软件,采用了xml解析技术中的Pull解析XmlPullParser工具解析,在xml文件中存储数据,模拟服务端的数据。客户端中采用了基于Sqlite数据库的一对多的android对象关系映射框架ormlite,对数据进行存储,及进行增删改操作,使用了Handler机制,采用消息队列的方式处理线程池中的各种请求。在图片加载使用了异步加载Image-Loader框架,加载网络数据时使用了Http协议。关键词:异步加载;ormlite;Handler;Material DesignIAbstractThe software,using PullXmlPullParser analytic toolsinanalyticalXML parsing technology,data storedin the XML file,simulationserverdata.The clientuses a pair oftheAndroid object relational mapping frameworkormlitebased on Sqlite database,for data storage,andCRUD operations,the use of the Handlermechanism,processingall kinds ofthread poolrequestbyway of message queue.The image is loadedusingasynchronous loadingImage-Loader framework,loading the network datausing the Httpprotocol.Keywords:asynchronousloading;ormlite;Handler;MaterialDesignII1绪 论 随着当今社会的快速发展,互联网已经走进家家户户,而手机也渐渐的成为了我们日常生活中不可或缺的设备,随着3g,4g的到来,手机互联网也从开始的打电话,发短信,慢慢的升级为QQ聊天,看新闻,看视频,网上购物,听歌,玩游戏.变得日益丰富了起来,而未来的发展趋势,在一定程度上也和手机密切相关,在互联网迅速发展的今天,手机app也如同雨后春笋般崛地而起,各种app在我们的生活中产生了很大的影响,QQ的出现,使我们与亲朋好友之间更加方便联系,各种新闻类app比如网易新闻,今日头条的出现,使得我们虽然不出门,但可以通过app了解各地新闻,等等。校园是一个丰富多彩的圈子,在这个圈子中,每天都有各种信息在圈子中流动,学校颁发的通知、系里面开展的活动、系里面发布的通知、系里面的讲座、学校的新鲜事、社团或学生会开展活动.等等很多这样的信息,而这款app正是在这样的背景下产生,目的将这些信息进行归类整理,并通过app进行传达,方便老师同学在第一时间掌握学校动态,app中也加入了爆料模块,这个模块提供一个共同的平台,在这个平台中,可以将自己身边的趣事,囧事,或者看到的不平事进行发表,给大家提供了一个交流的平台。2设计原理和方法 2.1 Android操作系统分析 Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,早期由Google开发,后由开放手持设备联盟(OpenHandsetAlliance)开发。它采用了软件堆层(softwarestack,又名以软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能;其他的应用软件则由各公司自行开发,部分程序以Java编写。 Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个Activity类(class)负责创建视窗(window),一个活动中的Activity就是在foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的Activity全部画面被其他Activity取代时,该Activity便被停止(stopped),甚至被系统清除(kill)。 View等同于J2ME的Displayable,程序人员可以通过View类与“XMLlayout”档将UI放置在视窗上,Android1.5的版本可以利用View打造出所谓的Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的AndroidHero手机即含有大量的widget。至于ViewGroup是各种layout的基础抽象类(abstractclass),ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但是Displayable的是必须的,在Activity中,要通过findViewById()来从XML中取得View,Android的View类的显示很大程度上是从XML中读取的。View与事件(event)息息相关,两者之间通过Listener结合在一起,每一个View都可以注册一个eventlistener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。操作系统与应用程序的沟通桥梁,并用分为两层:函数层(Library)和虚拟机(VirtualMachine)。Bionic是Android改良libc的版本。Android同时包含了Webkit,所谓的Webkit,浏览器背后的引擎。Surfaceflinger是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的BionicLibc。 Android采用OpenCORE作为基础多媒体框架。Android使用skia为核心图形引擎,搭配OpenGL/ES。skia与LinuxCairo功能相当,但相较于LinuxCairo,skia功能还只是阳春型的。2005年Skia公司被Google收购,2007年初,SkiaGL源码被公开,目前Skia也是GoogleChrome的图形引擎。 Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。 Android的中间层多以Java实现,并且采用特殊的Dalvik虚拟机(DalvikVirtualMachine)。Dalvik虚拟机是一种“暂存器型态”(RegisterBased)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。 Android的结构上由三层构成第一层次由C语言实现,第二层次由C和C+实现,第三层次主要由Java代码实现。第一层次和第二层次之间,从Linux操作系统的角度来看,是内核空间与用户空间的分界线,第一层次运行于内核空间,第2、3、4层次运行于用户空间。第二层次和第三层次之间,是本地代码层和Java代码层的接口。第三层次和第四层次之间,是Android的系统API的接口,对于Android应用程序的开发,第三层次以下的内容是不可见的,仅考虑系统API即可。由于Android系统需要支持Java代码的运行,这部分内容是Android的运行环境(Runtime),由虚拟机和Java基本类组成。由于Android应用程序的开发,主要关注第三层次和第四层次之间的接口。 2.2 xml文件及pull解析介绍 XML(ExtensibleMarkupLanguage)即可扩展标记语言,它与HTML一样,都是SGML(StandardGeneralizedMarkupLanguage,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立。XML已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。XML的解析方式基本上分为三类:第一类是基于XML文档树结构的解析,例如 DOM第二类是基于流式的解析,例如SAX、StAX和XPP;第三类是基于非提取式的解析,例如VTD-XML XML与Access,Oracle和sql server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。 Pull解析器的运行方式与SAX解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。跟SAX不同的是,Pull解析器产生的事件是一个数字,而非方法,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调parser.nextText()方法可以获取下一个Text类型节点的值。2.3 开发工具Eclipse介绍分析 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于 Eclipse 的应用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它构成了 IBM Java 开发工具系列的基础。例如,WebSphere Studio Application Developer 添加了对 JSP、servlet、EJB、XML、Web 服务和数据库访问的支持。3 系统分析 3.1 研究目的 1.了解Android应用程序的设计和开发过程;2.为学生老师提供一个快捷了解学校动态的的平台,促进学校中同学 间的交流,方便学校一些通知的下达,以及一些活动讲座的宣传。3.提升自己的专业技能,使自己更好的找到工作。 3.2 需求分析 该app的功能需求如下: 1. 实现用户注册与登录并且用户可以利用第三方账号登录。 2.实现学校概况通过列表对学校情况进行介绍。 3.实现新闻列表的展示每个栏目对应相应的新闻。 4.点击列表新闻进入新闻详情页面,并且用户可以评论分享,收藏。5. 大家爆料的展示,及爆料详情的展示。6. 爆料评论,及新闻评论的实现。7. 实现用户头修改密码,修改资料功能。8. 图集新闻的展示。 3.3 系统设计的原则 UI界面设计原则: 1.不要过度使用状态对话框。 2.不要使用固定的绝对定位的布局。 3.不要使用px单位,使用dp或者为文本使用sp。 4.干净而不过于简单。 5.关注内容而非修饰。 6.保存一致,使用户容易投入其中,可附加少许变化。 代码设计原则: 1.代码是一个应用的核心,代码设计好坏直接影响应用的健壮性,可读性,及可维护性,必须遵循以下的设计原则: 2.适当的为代码增加注释,一些方法,一些类,都必须加一些描述性的话,这样可以增强应用的可读性以及后期的维护。 3.各功能模块间尽量分开来,这样利于修改,维护。 4.合理分配各变量的作用域,及周期。 5.变量命名需要使用一些有意义的命名,包括变量的命名、类的命名、布局的命名、资源文件的命名。 4. 系统设计 4.1 数据库的设计 数据库表采用ormlite数据库,根据需求创建6个数据表,数据表中字段及字段类型,描述如以下表所示。表1.用户表(user)字段类型描述备注是否必须UserAddressVarchar2用户地址必须UserEmailVarchar2用户邮箱必须符合邮箱格式必须UserNameVarchar2用户名字母数字及下划线组成必须UserPassWordVarchar2密码长度不能小于6位必须UserPhoneVarchar2手机必须符合手机格式必须UserRealNameVarchar2真实姓名必须UserNickNameVarchar2昵称必须UserZipPostVarchar2邮编必须符合邮编格式必须UserSexnumber性别0、女 1、男 2、未知必须表2.新闻栏目表(newsChanne)字段类型描述备注是否必须IDnumber栏目ID新闻栏目表主键必须ChannelNameVarchar2栏目名称ImageUrlVarchar2栏目图片URLIsShowHomenumber是否固定栏目1.固定 0.不固定ShowOrdernumber排序表3.新闻表(news)字段类型描述备注是否必须numnumber每次获取新闻个数必须chidnumber栏目ID必须IDnumber新闻的ID号数据库表的主键必须ResourceGUIDnumber新闻GUIDTitleVarchar2新闻标题必须SummaryVarchar2摘要SourceFormVarchar2来源UpdateTimeDate修改时间IsCommentVarchar2是否允许评论True:可评论 False:不可评论ResourceTypeVarchar2新闻类型1.普通新闻 2.图集新闻UploadPicNameVarchar2图片链接列表中显示的图片多个url地址SmallPicUrlVarchar2缩略图列表界面所显示缩略图ChIDnumber栏目ID新闻所属的栏目表4.新闻详情表(newsDetail)字段类型描述备注是否必须IDnumber新闻详情ID为新闻详情表的主键TitleVarchar2新闻标题 SummaryVarchar2摘要SourceFormVarchar2来源UpdateTimeVarchar2修改时间ResourceTypeVarchar2新闻类型UploadPicNamesVarchar2图片链接SmallPicUrlVarchar2缩略图ChIDnumber栏目ID表5.用户评论表(userComment)请求参数名类型描述备注是否必填numnumber每次获取评论个数必须ridnumber对应资源ID必须IDnumber评论表ID评论表的主键CommentContentVarchar2评论内容CommentTimeVarchar2评论时间GetGoodPointnumber点赞的总数UserGUIDVarchar2评论人GUIDUserIconVarchar2评论人头像链接表6.用户爆料表(userRevelation)表字段类型描述备注是否必须IDnumberID爆料表的主键必须CreateTimeDate创建时间RevelationContentVarchar2爆料内容RevelationTypenumber爆料类型PicUrlVarchar2图片路径PicCountnumber图片数量RevelationStatusnumber爆料状态UserGUIDnumber用户IDUserPhoneVarchar2用户手机CommentCountnumber评论数量UserNameVarchar2用户名UserIconVarchar2用户头像UserNickNameVarchar2昵称StatusVarchar2状态5 详细设计 5.1首页主界面 5.1.1 功能描述 首页中采用了DrawerLayout实现侧滑菜单并遵循了Material Design设计原则主界面由ViewPage+Fragment实现,在加载数据时用到了异步加载任务类AsyncTask用它来处理一些耗时操作,处理一些http请求,利用fragment灵活的进行页面替换,在首页中也利用了ormlite的缓冲机制,当存在缓存时先加载缓存中的数据,如果没有则去解析xml文件获得数据。如果解析出错,则也去加载缓存中的,在界面显示上利用了PullToRefresh中的PullToRefreshListView将获得的数据进行绑定及显示,其中列表中图片的加载用到了异步加载图片类ImageLoad,并使用了动画,使图片加载时呈现一个透明度不断增加的动画,增加用户体验。 5.1.2 界面设计5.1.3 具体实现及相关代码 5.2 新闻模块 5.2.1 新闻列表模块功能描述界面设计及主要代码实现 功能页面基本由ViewPage+Fragment构成,其层次分为2层结构: 外层次首先使用自定义的HorizontalScrollview实现栏目动态添加并且横向滑动,栏目动态添加根据栏目个数在ViewGroup中动态新增一个自定义控件Ridebutton表示一个栏目。并且由栏目个数生成多个Fragment,且加入到ViewPage中。 内层主要是实现新闻列表页数据显示。主要使用自定义listview构成。其由新闻头图(Viewpage)+列表数据组成。实现功能上拉加载更多、下拉刷新数据。 新闻列表模块主界面左右切换主要代码如下:新闻列表主要包括:新闻广告头图、图集新闻、普通新闻、头图 而头图功能如下:1.主要实现左右滑动自动切换可点击效果由三部分组成2.主要使用viewpage中添加Imageview 实现图片显示3.在左上角覆盖一个View 4.下方覆盖一个透明的相对布局左边显示标题右边是RadioButton 会随着viewpage的切换而切换 头图广告由自定义的Gallery并重写了onScroll(),onTouch()方法,图片广告自动轮播的主要代码如下: 列表新闻分为图集新闻、普通新闻 图集新闻主要功能1.实现图片预览功能,点击进入图集详情。2.显示在新闻列表的第一行 普通新闻功能1.实现可点击进入新闻详情2.左边新闻缩略图右边显示新闻标题以及新闻副标题 新闻评论3.当新闻为视频新闻时在左边缩略图上面覆盖一次view标注为视频新闻 普通新闻进入的新闻详情如下图所示:图集新闻进入的新闻详情如下图所示:5.2.2 新闻详情: 新闻详情主要显示新闻的详细内容、评论个数以及下方评论分享收藏图标主要功能如下表:1.主要由WebView,来显示返回的html内容。2.在标题栏右角显示评论的个数 点击可进入评论列表页3.新闻详情底部:添加评论,分享,收藏三个操作功能分别如下:3.1评论:在点击后会在当前的层中,加入一个PopupWindow给用户提供一个输入页 面,之后进行确认提交操作完成评论(需登录)3.2分享:在点击后,将调用第三方的分享代码,将新闻内容分享至其他平台.3.3收藏:在点击将提示用户收藏的结果,收藏分本地收藏。 5.2.3 新闻列表功能描述界面设计及主要代码实现 评论列表主体部分:主要使用自定义listview构成,需实现上下拉功能。并且提供回复功能,可对评论内容进行回复。新增顶,在进行回复时必须先判断当前用户是否登陆。评论列表底部:只有一个评论框,点击后可弹出PopupWindow,以对新闻进行评论。评论列表主要由评论用户、评论内容、评论时间、顶个数、回复组成,分别为对新闻评论,以及对新闻评论进行回复,并且必须与新闻详情中的评论界面应该保持一置效果图如下: 评论主要由数据库表的查询,插入实现数据存读取与存储,而在界面显示上采用了递归调用的方法,对回复以及评论进行处理,回复时用户信息与评论内容插入到对应的表中,而当回复中当回复数量达到7以上时,对7以上的回复进行递归隐藏,当前楼层不是嵌套楼层的开始位置就递归楼层否则结束嵌套循环,其主要实现代码如下所示:新闻数据获取显示逻辑流程如下图所示: 评论的数据处理流程如下所示:5.3 注册登录模块 5.3.1 功能描述 用户注册时首先判断其输入的合法性,有邮箱,手机等等利用正则表达式判断其输入是否正确,然后再查询用户注册表是否存在该用户,不存在则注册成功。用户登录分为注册号登录,为了增加用户体验实现了第三方账号登录,普通登录时将用户输入的用户名与密码到数据表中进行查询,如果存在且用户名与密码一致则登录成功,第三方账号登录,利用了sharedsdk官方提供的授权登录功能,获取用户第三方账号的信息,并登录 5.3.2 界面设计5.3.3 具体实现及相关代码5.4 爆料模块 5.4.1 功能描述 1.大家的爆料: 大家的爆料主界面的下拉刷新用的是第三方的一个开源框架项目PullToRefreshListview,实现实时刷新,分为下拉和上拉,下拉每次获得最新的10条爆料信息,刷新列表,而上拉,则是在原来数据的基础上在增加10条数据,而列表中的每个子项,都是加载了一个子布局,通过设置adapter呈现出不同的样式,包括带有文字没有带图片的爆料,还有既有文字又有图片的爆料,以及,只有图片的爆料,有点类似于QQ空间的动态,子项中的图片都是通过Gallery画廊组件进行展示的,如果图片过多则只显示前三张图片,点击图片可以进入一个图片浏览的图集,在图集中利用Matrix(矩阵)类的setScale方法将图片进行缩放。为了防止读取大图片造成内存溢出(OOM)在加载图片时用到了异步加载Android-Universal-Image-Loader它是一个开源的UI组件程序,它可以异步图像加载,缓存和显示,它解决了多线程,以及内存溢出带来的问题。大家的爆料的界面如下图(左图)所示: 2.我的爆料: 如上图下图所示为我的爆料模块,由大家爆料界面中右上角图标点击进入。列表由ListView组件展示,每一项中采用类似于大家爆料中子项的方式进行布局及数据绑定,含有删除按钮,用户可以删掉自己的爆料,其数据加载方式和大家爆料相似,进入页面时有一个正在缓冲的logo,通过addView的方式加入到布局中,数据绑定完成是调用removeView方法移除正在缓冲的logo,将数据显示出来。 5.4.2 界面设计5.4.3 具体实现及相关代码如下图为爆料模块中使用到一小段代码,主要功能是让爆料中的图片进行适配手机,通过手机屏幕的分辨率计算得到图片显示的宽度以及,各张图片之间的间隔,从而适应不同分辨率的手机。结 论从刚刚开始写这毕业论文的时候面临着不少的困难和挑战,从确定论文题目,到开始着手开始写,历经了差不多半个月的时间,想了很多项目,也不知道要做哪个,很迷茫,毕竟大学四年学的怎么样就看这毕业设计论文了,不能像对待平时考试那样,敷衍了事,需要高度重视,想了很久然后确定了这个,选了这个之后就有了方向,从开始给eclipse配置环境,然后开始对项目进行需求分析,分析各个模块的具体功能以及初步确定该怎么去实现,要用到什么技术,当然那个时候所想的只是理论上的,但真正开始做的时候,发现没有像想的那么简单,很多的细节都是没有考虑到的。需求确定后,然后就是进行UI设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司组织春季活动方案
- 公司职工送温暖活动方案
- 公司文艺晚会活动方案
- 公司爱心捐赠活动方案
- 公司春游拓展活动方案
- 公司看敬老院活动方案
- 公司落成典礼策划方案
- 公司狂欢泼水活动方案
- 公司春节维系活动方案
- 公司节日剪彩活动方案
- 2025年小学语文期末考试试题及答案
- 发改委立项用-超薄玻璃项目可行性研究报告
- 2025年北京市第一次普通高中学业水平合格性考试历史试题(含答案)
- 苏教版-数学二年级下册-期末试卷10套
- 《陆上风电场工程设计概算编制规定及费用标准》(NB-T 31011-2019)
- 新科hg5300功放说明书
- 2023-2024学年湖南省常德市小学语文六年级期末评估试卷附参考答案和详细解析
- 气污染源自动监控设施台账记录模版校准记录
- JJF 1169-2007汽车制动操纵力计校准规范
- 新高考高中物理竞赛专题1力学50题竞赛真题强化训练原卷版
- 晒纹资料大全
评论
0/150
提交评论