基于Android的校园新闻app开发毕业设计.docx
《基于Android的校园新闻app开发毕业设计.docx》由会员分享,可在线阅读,更多相关《基于Android的校园新闻app开发毕业设计.docx(22页珍藏版)》请在冰豆网上搜索。
基于Android的校园新闻app开发毕业设计
基于Android的校园新闻app开发毕业设计
届别2015届
学号201114100130
毕业设计(论文)
基于Android平台的校园新闻app的开发
姓名李威
系别、专业数学与金融学院信息与计算科学
导师姓名、职称刘智钢教授
完成时间2015年5月
摘要.......................................................IAbstract.....................................................II1绪论.......................................................12设计原理和方法...............................................1
2.1Android操作系统分析....................................1
2.2xml文件及pull解析介绍..................................3
2.3开发工具Eclipse介绍分析................................33系统分析....................................................4
3.1研究目的..............................................4
3.2需求分析..............................................4
3.3系统设计的原则.........................................44系统设计....................................................5
4.1数据库的设计...........................................55详细设计....................................................8
5.1首页主界面..............................................8
5.1.1功能描述..........................................8
5.1.2界面设计..........................................9
5.1.3具体实现及相关代码................................10
5.2新闻模块.............................................10
5.2.1新闻列表模块功能描述界面设计及主要代码实现..........10
5.2.2新闻详情:
........................................14
5.2.3新闻列表功能描述界面设计及主要代码实现.............14
5.3注册登录模块..........................................16
5.3.1功能描述........................................16
5.3.2界面设计.........................................17
5.3.3具体实现及相关代码................................18
5.4爆料模块..............................................18
5.4.1功能描述........................................18
5.4.2界面设计.........................................19
5.4.3具体实现及相关代码................................19结论.......................................................21参考文献.....................................................22致谢....................................................23
摘要
该软件,采用了xml解析技术中的Pull解析XmlPullParser工具解析,在xml文件中存储数据,模拟服务端的数据。
客户端中采用了基于Sqlite数据库的一对多的android对象关系映射框架ormlite,对数据进行存储,及进行增删改操作,使用了Handler机制,采用消息队列的方式处理线程池中的各种请求。
在图片加载使用了异步加载Image-Loader框架,加载网络数据时使用了Http协议。
关键词:
异步加载;ormlite;Handler;MaterialDesign
I
Abstract
Thesoftware,usingPullXmlPullParseranalytictoolsinanalyticalXMLparsingtechnology,datastoredintheXMLfile,simulationserverdata.TheclientusesapairoftheAndroidobjectrelationalmappingframeworkormlitebasedonSqlitedatabase,fordatastorage,andCRUDoperations,theuseoftheHandlermechanism,processingallkindsofthreadpoolrequestbywayofmessagequeue.TheimageisloadedusingasynchronousloadingImage-Loaderframework,loadingthenetworkdatausingtheHttpprotocol.
Keywords:
asynchronousloading;ormlite;Handler;MaterialDesign
II
1绪论
随着当今社会的快速发展,互联网已经走进家家户户,而手机也渐渐的成为了我们日常生活中不可或缺的设备,随着3g,4g的到来,手机互联网也从开始的打电话,发短信,慢慢的升级为QQ聊天,看新闻,看视频,网上购物,听歌,玩游戏.....变得日益丰富了起来,而未来的发展趋势,在一定程度上也和手机密切相关,在互联网迅速发展的今天,手机app也如同雨后春笋般崛地而起,各种app在我们的生活中产生了很大的影响,QQ的出现,使我们与亲朋好友之间更加方便联系,各种新闻类app比如网易新闻,今日头条的出现,使得我们虽然不出门,但可以通过app了解各地新闻,等等。
校园是一个丰富多彩的圈子,在这个圈子中,每天都有各种信息在圈子中流动,学校颁发的通知、系里面开展的活动、系里面发布的通知、系里面的讲座、学校的新鲜事、社团或学生会开展活动....等等很多这样的信息,而这款app正是在这样的背景下产生,目的将这些信息进行归类整理,并通过app进行传达,方便老师同学在第一时间掌握学校动态,app中也加入了爆料模块,这个模块提供一个共同的平台,在这个平台中,可以将自己身边的趣事,囧事,或者看到的不平事进行发表,给大家提供了一个交流的平台。
2设计原理和方法
2.1Android操作系统分析
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)。
1
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.2xml文件及pull解析介绍
XML(ExtensibleMarkupLanguage)即可扩展标记语言,它与HTML一样,都是SGML(StandardGeneralizedMarkupLanguage,标准通用标记语言)。
Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。
扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立。
XML已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。
XML的解析方式基本上分为三类:
第一类是基于XML文档树结构的解析,例如DOM第二类是基于流式的解析,例如SAX、StAX和XPP;第三类是基于非提取式的解析,例如VTD-XML
XML与Access,Oracle和sqlserver等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:
数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。
事实上XML与其他数据表现形式最大的不同是:
他极其简单。
这是一个看上去有点琐细的优点,但正是这点使XML与众不同。
Pull解析器的运行方式与SAX解析器相似。
它提供了类似的事件,如:
开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。
跟SAX不同的是,Pull解析器产生的事件是一个数字,而非方法,因此可以使用一个switch对感兴趣的事件进行处理。
当元素开始解析时,调parser.nextText()方法可以获取下一个Text类型节点的值。
2.3开发工具Eclipse介绍分析
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。
虽然大多数用户很乐于将Eclipse当作JavaIDE来使用,但Eclipse的目标不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于Java开发工具。
尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++、COBOL和Eiffel等编程语言的插件已经可用,或预计会推出。
Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
基于Eclipse的应用程序的突出例子是IBM的WebSphereStudioWorkbench,它构成
3
了IBMJava开发工具系列的基础。
例如,WebSphereStudioApplicationDeveloper添
加了对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.保存一致,使用户容易投入其中,可附加少许变化。
4
代码设计原则:
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、未知必须
5
表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.图集新闻
列表中显示的图片多个url地UploadPicNameVarchar2图片链接
址
SmallPicUrlVarchar2缩略图列表界面所显示缩略图
ChIDnumber栏目ID新闻所属的栏目
6
表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评论人头像链接
7
表6.用户爆料表(userRevelation)
表字段类型描述备注是否必须
IDnumberID爆料表的主键必须CreateTimeDate创建时间RevelationContVarchar2爆料内容ent
RevelationTypenumber爆料类型
PicUrlVarchar2图片路径
PicCountnumber图片数量RevelationStatnumber爆料状态us
UserGUIDnumber用户ID
UserPhoneVarchar2用户手机CommentCountnumber评论数量
UserNameVarchar2用户名
UserIconVarchar2用户头像UserNickNameVarchar2昵称
StatusVarchar2状态
5详细设计
5.1首页主界面
5.1.1功能描述
首页中采用了DrawerLayout实现侧滑菜单并遵循了MaterialDesign设计原则主界面由ViewPage+Fragment实现,在加载数据时用到了异步加载任务类AsyncTask用它来处理一些耗时操作,处理一些http请求,利用fragment灵活的进行页面替换,在首页中也
8
利用了ormlite的缓冲机制,当存在缓存时先加载缓存中的数据,如果没有则去解析xml文件获得数据。
如果解析出错,则也去加载缓存中的,在界面显示上利用了PullToRefresh中的PullToRefreshListView将获得的数据进行绑定及显示,其中列表中图片的加载用到了异步加载图片类ImageLoad,并使用了动画,使图片加载时呈现一个透明度不断增加的动画,增加用户体验。
5.1.2界面设计
9
5.1.3具体实现及相关代码
5.2新闻模块
5.2.1新闻列表模块功能描述界面设计及