版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大庆师范学院本科毕业论文(设计)大庆师范学院本科生毕业论文基于Android系统的资讯类App的设计与实现学 院 计算机科学与信息技术 专 业 计算机科学与技术 研 究 方 向 嵌入式 学 生 姓 名 张旭 学 号 201204010106 指导教师姓名 崔金宝 指导教师职称 讲师 2016年5月10日22摘 要 随着智能手机市场的迅猛发展,移动端的需求异常火爆。获取新闻资讯、了解潮流风向、探听娱乐八卦是人们日常生活不可或缺的一项生活乐趣,于是资讯类App自然炙手可热 ,占据App市场很大的份额。本设计基于Android系统,以Java语言为开发语言,Android Studio为开发环境,设
2、计并实现了一款资讯类App。包含了图文资讯展示、视频资讯观看、评论收藏、分享至主流社交平台等功能。关键词:移动端;资讯;App;Android; AbstractWith the rapid development of smart phone market, mobile terminal needs unusually hot. Get news, insight into the trend direction, find entertainment gossip is a fun life indispensable in people's daily life,so info
3、rmation class aplication natural hotest,occupies a large part of the application market.This paper is based on the Android operating system, by the Java language for the development of language, Android Studio for the integrated development environment,design and implementation of an information cla
4、ss application.Contains picture and text information display, video information to watch, comment on the collection, to share the mainstream social platforms and other functions.Keywords: Mobile; Information;Application;Android;目 录第一章 绪论11.1 设计背景11.2 设计意义11.3 设计研究1第二章 操作系统和开发工具32.1 开发语言32.2 操作系统32.3
5、 开发环境32.4 相关技术介绍32.4.1 图片处理框架Glide32.4.2 数据持久化框架GreenDao42.4.3 网络请求框架Async-Http-Client4第三章 系统需求分析53.1 软件需求53.2 功能分析5第四章 系统详细设计和功能实现74.1 系统流程74.2 开发流程74.2.1 环境配置84.2.2 代码版本控制84.2.3 需求与BUG管理84.2.4 正式开发84.2.5 混淆与打包84.3 功能模块的设计与实现94.3.1 系统登录模块94.3.2 列表页模块104.3.3 详情页模块124.3.4 数据存储模块154.3.5设置模块154.3.6个人中心
6、模块164.3.7推送模块174.2.8广告模块17第五章 系统测试185.1系统测试185.2 测试结果及存在问题185.2.1 测试结果185.2.2 存在问题18结论19参考文献20致谢21第一章 绪论 1.1 设计背景智能手机,是由最初的掌上电脑演变而来1。随着用户渐渐对于随身处理信息方面功能的依赖,而又不满足同时携带多个设备,于是,掌上电脑的系统被放入了手机中,于是便出现了最初的智能手机。2007年第一代iPhone发布,搭载了被命名为“iPhone Runs OS X”的第一版IOS操作系统,2008年第一部搭载Android操作系统的智能机HTC Dream发布,2010年微软公
7、司发布Windows Phone 7.0,简称WP7。从此智能手机取代功能机(Feature phone)成功主宰移动设备市场2。人类作为一个社群生活的种族,自古以来就对资讯具有浓厚的兴趣。古有口耳相传,近有报纸广播电视,而在网络普及后,衍生了众多门户网站,成为了人们获取资讯的主要方式。现如今智能手机移动端强势崛起,资讯类App也渐渐取代资讯网站成为信息传播的中流砥柱。1.2 设计意义传统资讯类App的功能简单、风格单一、界面不够优美和阅读体验差等缺点一直为人们所诟病,个人认为一个优秀的App最为重要的就是用户体验,而最影响用户体验的就是一个舒适的阅读环境和人性化的体贴设计。本设计本着摆脱传统
8、资讯App的阴影、贴近用户的设计理念,为用户提供了一个拥有多种功能、风格独特、界面优美的优秀阅读环境。提高了用户的阅读效率和阅读兴趣。1.3 设计研究做为一个资讯类App,最重要的模块是图文数据展示,这就要求本设计对内存的管理要十分严格,大量的图片加载很可能造成内存溢出,本设计采用对过大的图片进行压缩,对Bitmap对象采用软引用,以便及时释放内存。由于本设计所展示数据来自于网络服务器,对网络传输安全的控制也十分必要,本设计将收集的手机信息和用户信息通过Base64加密,放入请求Head头中进行传输,以保证信息安全。如果一个Android App想要有一个好的阅读环境和优秀的UI交互,屏幕适配
9、是一个很重要的环节。由于Android设备的多样性,同样一个布局在众多分辨率下的效果有可能会相差很多,本设计采用创建多个Values文件夹对应不同分辨率,并新建dimens文件,对应分辨率设备进行适配,Android系统会在加载布局文件时自动寻找对应分辨率文件夹。第二章 操作系统和开发工具2.1 开发语言Java语言是一种可以编写跨平台应用软件的面向对象的程序设计语言3,它可以说是当今软件开发领域使用最广泛的开发语言。由于该语言有着很好的通用性、安全性、高效性以及可移植性,使它拥有了全世界最大的开发者专业群体。2.2 操作系统Android是一种开放源代码的操作系统,它是开源的操作系统Linu
10、x系统进行开发。最早由Google开发,之后是由开放手机联盟开发。底层是以Linux内核作为根据,只供给最基本的功能。基于的应用软件是由每个公司自己开发,以Java为编程语言。Android操作系统起始就是基于Linux操作系统设计的一个手机操作系统名称,也可以称它为一个由应用软件、界面、中间操作系统构成的平台。Android本意是指“机器人”。2.3 开发环境Android Studio是由Google在2013年I/O大会上推出的Android集成开发环境,基于IntelliJ IDEA4。 类似 Eclipse ADT,Android Studio 提供了集成的 An
11、droid 开发工具用于开发和调试。在IDEA的基础上,Android Studio 支持Gradle构建,为Android Studio提供专属的急速重构和修复,更为智能的代码提示工具,更高效的提升性能、可用性、版本兼容性等问题,支持ProGuard 和应用签名。Android Studio相对于Eclipse ADT的优势非常大。2.4 相关技术介绍2.4.1 图片处理框架GlideGlide是一个Android设备上高效开源的图片媒体处理框架。Glide具有获取、解码和展示视频剧照、图片、动画等功能,以及灵活的API,使开发者可以把它应用在任何需要的场景里,作者是bumptec
12、h。这个库被Google多次应用于开源项目中。作为Google官方建议使用的图片处理框架,Glide的优势十分明显,工作效率与缓存效果都十分不错,虽然在图片质量和代码量略占劣势,但其支持Gif动画和优秀的内存管理以及对于生命周期的控制都十分出色,所以在调研了Image-Loader、Fresco、Picasso等框架之后,决定使用Glide。2.4.2 数据持久化框架GreenDaoGreenDao是一个轻量级的Android ORM框架。自2011年开始被用于很多有名的应用开发中,它拥有简明好用的API,仅有100kb大小,不依赖不同手机CPU型号native层,Android集成的 jar
13、包就可以,能够自动生成代码,无需自己写繁琐的entity实体类,实体Dao层处理类。是 Android开发中数据库操作的最佳方案并且能够提供高性能、消耗低内存。2.4.3 网络请求框架Async-Http-ClientAsync-Http-Client是专门针对Android在Apache的HttpClient基础上构建的异步的Callback-Based Http Client5。所有的请求全在UI线程之外发生,而Callback发生在创建它的线程中,应用了Android的Handler发送消息机制。当然,也可以把Async-Http-Client应用在Service中或者后台线程
14、中,库代码会自动识别出它所运行的Context。它拥有非常简洁、清楚的API,几行代码便能完成复杂的网络请求操作,对于上传下载数据都有很好的封装。第三章 系统需求分析3.1 软件需求智能手机相对于PC的最大优势就在于它的便携性,人们随时随地都可以使用智能手机等移动设备获取自己想要了解的一切消息,也可以在任何情况下打发无聊的时间。全球网络指数机构(GWI)最新发布的一份调查报告显示,至少拥有一部智能手机的人数占全球总人数的比例近80%,庞大的用户群给了移动端App的高速发展的契机,而在各种类型的App中,资讯类App是一个非常火爆的类型,为使更多人能够第一时间了解资讯,提升生活品质,本人基于An
15、droid系统,设计并实现了这一款资讯类App。以丰富多彩的内容,简洁优美的界面,为用户提供一个舒适、新鲜、智能的阅读最新潮流资讯的环境。3.2 功能分析依据本人的实际调研,本设计主要有以下模块:登录模块、列表页模块、详情页模块、数据存储模块、设置模块、个人中心模块、推送模块、广告模块。各个模块实现的功能如下:1 登录模块:对使用部分功能的用户进行登录验证,只有登录用户才能使用这一部分功能。登录分为验证码登录和第三方账户登录两个部分,如果没有绑定过账号需要进行注册并确认用户名头像。需要进行登录验证的功能包括社会化分享、文章收藏、文章评论等等。 2 列表页模块:跟据不同频道的接口请求数据,列表页
16、条目样式共有五种,分别是首页焦点轮播图、列表页文章、列表页视频播放、列表页九宫格图片、列表页广告。要求列表页视频点击直接播放,且能够随ListView滑动而自动停止播放,列表页九宫格点击动画效果放大且大图能够左右滑动切换图片,其他条目点击跳转对应详情页或广告页。列表页实现收藏、分享、评论等功能。3 详情页模块:对接Html,请求并展示网络内容。具有评论模块,评论模块分为两部分,Html形式为列表样式,原生部分为弹幕形式。弹幕规则为五条轨道,错落分布,且初始状态不能重叠。新增评论即时出现,一次循环后处于队首。4 数据存储模块:根据需求,本设计需要实现缓存模块。用户浏览数据后列表页数据存至SQLi
17、te数据库,再次进入首先加载本地数据,若有网络请求网络数据替换本地数据,无网络不做请求。用户浏览后的详情页Html数据存至缓存文件夹,以文件方式存储,再次进入有网络时请求网络数据并替换本地数据,无网络时加载本地网页数据。5 设置模块:包括评价、封面故事、省流量模式切换、清除缓存、关于我们等功能。 6 个人中心模块:浏览收藏的文章,要求实现左滑删除功能、退出登录功能。7 推送模块:实现推送功能。要求自定义推送样式与点击事件,点击事件处理通过推送中自定义参数传递,实现点击跳转至某一频道列表,或点击跳转某一文章详情页等操作,默认行为是打开App。(8) 广告模块:实现广告位,此为销售需求。广告位主要
18、包括欢迎页视频广告、首页下推大图广告、首页轮播图广告、列表页详情页顶通广告等。通过系统的分析与调研,以上模块均符合实际功能需求,开发条件能够满足,开发周期合理,符合设立理念。第四章 系统详细设计和功能实现4.1 系统流程根据调研结果,本设计的流程是用户打开App进入欢迎页,播放视频广告,播放完毕或者被跳过进入主界面,若视频被点击进入广告页,广告页退出跳转至主界面。首页分为三个Tab,第一个为首页,首页为各频道内容精选,点击进入详情页,首页列表提供分享、收藏、评论入口。第二个为频道页,频道页中展示各个频道入口,点击跳转至各个频道列表页。每个列表页文章点击均可跳转至详情页,详情页提供评论、收藏、分
19、享入口。第三个为“我的”页,整合个人中心和设置功能。以上任意地方的收藏、分享、评论功能被触发时,未登录用户将跳转至登录页,已登录用户继续使用,第一次登录完毕将跳转注册页,提交用户名之后注册成功,即可使用全部功能。本设计流程图如图4-1所示:图4-1程序的架构流程图4.2 开发流程4.2.1 环境配置第一次开发Android项目,首先要配置开发环境。Android的开发语言是Java,所以要首先下载安装JDK,安装完成后配置环境变量JAVAHOME。其次下载Android Studio,并进行安装,由于国内不能直接访问Google,可以下载离线Gradle和SDK安装。4.2.2 代码版本控制代
20、码版本控制对于一个项目是十分重要的,它的作用不光体现在团队开发上,独立开发时也可以通过它保存代码、切出版本分支、回滚之前版本等等。本设计采用Git作为版本控制系统,Gitlab为远程服务器仓库,SourthTree作为Git客户端。首先在本地配置Git环境,然后在Gitlab创建仓库,最后在SourthTree克隆仓库到本地,在客户端上进行代码的提交与下拉。4.2.3 需求与Bug管理为避免开发需求缺失和方便Bug管理,本设计采用禅道对项目整个开发流程进行管理,每一条需求开发完毕后确认,满足全部需求后点击提交测试,测试人员将Bug进行描述指派给开发人员解决。4.2.4 正式开发新建工程并选择包
21、名,选择TargetSDK、MinSDK、BuildSDK和Gradle的版本,添加各项工程依赖,并在各个开发者平台注册账号,获得所需的Appkey。对class进行合理的分类,写好Base类。4.2.5 混淆与打包功能开发与测试完毕,还要做的就是上线的准备了。为了代码的安全性,我们需要对代码进行混淆。首先在Gradle配置文件中声明混淆文件,然后在混淆文件中添加混淆配置。在混淆文件中,需要通过-keep等语句保持第三方库不被混淆,否则第三方库无法被使用。混淆之后就是打包了,打包需要创建应用的key,也就是签名。这个key是唯一的,否则在应用升级替换时会因为签名不一致而卸载之前的版本。4.3
22、功能模块的设计与实现4.3.1 系统登录模块个人登录页面,在此界面,分为两个部分。手机号登录中用户输入手机号点击发送验证码,手机号通过正则表达式判断,如果格式正确点击发送验证码按钮,系统会请求接口发送验证码,否则提示“请输入正确的手机号”。用户输入验证码请求接口判断是否正确,正确则登录,否则提示“验证码错误”。第三方账户中点击对应账号类型(本设计引入QQ、微信、微博账户)调起第三方登录代码进行登录,进行授权后记录第三方账户信息传给后台进行登录。具体效果如图4-2所示:图4-2系统登录若是首次登录,登录后跳转至注册界面,具体效果如图4-3所示:图4-3系统注册4.3.2 列表页模块首页以及各频道
23、页面以列表页形式展示,列表页包括多种形式的条目。首页焦点图为自动播放的轮播图,由ViewPager实现,效果如图4-4所示:图4-4焦点图列表页视频点击后直接在列表页播放,并且需要跟随ListView滑动,所以原本比较流行的SurfaceView在本设计被替换成TextsureView。原因是SurfaceView的工作是创建独立于应用窗口之外的一个新的窗口,虽然这种工作方式的效率会比较高,在工作窗口刷新的时候不会重新绘制应用程序的窗口,但是因为SurfaceView的内容不在应用窗口上,所以进行一些属性的变换就比较力不从心,包括平移、旋转、缩放等等,也就很难跟随ListView的滑动。与Su
24、rfaceView相比,TextureView并没有创建一个单独的Surface用来绘制,这使得它可以像一般的View一样执行一些变换操作,设置透明度等。另外,Textureview必须在硬件加速开启的窗口中。播放器的实现由TextsureView与MediaPlayer配合实现。通过给ListView设置滑动监听实现在播放窗口滑出屏幕时停止播放。播放器下边是视频详情内容,背景采用异步高斯模糊处理。具体效果如图4-5所示:图4-5列表页视频 列表页九宫格采用ListView嵌套GridView实现。由于二者都是可滑动控件,如此便不可避免的产生了事件冲突,因此需要自定义View继承于GridVi
25、ew,重写OnMeasure方法。由于需要实现图片放大动画并且左右滑动,于是在窗口放置一个全屏的ViewPager,Visibility设置为Gone。ViewPagr的子view是一个PhotoView,在九宫格图片被点击时,ViewPager 设置Visible并调用setCurrentItem方法设置当前放大的图片,且记录被点击图片的位置与大小,为PhotoView设置动画,从被点击的图片位置与大小动画变成原本的大小。PhotoView本身支持手势缩放与旋转,更好的实现了图片预览。大图点击后执行动画缩小并且平移至对应的小图位置。具体效果如图4-6所示: 图4-6 列表页九宫格列表页普通文
26、章点击跳转至详情页,在此不多做表述。4.3.3 详情页模块详情页模块是在列表页点击进入的,通过SharedPreference判读是否第一次进入,第一次进入显示引导蒙层。详情页采用WebView加载Html网页形式展现,为使Webview及时释放内存,WebView采用代码动态生成方式并在退出时从父控件Remove掉,并在页面Destory时做一些处理。在详情页中需要实现用户点击跳转,因此需要拦截WebView的请求Url并做处理。详情页具体实现效果如图4-7所示:图4-7 详情页内容详情页中具有视频模块,需要实现点击全屏,因此需要设置WebChromeClient,并在其中的onShowCu
27、stomView和onHideCustomView方法中做相应处理。详情页中具有评论模块,前端部分采用列表页形式展现,在用户评论后由移动端调用JavaScript方法插入评论。前端部分评论具体实现效果如图4-8所示:图4-8 前端评论部分原生部分评论采用弹幕形式展现,以下为弹幕展示规则:(1) 弹幕展现位置,屏幕靠下1/3处。(2) 弹幕轨道数,从上到下共5条横向轨道。(3) 同轨道弹幕出现间隔,对同轨道上的弹幕,上一条显示全(即上一条的尾部在屏幕右侧出现后)才出下一条。(4) 下一轮弹幕开始时间:当上一轮弹幕展示完(即屏幕上不再有弹幕时),开始下一轮弹幕的播放,弹幕无限轮循环播放。根据需求分
28、析,采用PostDelayed随机数的方法控制出现时间,通过一个ViewList控制弹幕View的复用,每次从ViewList中取出第一位的View,在将View放入弹幕轨道后将其从集合中清除,在该条弹幕滚动完毕后重新放入ViewList实现图片复用。为避免弹幕初始重叠,在一条弹幕未显示完全时锁定该轨道,显示完毕后释放该轨道。弹幕动画通过属性动画ValueAnimator实现,属性动画通过动态设置View的X属性实现动画。通过对Animator设置监听实现动画完毕的操作。用户新增评论即时展示,并加入队列中,下一轮弹幕处于队首。弹幕具体实现效果如图4-9所示:图4-9 原生评论部分弹幕启动流程图
29、如下图4-10所示:图4-10弹幕流程4.3.4 数据存储模块为使用户在无网络状态仍然能阅读之前的数据,本设计实现了离线阅读。本模块通过SQLile数据库和WebView缓存实现。SQLite部分通过使用开源框架GreenDao实现,GreenDao以ORM(对象关系映射)方式存储数据,通过Java工程生成对应Moudle,并可以直接将Moudle对象转换为键值存储,大大的提升了开发效率,操作简单,效率高。详情页数据保存通过Webview自身的缓存机制实现,在有网络时,设置WebView的缓存模式为LOAD_DEFAULT,无网络为LOAD_CACHE_ELSE_NETWORK。4.3.5 设
30、置模块设置模块中是一些系统设置和App介绍,包括:(1) 赏个评价,通过Intent设置Uri跳转至默认应用市场,若手机没有市场则打开浏览器,跳转至应用宝网站,进行评论。(2) 封面故事,启动欢迎页,展示启动图。(3) 节省流量,设置是否进入省流量模式, 进入省流量模式后,将改变应用请求Head头中的“ius”字段,图片质量压缩至百分之八十以节省流量。(4)清除缓存,显示目前程序Cache目录的总大小,点击清除所有缓存文件。不清除磁盘下载文件。(5)关于我们,启动声明界面,展示服务协议和隐私声明。具体实现效果如图4-11所示:图4-11 设置模块 4.3.6 个人中心模块本模块的功能是展示用户
31、已收藏文章,列表具有删除功能。因此采用SwipeMenuListView实现,提供列表左滑菜单,效果如图4-12所示:图4-12 个人中心模块4.3.7 推送模块经过调研与实践,本设计推送功能选用友盟推送实现,服务端向友盟服务器推送自定义类型消息,App接受消息后,通过解析Json内容展示自定义Notification,并根据字段设置自定义点击事件,跳转至固定频道页、文章页与主页面,默认打开App。4.3.8 广告模块本模块为满足销售需求而设置,在现有模块中加入广告位,包括首页视频广告、列表页下推大图广告、列表页顶通广告,列表页广告等等。首页广告视频保存到数据库,开启子线程下载并保存,下次打开
32、App时播放,时长为5秒以内,播放器由SurfaceView与MediaPlayer组合实现。下推广告以PopWindow形式展示,具体效果如图4-13所示:图4-13下推广告第五章 系统测试5.1系统测试(1)功能测试,参照需求文档核对功能需求,检测是否有功能缺失,以及设计是否达到要求。(2) UI测试,参照UI设计图核对界面布局,以及各种动画效果是否达到设计要求,同时测试在不同尺寸与分辨率下的适配问题。(3)稳定性测试,测试在各种可能出先的情况下,程序的稳定性。(4)兼容性测试,通过在现有测试机以及Testin等云测试平台进行不同机型的兼容性测试。(5)性能测试,通过DDMS工具检测运行时内存大小、耗电量和是否有内存泄漏。5.2 测试结果及存在问题5.2.1 测试结果(1)功能测试,没有发现功能遗漏,所有功能均已实现,通过功能测试。(2)UI测试,在主流尺寸与分辨率下效果达到要求,通过UI测试。、(3)性能测试,在DDMS工具下检测,各项数据处于正常,运行效率与耗电量良好。5.2.2 存在问题(1)兼容性测试,在个别机型上出现WebView白屏的问题,经查阅资料和多次修改,得知
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淮阴师范学院《室内系统设计》2022-2023学年第一学期期末试卷
- 淮阴师范学院《网球》2022-2023学年第一学期期末试卷
- 淮阴师范学院《国学经典选读》2022-2023学年第一学期期末试卷
- 淮阴工学院《数据通信技术》2022-2023学年第一学期期末试卷
- 淮阴师范学院《播音与主持》2022-2023学年第一学期期末试卷
- DB3707121-2024小麦良种生产技术规程
- 低温仓储与食品冷链物流考核试卷
- 光纤激光器的原理与应用考核试卷
- 初等教育中的科学教育与创新考核试卷
- 电气设备安装安装调试考核试卷
- 《大医精诚》说课(新)
- 牛羊屠宰管理办法
- 《微观经济学》课程思政教学案例(一等奖)
- DBJ50T-232-2016 建设工程监理工作规程
- 国际人力资源管理课程教学大纲
- 深信服园区级双活数据中心
- T-CSCS 016-2021 钢结构制造技术标准
- DB37∕T 5031-2015 SMC玻璃钢检查井应用技术规程
- 回弹强度对应表
- DB32T 3713-2020 高速公路建设工程施工班组管理规范
- (完整版)气管插管技术PPT课件
评论
0/150
提交评论