基于Android的新闻客户端设计与实现.docx
- 文档编号:8535993
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:16
- 大小:41.94KB
基于Android的新闻客户端设计与实现.docx
《基于Android的新闻客户端设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Android的新闻客户端设计与实现.docx(16页珍藏版)》请在冰豆网上搜索。
基于Android的新闻客户端设计与实现
基于Android的新闻客户端设计与实现
1绪论
研究的背景
当今社会是一个网络化和信息化的社会,科技日渐发达,物质生活日渐丰富,自然而然,社会竞争也日趋激烈。
怎样在这样的一个社会中取得优势,利于不败之地。
其中一个重要条件就是要能及时获得信息,正确并有效地分析信息,才能对社会状态有最新的掌握,根据掌握的信息做出对自己最有利的决策。
从而达到事半功倍的效果。
从目前获得消息的各种渠道来分析,最为快捷方便的莫过于我们的智能手机了。
它携带方便,能够让我们无论何时何地都能够及时了解社会发生的一切。
而Android系统又是所有智能操作系统中份额最大的,它以开源免费的特色而深受广大消费者和开发者的喜爱。
研究的目的和意义
利用智能手机的便利性,开发一款能够在手机上随时随地阅读我们感兴趣和需要的新闻或信息的软件就是本论文的研究目的。
本论文将通过查阅各种资料,开发这样一款手机软件。
它将所有的新闻资讯分门别类,当我们在手机上运行这款软件的时候,我们可以根据自己的兴趣选择我们感兴趣的类别,这样我们就只会看到我们所感兴趣的内容。
对于用户来说就可以既省时又省力地获得有意义的资讯了。
开发这么一款应用软件,总是基于某一种平台的。
对于目前手机市场而言,最为流行的智能手机平台莫过于Google公司的Android移动平台,在它面世后的几年内,给全球手机市场带来了革命性的变化。
无论在国内还是国外,一跃成为了份额最高的智能手机操作系统。
因此研究它,了接它的各个组件使用原理将是十分有意义的。
综上所述,基于Android平台,开发一个上述的新闻客户端软件,是一个十分有意义的选题。
中外相关研究文献综述
根据国内外关于手机新闻客户端的研究文献可以发现以下的几个主要的研究方向:
(1)对手机新闻客户端内容、特点的发展现状的研究。
中国学者王诗根、张永芹在论文《新媒体新闻客户端特点比较研究》[1]中,分析比较了网易新闻客户端和新媒体新闻客户端。
从这两种新闻客户端的内容定位,从互动性和更新速度等方面研究分析了两种新闻客户端的异同。
他们指出了新闻客户端充分利用了报纸、电视等不同媒介的共同点和互补性,在内容、宣传等方面进行了大量的整合。
他在论文中指出了新闻客户端以高效的互动和及时的更新等优势吸引了众多用户。
美国圣地亚哥州立大学着名的媒体研究者施密茨·维斯在他的文章《探索智能手机的新闻app和定位服务功能》[2]中研究了手机新闻客户端的用户群体,指出了美国手机新闻客户端的用户群特点,研究了手机新闻客户端的使用情况。
外国着名学者罗南·希尔兹在他的文章《谷歌推出基于安卓系统和IOS系统的新闻阅读器》[3]中吧谷歌新闻客户端作为研究对象,从手机新闻客户端的用户交互性研究,指出了手机新闻客户端中例如用户可以定制内容、分享内容等优势。
(2)对手机新闻客户端盈利模式的研究。
我国着名的学者张光凯在其研究论文《如何从手机新闻客户端中掘金》[4]中为新闻客户端的盈利模式提出了自己的多种意见。
他指出了对于新闻客户端的盈利模式不应该仅仅靠广告收入来维持。
还可以与其他通信运营商合作,建立多方盈利模式。
让用户在使用免费软件的过程中,嫁接第三方盈利平台。
中国民族大学学者张红伟在他的作品《媒体生态视野下的手机新闻客户端研究》[5]中说明了他自己的观点。
他认为手机新闻客户端是对新闻内容进行了编辑和加工,并提供互动服务,最可能的盈利模式是广告。
如果新闻客户端想扩大盈利收入,还需要降低新闻制作成本,挖掘潜在的消费能力。
使用户发费最小的流量享受更多更好的服务信息体验。
(3)手机新闻客户端的媒介研究。
中国传媒大学着名学者狄萌在他的论文《传统纸媒的手机新闻客户端如何深入人心》[6]中把《人民日报》和《网易新闻》作出了详细对比,探索传统纸媒的出路。
他认为传统纸媒新闻客户端想要发展下去有自己的出路,要坚持内容为王,坚持原创。
他将网络新闻的内容和纸媒相比较,表述出了自己的观点,指出了要加强新闻客户端的互动性。
美国着名编辑詹森·波特在其文章《更好的新闻客户端中》[7]中,研究了移动互联网高速发展的技术对新闻客户端的影响,并且对新闻客户端进行了分类,指出了不同新闻客户端的特点。
(4)手机新闻客户端的新闻同质化研究。
山东大学李锐在其论文《商业门户网站的手机新闻客户端同质化研究》[8]中,把腾讯手机新闻客户端、网易手机新闻客户端和搜狐手机新闻客户端作为主要的研究对象,对这三大手机新闻客户端的内容和外观进行了研究分析,从新闻客户端存在的问题入手,指出了手机新闻客户端采访相近、外观设计等方面存在严重相似问题。
学者陶莹在她的研究《谁创造了我们的新闻——新媒体环境下新闻同质化现象研究》[9]中,对报纸、电视、网络新闻等多种新闻的同质化现象进行了分析,她指出了新闻同质化的诸多危害和一定的积极影响。
通过以上国内外学者文献对手机新闻客户端的研究,可以看出通过探索各种手机新闻客户端在网络发展的过程中所存在的问题,找出它们的异同,吸取各种新闻客户端发展过程中的优势与经验是十分有意义的。
研究的思路及方法
JAVA作为用户最多的开发语言,它具有简单、面向对象、安全等特点。
所以选择用JAVA作为新闻客户端的开发语言。
该新闻客户端是一个移动互联网产品,它通过Android系统与移动互联网进行连接。
它通过解析服务端传递过来的Json或Xml数据,并将其解析结果显示在界面展示给用户。
用户下载安装此软件后,可以极其方便地根据自己的兴趣选择相应的栏目,进行新闻分类阅读。
现在的手机新闻客户端不仅仅是简单的阅读,更多的是加入了分享和社交功能,这也是一个明显趋势。
现在的用户新闻阅读不再是简单的接收,他们也想通过将他们喜欢的文章分享出去来表达自己的思想,展现自己的诉求,甚至体现自我的品位,他们渴望和其他用户交流自己的想法。
此新闻客户端软件主要以微软的Windows7操作系统作为开发环境,使用Eclipse+AndroidSDK作为开发工具,GitHub上的开源项目Xutils进行网络图片的加载与显示,第三方开源框架ViewPagerIndicator来作为新闻栏目分类显示的控件,ViewPager来实现广告轮播条,ListView来展示新闻列表,自定义控件来实现下拉刷新,上拉加载功能,ShareSDK实现第三方分享功能。
该软件利用ApacheTomcat8作为后台服务器提供Json数据,模拟客户端请求服务器接口程序的过程。
客户端通过访问服务端提供的接口利用HttpUtils开源组件进行Json数据解析,并显示到界面上。
利用多个不同android版本、不同分辨率的android虚拟机作为测试终端。
将系统划分为若干模块,对多个模块进行独立的单元测试。
最后对整个客户端进行整体测试。
确保此软件能够在大多数Android手机上稳定运行。
2新闻客户端可行性分析
社会可行性
新闻客户端是基于智能手机Android平台开发的,而至今为止Android系统在全国乃至全球智能手机操作系统的市场份额仍占全球第一。
全世界使用此操作系统的用户早已超过14亿。
开发这么一款Android软件,将是十分流行的。
随着计算机技术和移动互联网的发展,网民数量越来越多,网络世界越来越丰富,人们也非常熟悉智能手机操作。
市场上此类软件也有一些成功案例,用户也接受在手机上下载新闻阅读软件来阅读新闻。
此软件严格按照国家法律法规来进行研究、实践,并无法律和政策方面的限制。
技术可行性
Android移动平台是基于Linux的开源手机平台。
该平台由操作系统,中间件,用户界面,应用软件四大部分组成。
本软件基于AndroidSDK开发,使用到了Activity、Fragment、ListView、ViewPager等系统自带组件。
也使用到了ViewPagerIndicator、XUtils等第三方开源组件,这些技术都是开源免费的。
使用起来都比较简单灵活,被程序员广泛使用的。
展示界面也比较流畅,说明技术上是可行的。
在科技日趋发达的今天,硬件更新的速度越来越快,内存容量越来越大,CPU速度越来越快,可靠性越来越高,价格越来越便宜,其硬件平台完全能满足此软件的需要。
操作可行性
目前,大多数的智能手机都是基于Android平台的。
该软件支持以上版本的运行。
所以大多数的Android手机都能运行该软件,并且该软件不含广告,没有病毒。
所以该软件的安装、调试、运行不会改变原先Android手机系统的布局与设置。
并且该软件的界面简单,稍加发点时间熟悉便能够轻易上手,对于阅读实时新闻来说是十分方便的。
3新闻客户端需求分析
新闻客户端需求概述
启动应用程序后可以对新闻资讯进行实时更新,可以根据自己的兴趣选择不同栏目的新闻进行阅读,可以根据自己的喜好选择不同的新闻阅读方式如文字、图片或视频来获取最新的新闻资讯,在新闻阅读时可以根据自己的需求选择不同的模式,还可以对自己喜欢的文章进行分享到其他的大部分主流社交平台。
这些都是大部分用户的普遍需求,也是本新闻客户端软件需要实现的主要功能。
由此可得出本新闻客户端有如下功能性需求:
(1)Android新闻客户端界面要有不同新闻类别分类导航,每个类别必须有头条新闻展示和一系列详细的新闻信息列表。
新闻内容将以12个子栏目类别进行内容展示,其中首页、荆州、社会、娱乐、体育等5个子栏目为系统默认显示的主要栏目。
用户在该模块下将看到当下最新鲜热门的新闻内容,头条栏目下所展示的新闻内容会可能从属于到他任意一个栏目,可以与其他子栏目的内容有所重合。
(2)用户可以点击不同模块进入不同模式的新闻阅读模块。
在每个子栏目内容展示页面的上方将提供一个支持左右滑动的内容浏览区域,该区域将展示图集新闻(包含有大量图片资源的新闻),或者视频;在每个子栏目的下方将以列表的形式展示新闻内容,排序要求遵循新闻的时效性。
(3)用户可以在进入新闻详情页后根据自己的喜好来调节新闻阅读详情页的字体大小。
(4)用户可以在进入新闻详情页后点击分享按钮对自己喜欢的文章进行分享。
由于该客户端运行在手机终端的安卓平台上,那么对其响应用户的时间为5
秒钟之内,如果超过5秒,手机终端会出现假死现象,这会降低用户体验。
为提高用户体验,要求所有用户的简单操作所消耗的处理时间在5秒之内,而耗时操作(如:
服务器访问)这种也要求在10秒钟之内完成,同时不能让用户有较长的时间等待,在处理耗时请求的同时不能影响用户的其他操作,避免出现假死现象。
通过对用户的需求进行调查,从用户的需求角度出发,可以得出用户需要的三大主要性能指标为软件的响应速度快、安全性高和处理信息速度快。
所以本软件在设计时引用了大量的优秀的Android开源框架,减少了许多由于自己的设计导致的一系列代码冗余问题,还可以大大的增加开发效率。
另外为了适用于大多数用户,根据目前的Android设备系统版本分布情况,以上版本的设备占到了95%。
所以开发时选择的最低适配版本是。
由此得出该新闻客户端如下非功能性需求:
(1)该新闻客户端将会定时更新版本,不断增加新功能和完善已有功能以适应不断变化的需求,这需要本客户端具有很好的可扩展性,要求设计良好的代码以允许更多的功能在有需要的时候被加入到适当的位置中。
(2)该新闻客户端要兼容不同品牌、版本和分辨率的Android设备。
(3)该新闻客户端要界面友好,操作性强,易用性强。
所谓易用性就是各种功能不要藏的太深,用户应该很容易找到他们期望进行的各种操作;易学就是需要应用茶品可以通过简单的导航,在线帮助等各种方式保证用户可便捷掌握使用技巧;易用的重点则在让软件熟练使用后应该可以更快的进行各项操作。
(4)该新闻客户端要切换流畅,响应速度要快。
新闻客户端功能分析
根据以上对用户的需求分析可以得出新闻客户端的主要系统功能模块概述如下:
新闻客户端是阅读新闻必不可少的软件,用户能够根据自己的需求,选择相应的分类进行阅读。
新闻内容都是通过请求服务器获得的,客户端通过解析服务端传递过来的JSON数据,最终显示在界面上。
系统的设计与开发都严格遵循软件工程的规范,运用了软件设计模式,减少系统模块间的耦合[10]。
该软件的主要功能模块如下:
1.新闻模块,对新闻进行了分类展现。
2.组图模块,将新闻一图片形式展现。
3.视频模块,将新闻以视频形式展现。
4.新闻详情页,可以根据用户需求,自定义阅读模式。
5.分享模块,用户可以将自己喜欢的内容分享出去。
根据系统的功能分析,画出功能模块图和详情流程图如下所示:
图新闻功能模块设计图
FigureDesignOfTheClientFunctionModule
图新闻客户端详情流程图
FigureFlowDiagramofLookingOverNewsDeta
4新闻客户端设计与实现
开发环境介绍
系统开发平台
新闻客户端的开发是在Windows+Eclipse+ADT的环境下进行的。
Windows操作系统是美国微软公司开发的一款操作系统。
自面世以来,就受到了广大消费者的欢迎。
由于其界面的美观的易用,慢慢成了家家户户最喜爱的计算机操作系统。
本新闻客户端就是基于这么一款操作系统来进行开发的,降低了学习系统的成本。
Eclipse是由IBM公司开发的一款免费的、开源的、基于Java的可拓展开发
平台。
通过丰富的插件组件来构建不同的开发环境。
ADT,Android开发工具。
它是集成在Eclipse中的插件,为Android的开发提供各种工具。
本软件就是在这样的环境中进行开发的。
运行环境
本软件是在以上版本的系统中运行的。
整体布局
软件与用户的交互主要是以Activity+Fragment来实现的。
Activity是一个Android系统自带的重量级组件,它主要用于与用户界面的交互[10]。
它是一个有生命周期的对象,它也是Android四大组件中最常用的一个。
Android开发者通过新建一系列Activity的子类,覆写它的onCreate方法来实现一系列的功能。
Fragment是一个Android系统轻量级组件,它的使用可以大量释放内存空间[11]。
我们可以将Fragment当成是Activity中的模块,这个模块有生命周期和布局,可以单独处理自己的输入。
可以在Activity运行的时候动态地加载或移除Fragment。
Fragment可以在Activity中被大量复用,实现灵活的布局,改善用户体验。
新闻客户端总体可以分为3部分,上边是红色的标题栏,以RelativeLayout布局,其他每个界面都共用这一个布局。
标题主要用于显示模块的名称,通过在不同的模块调用setText()方法来改变显示的文字内容,效果如下图所示:
图模块标题示意图
FigureModuleTitle
布局简要代码如下:
android: layout_width="match_parent" android: layout_height="wrap_content" android: background="@drawable/title_red_bg"> /> />
中间部分是每个模块的主体内容,以新闻模块为例,最上边的是新闻分类条目,可以左右滑动,是使用第三方开源框架ViewPagerIndicator[12]实现的。
ViewPagerIndicator是GitHub上的免费开源项目,它是Android中最常用的第三方控件之一。
由于它使用简单,界面美观的特点,几乎市面上所有的Android类新闻软件都有使用它。
中间的是一个广告轮播条,每隔一秒切换一次界面,是使用ViewPager实现的。
下边的界面是新闻列表,可以上下滑动,是使用Android比较常用的一个经典控件ListView[13]实现的。
界面效果如下图所示:
图新闻模块布局示意图
FigureNewsModuleLayout
下边部分是模块列表,通过点击可以切换到相应模块,下边模块列表是通过三个RadioButton实现的,点击RadioButton会改变图片和字体颜色,实现原理
就是编写一个图片和颜色选择器,被选中时和未被选中时赋予不同的图片和颜色。
3个主要模块的实现是使用了ViewPager[14]。
原始的ViewPager可以根据手指的滑动而切换界面,这显然不能满足我们的需求。
所以需要自定义一个控件继承ViewPager,重写它的onTouchEvent方法。
界面如下图所示:
图模块切换布局示意图
FigureModuleChangeLayout
具体布局代码如下所示:
android: id="@+id/rg_group" android: layout_width="match_parent" android: layout_height="wrap_content" android: orientation="horizontal"> android: id="@+id/rb_news" style="@style/BottomTabStyle" android: drawableTop="@drawable/main_news_selector" android: text="新闻" android: textColor="@drawable/text_color_selector"/> ...
新闻模块
新闻类别列表
新闻类别列表是使用一个第三方开源框架ViewPagerIndicator来实现的,主流的新闻客户端软件基本上都有使用这一框架。
此列表可以左右滑动,点击即切换。
点击向右的图标也可以切换当前条目。
我们可以修改该框架的源代码来自定义我们自己喜欢的显示风格。
当使用这一框架时,我们还需要注意的是,当需要设置与之关联的ViewPager的监听方法时,不能直接设置该ViewPager的监听方法,只能设置ViewPagerIndicator的setOnPageChangeListener方法。
具体的使用代码如下所示:
1、在布局文件中使用
<
android:
id="@+id/indicator"
android:
layout_width="match_parent"
android:
layout_height="wrap_content"
android:
layout_weight="1"/>
2、在Java类中配置
mIndicator=(TabPageIndicator)();
(mViewPager);ListView是Android系统自带的控件之一,它的使用同样是十分广泛的,它通常用来加载一系列相同布局的列表。
使用它同样需要一个PagerAdapter适配器来给它提供数据。
从新闻列表的特征来看,显然是由一个ListView来实现的。
但是为了在滑动ListView的时候,带动ViewPager一起滑动,则需要自定义一个控件,来讲广告轮播条的ViewPager和新闻列表的ListView关联起来。
而大部分的新闻软件都有上拉刷新和下拉加载更多的功能,所以在此自定义控件中也应加上上拉刷新和下拉加载更多的功能。
此自定义控件继承了ListView类,实现了接口。
主要代码如下:
1、初始化头布局:
mHeaderView=(getContext(),,null);
(mHeaderView);
tvTitle=(TextView)();
tvTime=(TextView)();
ivArrow=(ImageView)();
pbProgress=(ProgressBar)(ess);
(0,0);
mHeaderViewHeight=();
2、初始化底部布局
mFooterView=(getContext(),
null);
(mFooterView);
(0,0);
mFooterViewHeight=();
indViewById();
=(ImageView)convertView
.findViewById();
(holder);
}else{
holder=(ViewHolder)();
}
PhotoInfoitem=getItem(position);
;
;
实现效果如下图所示:
图组图模块示意图
FigurePictureModule
视频模块
视屏模块和组图模块的设计类似,它的设计主要是为了满足喜欢通过视频来了解新闻时事动态的用户。
整体以一个ListView来布局。
主要布局如下:
android: id="@+id/lv_photo" android: layout_width="match_parent" android: layout_height="match_parent" android: cacheColorHint="#fff" android: divider="@null"/> 在Java中的实现方式也基本保持一致,可以使用ViewHolder类来优化ListView,实现ListView的复用,代码如下: staticclassViewHolder{ publicTextViewtvTitle; publicImageViewivPic; } 新闻详情页 新闻详情页即是点击新闻进入后的页面,使用一个WebView来实现。 在新闻详情页中,用户可以点击返回按钮返回到前一页面,也可以选择适合自己的字体大小来观看新闻,还可以点击分享按钮,将自己喜欢的文章分享到其他第三方社交平台。 主要布局代码如下: android: id="@+id/wv_web" android: layout_width="match_parent" android: layout_height="match_parent"/> 当点击某一新闻条目时,就会跳转到新闻详情的Actvity中,然后加载WebView所在的布局文件,最后从网络服务器上加载所需要的html文件,显示在WebView中。 新闻条目点击的代码如下: d; if(! (readId)) { ids=ids+readId+","; (mActivity,"read_ids",ids); } changeReadState(view);rl); (intent); WebView中加载的具体代码如下: how(); (); } }); 对于请求JSON数据的解析,我们主要有两种方法。 一是使用官方提供的JSONObject类解析,另一种方法是使用Google的开源库GSON。 还有一些其它的第三方开源库也可以解析,如Jackson\FastSON等等。 使用JSONObject解析JSON数据时,只要遵循这样一个原则就会十分简单,即遇到对象就实例化一个JSONObject对象,遇到数组就实例化一个JSONArray对象,然后调用它们的get方法即可取出相对应的属性或数组成员。 Gson是Googel官方提供的JSON解决方案。 它主要有两个功能,一是将JSON解析为对象,二是将对象转化为JSON串。 使用起来十分简单方便,但必须保证对象属性名和JSON字段名保持一致。 使用该技术能大量减少Android程序员的开发工作。 所以本新闻客户端采用了Gson来解析JSON数据。 JSONObject解析JSON对象虽然简单,但是Gson解
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 新闻 客户端 设计 实现