基于Android平台新闻客户端设计与实现.docx
《基于Android平台新闻客户端设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Android平台新闻客户端设计与实现.docx(33页珍藏版)》请在冰豆网上搜索。
基于Android平台新闻客户端设计与实现
分类号密级
UDC编号
本科毕业论文(设计)
题目基于Android平台新闻客户端设计与实现
所在院系计算机学院
专业名称计算机科学与技术(嵌入式方向)
年级2012级
学生姓名陶昕星
学号1250313034
指导教师许庆炜
二○一六年四月
湖北第二师范学院毕业论文(设计)原创性声明
本人郑重声明:
所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。
除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律结果由本人承担。
论文作者签名:
年月日
文献综述
一、概述
随着PC互联网日趋饱和,智能手机的技术突破,移动互联网发生了井喷式的发展,各种智能终端伴随着通讯技术的进步成为新的阅读平台。
其中,移动新闻客户端就是发展迅猛的一种新闻阅读应用。
在激烈的市场竞争中,门户网站所开发的移动新闻客户端在下载量和受关注程度上都名列前茅,这与整个市场的发展现状以及门户网站移动新闻客户端的独特优势有密切关系。
与传统新闻信息传播方式相比,新闻客户端在新闻呈现方式上,采用了图文并茂方式,既发挥了门户网站新闻报道方式上的专长,又使新闻阅读实现了真正意义上的“随时随地,想看就看”。
本文将对移动智能手机平台,移动app,移动新闻客户端优势进行分析和总结。
二、主题
随着移动互联网的发展,我们的生活正在转变为“万物互联,移动为先"的智能生活方式。
在任何一个角落,任何一个物体,只要能够连接上互联网,它就能够和我们的手机进行通讯,手机终端控制窗帘,空调,电灯已经是司空见惯。
Android操作系统是由Google2008年研发发布的一种开源操作系统,发布以来,一直受到人们的追捧,短短几年之间,它就已经在全球市场份额跃居第一.其平台的应用程序数量也是一直处于飙升状态,其中一些生活服务类的应用程序给我们的生活带来了莫大的便利。
移动新闻客户端具备传播速度更快,覆盖范围更广,新闻内容更丰富,表现形式更新颖 等优势,使得人们更倾向于选择这种阅读方式。
相比于传统的报纸,期刊等阅读方式,新闻客户端阅读更加符合绿色环保,健康生活的生活理念。
三、总结
新闻客户端阅读,一种全新的阅读方式,它拥有传统阅读方式无法拥有的特点,这使得新闻客户端阅读方式必是大势所趋,一方面人们利用空闲时间,阅读知识,充实自己,另一方面,可以学习一些生活技能,了解时事,与时俱进。
让阅读成为一种习惯,开发一款移动新闻客户端是十分有必要的。
四、参考文献
[1](美)福思特著,刘云鹏译,XML入门经典(第五版),清华大学出版社2013
[2]孙卫琴,java面向对象编程。
电子工业出版社,2006。
[3]李刚,疯狂Java讲义(第三版),电子工业出版社,2014
[4]明日科技java从入门到精通(第3版),清华大学出版社,2012
[5]李兴华,名师讲坛-Android开发实战经典,清华大学出版社,2012
[6]李刚,疯狂Android讲义(第3版),电子工业出版社2015
[7]郭霖,第一行代码,人民邮电出版社,2014
[8]徐宜生,Androide群英传,电子工业出版社,2015
[9]任玉刚,Android开发艺术探索,电子工业出版社,2015
[10](美)霍斯特曼,科内尔著,周立新译,Java核心技术卷1,机械工业出版社2014
[11]鲍凯Java入门123—-一个老鸟的Java学习心得,清华大学出版社,2015
[12]CSDN博客,AndroidListView异步加载图片乱序问题,原因分析及解决方案http:
//blog.csdn。
net/guolin_blog/article/details/45586553
摘要
新闻阅读基本是每个人生活必需的生活内容。
在信息量越来越大的今天,这要求人们不断的摄取信息来充实自己。
新闻阅读既能获取生活所需要的有用信息,也能通过新闻阅开宽视野和思维.但是新闻阅读多数只能通过固定的时间地点方式来获取,无法做到随时随地获取到新闻资讯,往往由于这些因素,错过很多对自己有用的信息。
为了解决以上的诸多不便,基于Android的新闻客户端也应运而生.
通过对GoogleAndroidSDKAPI了解和学习,决定开发一款基于Android平台的新闻客户端应用程序,使Android用户可以方便,快捷的获取新闻资讯.本新闻客户端通过请求网络,将服务器返回的json数据解析显示在用户的手机界面上。
本文论述了Android移动新闻客户端的设计和开发实现过程.
关键词:
AndroidSDKjson数据移动新闻客户端服务器
Abstract
Newscontenttoreadbasiclivingnecessitiesoflifeforeveryone.Intoday'sincreasinglylargeamountofinformation,whichrequirespeopletocontinuallyintakeinformationtoenrichthemselves。
Newsreadertoobtainusefulinformationbothneedtolive,butalsothroughtheNewsopenwidehorizonsandthinking。
Butmostnewsreadercanonlybeacquiredbywayofafixedtimeandplace,cannotbedonetogetnewsandinformationanytime,anywhere,oftenasaresultofthesefactors,missalotofusefulinformationontheirown.Tosolvetheaboveinconvenience,Android-basednewsclientsalsoemerged。
ThroughtheGoogleAndroidSDKAPItolearnandbecomefamiliarwith,wedecidedtodeveloptodevelopanAndroid-basednewsclientapplicationthatallowsAndroiduserstoeasilyandquicklyaccessnews.Thenewsclientbyrequestingnetwork,jsonparsingdatareturnedbytheserverisdisplayedontheuser'smobilephoneinterface。
ThisarticlediscussestheAndroidnewsmobileclientdesignanddevelopmentimplementationprocess.
Keywords:
AndroidSDKjsondataNewsmobileclientServer
第1章绪论
1。
1研究背景
窗体顶端
如今,APP模式成为移动互联网最主要的应用形式。
其中,移动新闻客户端凭借其丰富的资讯资源,实时的信息推送和方便的社区互动被越来越多的用户认可。
在新媒体环境下,读者阅读时间和减少和碎片化趋势,预示着手机阅读的影响范围将会越来越广。
手机阅读不仅能快速获取新闻信息,同时契合了碎片化时代读者的便捷性,片段化和主动性的需求。
移动新闻阅读作为手机阅读的一种表现形式,采用将图片和文字内容相结合的方式将新闻信息展现给用户,这个方式使用户可以查看不同来源的新闻信息以及不同层次的信息,以最大程度上了解事情的原始缘由,同时可以搜索时间间隔较远的新闻信息。
移动新闻客户端市场已经成为移动媒体竞争的焦点,互联网各大门户网站纷纷使出浑身解数希望占领尽可能多的移动新闻客户端市场份额。
根据数据显示,在中国,新闻客户端市场排名前三的客户端分别为搜狐新闻,网易新闻和腾讯新闻,其中,这些新闻客户端在功能上过于繁重,对Android的设备系统版本有一定的要求,没有很好地做到向下兼容低版本,在较低版本的手机无法成功安装这些新闻客户端.
窗体底端
1。
2研究意义
虽然GoogleAndroidN已经出来了,但是在中国,由于手机制造商系统升级缓慢,据友盟数据显示,大部分的手机的Android版本还是在在Android4.4之下,一些公司为节省应用程序的开发成本,仅仅向下兼容到4.4版本,导致在低于4。
4版本的手机出现提示“解析包错误”.为了使低版本的手机也能够成功安装新闻客户端,故本项目使用低版本的AndroidSDKAPI和Android—support—xxx支持库API开发新闻客户端,以满足较早手机用户或者系统无法升级的用户阅读新闻的需要。
第2章新闻客户端开发环境及工具
2.1新闻客户端开发环境
不同于WebApp,Android原生应用使用AndroidSDK框架提供的api,基于java语言开发的,故需配置Java相关环境。
(1)Windows
(2)JDK1.8
(3)AndroidStudio
(4)Genymotion模拟器和Android手机
(5)Tomcat服务器
(6)mindjetmindmanager,MicrosoftVisio
2.2新闻客户端开发工具
开发Android应用程序的编译器有很多,其中应用最广泛的即是EclispseADT和AndroidStudio,本项目采用的是AndroidStudio。
AndroidStudio具有以下优势:
(1)非常强大,非常智能的代码提示和搜索功能.比如一个布局文件名字是layout_topfragment_listview_item_all。
xml,在eclipse中,必须要输入layout开头才能提示后面的,而在AndroidStudio里,只需要输入其中的任意一段,就会出现提示.再比如AndroidStudio会智能预测并给开发者最优的提示,每一次并非给出相同的提示结果.而是开发者最可能用的结果.
(2)颜色,图片在布局和代码中可以实时预览,编写布局可以实时预览UI效果。
(3)跨工程移动,搜索,跳转。
(4)支持更完善的插件系统.
(5)AndroidStudio基于IntelliJIDEA,基于Gradle构建的,允许通过插件自定义构建逻辑。
(6)Android专属的重构和快速修复。
Genymotion模拟器提供Android手机的模拟环境,可以将编写的apk安装到该模拟器上,实时检查代码的逻辑正确与否,在没有特定版本的Android设备时,使用Genymotion模拟器可以方便的调试应用程序,本项目使用真机和模拟器相结合的方式完成项目的调试工作。
2.3新闻客户端运行环境
该新闻客户端使用java语言编写的原生Android应用程序,仅运行Android系统平台,因项目的minSdk=9,即向下兼容到Android2。
3版本,故可以在Android2。
3和2。
3以上的设备安装。
2。
4新闻客户端运行效果的适配
由于Android设备分辨率的多样性,使得开发android应用程序时需要考虑android设备的屏幕适配问题。
本项目在布局上没有使用绝对布局,组件的尺寸使用了不同分辨率的下的不同值,代码中设置的像素单位值都经过了平台的相应转换,使得在不同分辨率的设备上能够显示出一致的UI效果。
第3章基于新闻客户端的概要设计
3.1新闻客户端需求分析
自从Google在Android5。
0中引入了全新的设计语言MaterialDesign,国内外很多公司将其应用到各自开发的应用程序中,如Google+,OneDrive,印象笔记,知乎,网易.
MaterialDesign不再让像素处于同一个平面,而是让他们按照规则处于空间当中,具备不同的维度,它强调根据用户行为凸显核心功能,进而为用户提供操作指引.由于本新闻客户端需要向下兼容到Android2.3版本,故需要使用MaterialDesign支持类库中的组件,使用到的支持类库有Android—support—v7,Android-
support-v4.
整个新闻客户端分为侧边栏和内容显示区域,默认情况下,侧边栏隐藏在屏幕左侧,用户可以通过点击Toolbar菜单按钮或者从屏幕左边缘向右滑动使左边侧边栏显示,内容显示区域分为上下两部分,上部分显示轮播图,自动播放显示最新的新闻信息,下部分显示新闻列表信息。
主界面设计草图如3-1所示。
图3—1主界面设计草图
通过点击侧边栏的不同的item可以切换到不同类别显示界面,其中图片显示界面是采用支持类库中的RecyclerView显示瀑布流的效果。
其设计草图如图3—2所示。
图3—2图片界面设计草图
段子界面采用卡片式布局显示方式,该显示方式在垂直于屏幕方式有一定的厚度,看起来像是浮在屏幕上一样,更符合人的视觉效果。
其设计草图如图3-3所示。
图3-3段子界面设计草图
3。
2新闻客户端功能描述
本新闻客户端由诸多Fragment共同显示的,启动该应用后,首先进入的欢迎界面SplashActivity,该界面主要是显示一些logo和预加载一些信息.延时3000ms或者用户触摸了屏幕后,程序自动进入主界面MainActivity,主界面默认显示新闻类信息,在主界面用户可以通过左右滑动查看该类型下不同分类的信息。
通过呼出侧边栏,点击其中不同的item,程序根据点击的position,主界面切换到不同的fragment显示不同类型的信息。
点击侧边栏的设置选项,程序将会跳转到一个新的设置界面SettingActivity,用户可以点击其中的item,设置App的一些属性。
例如:
新闻正文的字号大小,图片显示的列数。
3.3新闻客户端功能模块划分
根据新闻客户端的需求分析,总结出4个相互独立的模块,包括新闻模块,图片模块,段子模块,设置模块。
这四个模块是通过点击滑出的侧边栏item来进行切换的。
其中新闻模块下包含头条,娱乐,武汉,历史,校园,科技,汽车等分类;图片模块下包含人物,美景,汽车,建筑等分类;段子模块下包含经典语录和搞笑段子;设置模块主要是由设置中心组成的,该设置是一个单独的界面,用户可以通过设置中心,对新闻客户端进行一些系统的设置。
功能模块结构如图3-1所示。
图3—1新闻客户端模块图
3。
4新闻客户端组成结构图
在一些主流的Android手机应用程序中,为了能够在有限的空间内显示更多的组件和信息,通常其主界面显示风格主要分为:
底部Tab标签+侧边栏和顶部indicator+侧边栏。
该新闻客户端采用了顶部indicator+侧边栏,结合手势滑动,显示更多的信息。
侧边栏是由Android中使用非常频繁的应用组件ListView来显示的。
ListView组件不像其他组件直接设置内容就能显示,它通常要结合适配器Adapter一起使用,才能将数据显示在应用程序的界面上。
ListView显示是Android中最典型的MVC用例.M:
Model指的是要显示的数据,如封装数据的cursor,Array等;V:
view即是要显示封装好的数据的ListView;C:
controller即是Adapter,用来控制数据如何向ListView中显示,如ArrayAdapter,SimpleAdapter,CursorAdapter等.
点击ListView中不同的Item,主界面FrameLayout显示不同的Fragment,如点击ListView的第0个item,主界面FrameLayou中显示NewsContentFragment;点击ListView的第1个Item,主界面FrameLayout显示PhotoContentFragment;点击ListView的第2个Item,主界面FrameLayout显示DuanziContentFragment;点击ListView的第3个Item,启动一个新的Activity界面,显示设置中心的内容。
新闻客户端的组成结构图如图3-3所示。
图3—3新闻客户端组成结构图
3.5新闻客户端操作流程图
新闻客户端操作流程图,在Launcher界面点击该新闻客户端icon,启动该应用,进入应用的欢迎界面,展现一些logo信息,当用户触摸屏幕或者等待3000ms,应用程序自动进入主界面,用户从屏幕左边缘向右滑动,呼出侧边栏,点击其中的不同的item,程序根据点击item的position,主界面切换到不同的fragment显示各自的信息。
操作流程图如图3—3所示。
图3—3新闻客户端操作流程图
第4章新闻客户端开发所用技术
4。
1JSON数据传输格式
JSON(JavaScriptObjectNotation,JavaScript对象表示法)是一种轻量级的数据交换格式语言,JSON是独立于语言的文本格式,这使得JSON具备了跨平台的特点,在解析速度方面,JSON远远快于XML。
在当前移动互联网的蓬勃发展中,JSON作为服务器和客户端间数据交换格式,正在变得越来越重要。
JSON可用于描述的数据结构主要有以下两种:
(1)对象:
表示用“{}”括起来的内容,数据结构为{key:
value,key:
value,.。
。
}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,这个属性值的类型可以是数字,字符串,数组,对象等。
(2)JSON对象:
一般以‘{’开始,以‘}’结尾,在两者之间包含一系列非排序的名称/值对,每一名称/值对之间以分号隔开即可。
4.2Gson类库
Gson是Google提供的用来在java对象和JSON数据之间进行映射的java类库,可以将一个JSON字符串转换成一个java对象,或者反过来。
GSON和其他现有的javajson类库最大的不同是gson需要实例化实体类,而不需要使用annotation来标识需要序列化的字段。
Gson部分常用解析方法:
〈T〉T
fromJson(String json,Class classOfT)
ThismethoddeserializesthespecifiedJsonintoanobjectofthespecifiedclass.
〈T〉T
fromJson(String json,Type typeOfT)
ThismethoddeserializesthespecifiedJsonintoanobjectofthespecifiedtype
String
toJson(Object src)
ThismethodserializesthespecifiedobjectintoitsequivalentJsonrepresentation.
String
toJson(Object src,Type typeOfSrc)
Thismethodserializesthespecifiedobject,includingthoseofgenerictypes,intoitsequivalentJsonrepresentation。
4。
3SharedPreference文件存储
SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置。
它提供了java常规的long、int、String等类型数据的保存接口,其保存的文件路径为data/data/应用包名/shared_prefs。
用户卸载或清除该应用的数据时,该文件将会被自动删除.
SharedPreference四种操作模式。
(1)Context.MODE_PRIVATE:
为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容.
(2)Context.MODE_APPEND:
模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
(3)Context。
MODE_WORLD_READABLE:
表示当前文件可以被其他应用读取。
(4)Context.MODE_WORLD_WRITEABLE:
表示当前文件可以被其他应用写入。
SharedPreference读写方式:
写:
SharedPreferencessp=getSharedPreferences(Stringname,intmode);
SharedPreferences。
Editoreditor=sp。
edit();
editor。
put(key,value);
editor。
commit();
读:
SharedPreferencessp=getSharedPreferences(Stringname,intmode);
Stringvalue=sp.getString(Stringkey,StringdefValue)
4。
4xUtils框架
xUtils包含了很多实用的android工具,最低兼容android2。
2(apilevel8)
目前xUtils主要有四大模块:
(1)DbUtils模块:
①android中的orm框架,一行代码就可以进行增删改查;
②支持事务,默认关闭;
③可通过注解自定义表名,列名,外键,唯一性约束,NOTNULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);
④支持绑定外键,保存实体时外键关联实体自动保存或更新;
⑤自动加载外键关联实体,支持延时加载;
⑥支持链式表达查询,更直观的查询语义,参考下面的介绍或sample中的例子.
(2)ViewUtils模块:
①android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;
②新的事件绑定方式,使用混淆工具混淆后仍可正常工作;
③目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils。
view。
annotation.event。
(3)HttpUtils模块:
①支持同步,异步方式的请求;
②支持大文件上传,上传大文件不会oom;
③支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求;
④下载支持301/302重定向,支持设置是否根据Content—Disposition重命名下载的文件;
⑤返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。
(4)BitmapUtils模块:
①加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速②滑动时候出现的图片错