1、基于Android的校园新闻app开发毕业设计基于Android的校园新闻app开发毕业设计届 别 2015届 学 号 201114100130 毕业设计(论文) 基于Android平台的校园新闻app的开发 姓 名 李威 系 别、 专 业 数学与金融学院 信息与计算科学 导 师 姓 名、职 称 刘智钢 教授 完 成 时 间 2015年5月 摘 要.I Abstract.II 1绪 论 .1 2设计原理和方法.1 2.1 Android操作系统分析 .1 2.2 xml文件及pull解析介绍.3 2.3 开发工具Eclipse介绍分析 .3 3 系统分析 .4 3.1 研究目的 .4 3.2
2、需求分析 .4 3.3 系统设计的原则 .4 4 系统设计 .5 4.1 数据库的设计 .5 5 详细设计 .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
3、 5.4.2 界面设计 .19 5.4.3 具体实现及相关代码 .19 结 论 .21 参考文献.22 致 谢 .23 摘 要 该软件,采用了xml解析技术中的Pull解析XmlPullParser工具解析,在xml文件中存储数据,模拟服务端的数据。客户端中采用了基于Sqlite数据库的一对多的android对象关系映射框架ormlite,对数据进行存储,及进行增删改操作,使用了Handler机制,采用消息队列的方式处理线程池中的各种请求。在图片加载使用了异步加载Image-Loader框架,加载网络数据时使用了Http协议。 关键词:异步加载;ormlite;Handler;Material
4、 Design I Abstract The software, using Pull XmlPullParser analytic tools in analytical XML parsing technology, data stored in the XML file, simulation server data. The client uses a pair of the Android object relational mapping framework ormlite based on Sqlite database, for data storage, and CRUD o
5、perations, the use of the Handler mechanism, processing all kinds of thread pool request by way of message queue. The image is loaded using asynchronous loading Image-Loader framework, loading the network data using the Http protocol. Keywords:asynchronous loading; ormlite; Handler; Material Design
6、II 1绪 论 随着当今社会的快速发展,互联网已经走进家家户户,而手机也渐渐的成为了我们日常生活中不可或缺的设备,随着3g,4g的到来,手机互联网也从开始的打电话,发短信,慢慢的升级为QQ聊天,看新闻,看视频,网上购物,听歌,玩游戏.变得日益丰富了起来,而未来的发展趋势,在一定程度上也和手机密切相关,在互联网迅速发展的今天,手机app也如同雨后春笋般崛地而起,各种app在我们的生活中产生了很大的影响,QQ的出现,使我们与亲朋好友之间更加方便联系,各种新闻类app比如网易新闻,今日头条的出现,使得我们虽然不出门,但可以通过app了解各地新闻,等等。校园是一个丰富多彩的圈子,在这个圈子中,每天都有
7、各种信息在圈子中流动,学校颁发的通知、系里面开展的活动、系里面发布的通知、系里面的讲座、学校的新鲜事、社团或学生会开展活动.等等很多这样的信息,而这款app正是在这样的背景下产生,目的将这些信息进行归类整理,并通过app进行传达,方便老师同学在第一时间掌握学校动态,app中也加入了爆料模块,这个模块提供一个共同的平台,在这个平台中,可以将自己身边的趣事,囧事,或者看到的不平事进行发表,给大家提供了一个交流的平台。 2设计原理和方法 2.1 Android操作系统分析 Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,早期由Google开发
8、,后由开放手持设备联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能;其他的应用软件则由各公司自行开发,部分程序以Java编写。 Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和
9、AIDL连结,达到复数程序同时运行的效果。如果运行中的 Activity 全部画面被其他 Activity 取代时,该 Activity 便被停止(stopped),甚至被系统清除(kill)。 1 View等同于J2ME的Displayable,程序人员可以通过 View 类与“XML layout”档将UI放置在视窗上,Android 1.5的版本可以利用 View 打造出所谓的 Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的Android Hero手机即含有大量的widget。至于ViewGroup 是各种layout 的基础抽象类(a
10、bstract class),ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但是Displayable的是必须的,在Activity 中,要通过findViewById()来从XML 中取得View,Android的View类的显示很大程度上是从XML中读取的。View 与事件(event)息息相关,两者之间通过Listener 结合在一起,每一个View都可以注册一个event listener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等
11、同于J2ME的BitMap。 操作系统与应用程序的沟通桥梁,并用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit,所谓的Webkit,浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。 Android采用OpenCORE作为基础多媒体框架。Android 使用skia 为核心图形引擎,搭配OpenGL/ES。skia与Linux Cairo功能相当,但
12、相较于Linux Cairo, skia 功能还只是阳春型的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,目前Skia 也是Google Chrome 的图形引擎。 Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。 Android的中间层多以Java实现,并且采用特殊的Dalvik虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器
13、中,虚拟机的指令相对减少。 Android的结构上由三层构成第一层次由C语言实现,第二层次由C和C+实现,第三层次主要由Java代码实现。第一层次和第二层次之间,从Linux操作系统的角度来看,是内核空间与用户空间的分界线,第一层次运行于内核空间,第2、3、4层次运行于用户空间。第二层次和第三层次之间,是本地代码层和Java代码层的接口。第三层次和第四层次之间,是Android的系统API的接口,对于Android应用程序的开发,第三层次以下的内容是不可见的,仅考虑系统API即可。由于Android系统需要支持Java代码的运行,这部分内容是Android的运行环境(Runtime),由虚拟机
14、和Java基本类组成。由于Android应用程序的开发,主要关注第三层次和第四层次之间的接口。 2 2.2 xml文件及pull解析介绍 XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信 息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立。XML已经成为一种通用的 数据交换格式,它的平台无关性
15、,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。XML的解析方式基本上分为三类:第一类是基于XML文档树 结构的解析,例如 DOM第二类是基于流式的解析,例如SAX、StAX和XPP;第三类是基于非提取式的解析,例如VTD-XML XML与Access,Oracle和sql server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。 Pull解析器的运行方式与SAX解析器相似。它提供了类似的事件,
16、如:开始元素和结束元素事件,使用parser.next() 可以进入下一个元素并触发相应事件。跟SAX不同的是,Pull解析器产生的事件是一个数字,而非方法,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调parser.nextText()方法可以获取下一个 Text 类型节点的值。 2.3 开发工具Eclipse介绍分析 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development
17、Tools,JDT)。 虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 J
18、ava 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。 基于 Eclipse 的应用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它构成3 了 IBM Java 开发工具系列的基础。例如,WebSphere Studio Application Developer 添加了对 JSP、servlet、EJB、XML、Web 服务和数据库访问的支持。 3 系统分析 3.1 研
19、究目的 1.了解Android应用程序的设计和开发过程; 2.为学生老师提供一个快捷了解学校动态的的平台,促进学校中同学 间的交流,方便学校一些通知的下达,以及一些活动讲座的宣传。 3.提升自己的专业技能,使自己更好的找到工作。 3.2 需求分析 该app的功能需求如下: 1. 实现用户注册与登录并且用户可以利用第三方账号登录。 2.实现学校概况通过列表对学校情况进行介绍。 .实现新闻列表的展示每个栏目对应相应的新闻。 34.点击列表新闻进入新闻详情页面,并且用户可以评论分享,收藏。 5.大家爆料的展示,及爆料详情的展示。 6.爆料评论,及新闻评论的实现。 7.实现用户头修改密码,修改资料功能
20、。 图集新闻的展示。 8.3.3 系统设计的原则 UI界面设计原则: 1.不要过度使用状态对话框。 2.不要使用固定的绝对定位的布局。 3.不要使用px单位,使用dp或者为文本使用sp。 4.干净而不过于简单。 5.关注内容而非修饰。 6.保存一致,使用户容易投入其中,可附加少许变化。 4 代码设计原则: 1.代码是一个应用的核心,代码设计好坏直接影响应用的健壮性,可读性,及可维护性,必须遵循以下的设计原则: 2.适当的为代码增加注释,一些方法,一些类,都必须加一些描述性的话,这样可以增强应用的可读性以及后期的维护。 3.各功能模块间尽量分开来,这样利于修改,维护。 4.合理分配各变量的作用域
21、,及周期。 5.变量命名需要使用一些有意义的命名,包括变量的命名、类的命名、布局的命名、资源文件的命名。 4.系统设计 4.1 数据库的设计 数据库表采用ormlite数据库,根据需求创建6个数据表,数据表中字段及字段类型,描述如以下表所示。 表1.用户表(user) 字段 类型 描述 备注 是否必须 UserAddress Varchar2 用户地址 必须 UserEmail Varchar2 用户邮箱 必须符合邮箱格式 必须 UserName Varchar2 用户名 字母数字及下划线组成 必须 UserPassWord Varchar2 密码 长度不能小于6位 必须 UserPhone
22、Varchar2 手机 必须符合手机格式 必须 UserRealName Varchar2 真实姓名 必须 UserNickName Varchar2 昵称 必须 UserZipPost Varchar2 邮编 必须符合邮编格式 必须 UserSex number 性别 0、女 1、男 2、未知 必须 5 表2.新闻栏目表(newsChanne) 字段 类型 描述 备注 是否必须 ID number 栏目ID 新闻栏目表主键 必须 ChannelName Varchar2 栏目名称 ImageUrl Varchar2 栏目图片URL IsShowHome number 是否固定栏目 1.固定
23、0.不固定 ShowOrder number 排序 表3.新闻表(news) 字段 类型 描述 备注 是否必须 num number 每次获取新闻个数 必须 chid number 栏目ID 必须 ID number 新闻的ID号 数据库表的主键 必须 ResourceGUID number 新闻GUID Title Varchar2 新闻标题 必须 Summary Varchar2 摘要 SourceForm Varchar2 来源 UpdateTime Date 修改时间 IsComment Varchar2 是否允许评论 True:可评论 False:不可评论 ResourceType
24、Varchar2 新闻类型 1.普通新闻 2.图集新闻 列表中显示的图片多个url地UploadPicName Varchar2 图片链接 址 SmallPicUrl Varchar2 缩略图 列表界面所显示缩略图 ChID number 栏目ID 新闻所属的栏目 6 表4.新闻详情表(newsDetail) 字段 类型 描述 备注 是否必须 ID number 新闻详情ID 为新闻详情表的主键 Title Varchar2 新闻标题 Summary Varchar2 摘要 SourceForm Varchar2 来源 UpdateTime Varchar2 修改时间 ResourceType
25、 Varchar2 新闻类型 UploadPicNames Varchar2 图片链接 SmallPicUrl Varchar2 缩略图 ChID number 栏目ID 表5.用户评论表(userComment) 请求参数名 类型 描述 备注 是否必填 num number 每次获取评论个数 必须 rid number 对应资源ID 必须 ID number 评论表ID 评论表的主键 CommentContent Varchar2 评论内容 CommentTime Varchar2 评论时间 GetGoodPoint number 点赞的总数 UserGUID Varchar2 评论人GUI
26、D UserIcon Varchar2 评论人头像链接 7 表6.用户爆料表(userRevelation) 表字段 类型 描述 备注 是否必须 ID number ID 爆料表的主键 必须 CreateTime Date 创建时间 RevelationContVarchar2 爆料内容 ent RevelationType number 爆料类型 PicUrl Varchar2 图片路径 PicCount number 图片数量 RevelationStatnumber 爆料状态 us UserGUID number 用户ID UserPhone Varchar2 用户手机 CommentC
27、ount number 评论数量 UserName Varchar2 用户名 UserIcon Varchar2 用户头像 UserNickName Varchar2 昵称 Status Varchar2 状态 5 详细设计 5.1首页主界面 5.1.1 功能描述 首页中采用了DrawerLayout实现侧滑菜单并遵循了Material Design设计原则主界面由ViewPage+Fragment实现,在加载数据时用到了异步加载任务类AsyncTask用它来处理一些耗时操作,处理一些http请求,利用fragment灵活的进行页面替换,在首页中也8 利用了ormlite的缓冲机制,当存在缓存时先加载缓存中的数据,如果没有则去解析xml文件获得数据。如果解析出错,则也去加载缓存中的,在界面显示上利用了PullToRefresh中的PullToRefreshListView将获得的数据进行绑定及显示,其中列表中图片的加载用到了异步加载图片类ImageLoad,并使用了动画,使图片加载时呈现一个透明度不断增加的动画,增加用户体验。 5.1.2 界面设计 9 5.1.3 具体实现及相关代码 5.2 新闻模块 5.2.1 新闻列表模块功能描述界面设计及
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1