安卓移动应用新闻客户端课程设计.docx
- 文档编号:12365395
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:17
- 大小:328.52KB
安卓移动应用新闻客户端课程设计.docx
《安卓移动应用新闻客户端课程设计.docx》由会员分享,可在线阅读,更多相关《安卓移动应用新闻客户端课程设计.docx(17页珍藏版)》请在冰点文库上搜索。
安卓移动应用新闻客户端课程设计
南阳理工学院
《安卓移动应用开始课程设计》
1课题的背景
当今社会是一个网络化和信息化的社会,科技日渐发达,物质生活日渐丰富,自然而然,社会竞争也日趋激烈。
怎样在这样的一个社会中取得优势,利于不败之地。
其中一个重要条件就是要能及时获得信息,正确并有效地分析信息,才能对社会状态有最新的掌握,根据掌握的信息做出对自己最有利的决策。
从而达到事半功倍的效果。
从目前获得消息的各种渠道来分析,最为快捷方便的莫过于我们的智能手机了。
1.1课题的目的和意义
利用智能手机的便利性,开发一款能够在手机上随时随地阅读我们感兴趣和需要的新闻或信息的软件就是本论文的研究目的。
本论文将通过开发这么一款应用软件,总是基于某一种平台的。
对于目前手机市场而言,最为流行的智能手机平台莫过于Google公司的Android移动平台,在它面世后的几年内,给全球手机市场带来了革命性的变化。
综上所述,基于Android平台,开发一个上述的新闻客户端软件,是一个十分有意义的选题。
1.2新闻客户端可行性分析
1.2.1社会可行性
新闻客户端是基于智能手机Android平台开发的,而至今为止Android系统在全国乃至全球智能手机操作系统的市场份额仍占全球第一。
全世界使用此操作系统的用户早已超过14亿。
开发这么一款Android软件,将是十分流行的。
1.2.2技术可行性
Android移动平台是基于Linux的开源手机平台。
该平台由操作系统,中间件,用户界面,应用软件四大部分组成。
本软件基于AndroidSDK开发,使用到了Activity、Fragment、ListView、ViewPager等系统自带组件。
也使用到了ViewPagerIndicator、XUtils等第三方开源组件,这些技术都是开源免费的。
使用起来都比较简单灵活,被程序员广泛使用的。
展示界面也比较流畅,说明技术上是可行的。
1.2.3操作可行性
目前,大多数的智能手机都是基于Android平台的。
该软件支持Android2.2以上版本的运行。
所以大多数的Android手机都能运行该软件,并且该软件不含广告,没有病毒。
所以该软件的安装、调试、运行不会改变原先Android手机系统的布局与设置。
并且该软件的界面简单,稍加发点时间熟悉便能够轻易上手,对于阅读实时新闻来说是十分方便的。
1.3新闻客户端需求分析
1.3.1新闻客户端需求概述
启动应用程序后可以对新闻资讯进行实时更新,可以根据自己的兴趣选择不同栏目的新闻进行阅读,可以根据自己的喜好选择不同的新闻阅读方式如文字、图片或视频来获取最新的新闻资讯,在新闻阅读时可以根据自己的需求选择不同的模式,还可以对自己喜欢的文章进行分享到其他的大部分主流社交平台。
这些都是大部分用户的普遍需求,也是本新闻客户端软件需要实现的主要功能。
由此可得出本新闻客户端有如下功能性需求:
(1)Android新闻客户端界面要有不同新闻类别分类导航,每个类别必须有头条新闻展示和一系列详细的新闻信息列表。
(2)用户可以点击不同模块进入不同模式的新闻阅读模块。
在每个子栏目内容展示页面的上方将提供一个支持左右滑动的内容浏览区域,该区域将展示图集新闻(包含有大量图片资源的新闻),或者视频;
(3)用户可以在进入新闻详情页后根据自己的喜好来调节新闻阅读详情页的字体大小。
(4)用户可以在进入新闻详情页后点击分享按钮对自己喜欢的文章进行分享。
通过对用户的需求进行调查,从用户的需求角度出发,可以得出用户需要的三大主要性能指标为软件的响应速度快、安全性高和处理信息速度快。
所以本软件在设计时引用了大量的优秀的Android开源框架,减少了许多由于自己的设计导致的一系列代码冗余问题,还可以大大的增加开发效率。
另外为了适用于大多数用户,根据目前的Android设备系统版本分布情况,Android5.0以上版本的设备占到了95%。
所以开发时选择的最低适配版本是Android2.3。
由此得出该新闻客户端如下非功能性需求:
(1)该新闻客户端将会定时更新版本,不断增加新功能和完善已有功能以适应不断变化的需求,这需要本客户端具有很好的可扩展性,要求设计良好的代码以允许更多的功能在有需要的时候被加入到适当的位置中。
(2)该新闻客户端要兼容不同品牌、版本和分辨率的Android设备。
(3)该新闻客户端要界面友好,操作性强,易用性强。
所谓易用性就是各种功能不要藏的太深,用户应该很容易找到他们期望进行的各种操作;易学就是需要应用茶品可以通过简单的导航,在线帮助等各种方式保证用户可便捷掌握使用技巧;易用的重点则在让软件熟练使用后应该可以更快的进行各项操作。
(4)该新闻客户端要切换流畅,响应速度要快。
1.3.2新闻客户端功能分析
该软件的主要功能模块如下:
1.新闻模块,对新闻进行了分类展现。
2.组图模块,将新闻一图片形式展现。
3.视频模块,将新闻以视频形式展现。
4.新闻详情页,可以根据用户需求,自定义阅读模式。
5.分享模块,用户可以将自己喜欢的内容分享出去。
根据系统的功能分析,画出功能模块图和详情流程图如下所示:
图1-1新闻功能模块设计图
图1-2新闻客户端详情流程图
2系统分析
2.1研究的思路及方法
此新闻客户端软件主要以微软的Windows7操作系统作为开发环境,使用Eclipse+AndroidSDK作为开发工具,GitHub上的开源项目Xutils进行网络图片的加载与显示,第三方开源框架ViewPagerIndicator来作为新闻栏目分类显示的控件,ViewPager来实现广告轮播条,ListView来展示新闻列表,自定义控件来实现下拉刷新,上拉加载功能,ShareSDK实现第三方分享功能。
该软件利用ApacheTomcat8作为后台服务器提供Json数据,模拟客户端请求服务器接口程序的过程。
客户端通过访问服务端提供的接口利用HttpUtils开源组件进行Json数据解析,并显示到界面上。
3新闻客户端设计与实现
3.1开发环境介绍
3.1.1系统开发平台
新闻客户端的开发是在Eclipse+ADT的环境下进行的。
Eclipse是由IBM公司开发的一款免费的、开源的、基于Java的可拓展开发
平台。
通过丰富的插件组件来构建不同的开发环境。
ADT,Android开发工具。
它是集成在Eclipse中的插件,为Android的开发提供各种工具。
本软件就是在这样的环境中进行开发的。
3.2整体布局
新闻客户端总体可以分为3部分,上边是红色的标题栏,以RelativeLayout布局,其他每个界面都共用这一个布局。
标题主要用于显示模块的名称,通过在不同的模块调用setText()方法来改变显示的文字内容,效果如下图所示:
图3-1模块标题示意图
布局简要代码如下:
android: layout_width="match_parent" android: layout_height="wrap_content" android: background="@drawable/title_red_bg">
中间部分是每个模块的主体内容,以新闻模块为例,最上边的是新闻分类条目,可以左右滑动,是使用第三方开源框架ViewPagerIndicator实现的。
ViewPagerIndicator是GitHub上的免费开源项目,它是Android中最常用的第三方控件之一。
由于它使用简单,界面美观的特点,几乎市面上所有的Android类新闻软件都有使用它。
中间的是一个广告轮播条,每隔一秒切换一次界面,是使用ViewPager实现的。
下边的界面是新闻列表,可以上下滑动,是使用Android比较常用的一个经典控件ListView实现的。
界面效果如下图所示:
图3-2新闻模块布局示意图
下边部分是模块列表,通过点击可以切换到相应模块,下边模块列表是通过三个RadioButton实现的,点击RadioButton会改变图片和字体颜色,实现原理就是编写一个图片和颜色选择器,被选中时和未被选中时赋予不同的图片和颜色。
3个主要模块的实现是使用了ViewPager。
原始的ViewPager可以根据手指的滑动而切换界面,这显然不能满足我们的需求。
所以需要自定义一个控件继承ViewPager,重写它的onTouchEvent方法。
界面如下图所示:
图3-3模块切换布局示意图
具体布局代码如下所示:
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"/> ...
3.3新闻模块
3.3.1新闻类别列表
新闻类别列表是使用一个第三方开源框架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)view.findViewById(R.id.indicator); mIndicator.setViewPager(mViewPager);//把viewpager和mIndicator关联起来 mIndicator.setOnPageChangeListener(this);//设置TabPageIndicator的滑动监//听事件 3.3.2新闻条目列表 广告轮播条是新闻阅读类软件中的一个重要组成部分,它是由一个ViewPager组件来实现的,并且可以定义一个定时器来切换当前页面,来实现自动轮播效果。 ViewPager是一个可以左右滑动的View,它是Android扩展包android-support-v4里面的类。 通过这个类,用户可以自由的左右来回切换页面。 .ListView是Android系统自带的控件之一,它的使用同样是十分广泛的,它通常用来加载一系列相同布局的列表。 OnScrollListener,android.widget.AdapterView.OnItemClickListener接口。 主要代码如下: 1、初始化头布局: mHeaderView=View.inflate(getContext(),R.layout.refresh_header,null); this.addHeaderView(mHeaderView); tvTitle=(TextView)mHeaderView.findViewById(R.id.tv_title); tvTime=(TextView)mHeaderView.findViewById(R.id.tv_time); ivArrow=(ImageView)mHeaderView.findViewById(R.id.iv_arr); pbProgress=(ProgressBar)mHeaderView.findViewById(R.id.pb_progress); mHeaderView.measure(0,0); mHeaderViewHeight=mHeaderView.getMeasuredHeight(); 2、初始化底部布局 mFooterView=View.inflate(getContext(), R.layout.refresh_listview_footer,null); this.addFooterView(mFooterView); mFooterView.measure(0,0); mFooterViewHeight=mFooterView.getMeasuredHeight(); //隐藏刷新控件 mFooterView.setPadding(0,-mFooterViewHeight,0,0);this.setOnScrollListener(this); 在布局文件中使用此自定义控件如下: android: id="@+id/lv_list" android: layout_width="match_parent" android: layout_height="0dp" android: cacheColorHint="#fff" android: layout_weight="1"> 对应的显示界面如下: 图3-4新闻模块上拉刷新示意图 图3-5新闻模块下拉加载更多示意图 3.4组图模块 组图模块是整个客户端软件中比较简单的一个模块,它的功能就是改变新闻显示风格,以图片形式展现,满足不同需求的用户。 它的布局使用了网格布局GridView。 整体布局代码如下: android: id="@+id/gv_photo" android: layout_width="match_parent" android: layout_height="match_parent" android: numColumns="2" android: visibility="gone"/> 条目布局如下: android: layout_width="match_parent" android: layout_height="wrap_content" android: layout_margin="10dp" android: background="@drawable/pic_list_item_bg" android: gravity="center" android: orientation="vertical"> Java填充数据的代码主要集中在getView方法中,具体如下: if(convertView==null) { convertView=View.inflate(mActivity,R.layout.list_photo_item, null); holder=newViewHolder(); holder.tvTitle=(TextView)convertView .findViewById(R.id.tv_title); holder.ivPic=(ImageView)convertView .findViewById(R.id.iv_pic); convertView.setTag(holder); }else{ holder=(ViewHolder)convertView.getTag(); } PhotoInfoitem=getItem(position); holder.tvTitle.setText(item.title); utils.display(holder.ivPic,item.listimage); 实现效果如下图所示: 图3-6组图模块示意图 3.5视频模块 视屏模块和组图模块的设计类似,它的设计主要是为了满足喜欢通过视频来了解新闻时事动态的用户。 整体以一个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;} 3.6新闻详情页 新闻详情页即是点击新闻进入后的页面,使用一个WebView来实现。 在新闻详情页中,用户可以点击返回按钮返回到前一页面,也可以选择适合自己的字体大小来观看新闻,还可以点击分享按钮,将自己喜欢的文章分享到其他第三方社交平台。 主要布局代码如下: android: id="@+id/wv_web" android: layout_width="match_parent" android: layout_height="match_parent"/> 当点击某一新闻条目时,就会跳转到新闻详情的Actvity中,然后加载WebView所在的布局文件,最后从网络服务器上加载所需要的html文件,显示在WebView中。 新闻条目点击的代码如下: //在本地记录已读状态 Stringids=PrefUtils.getString(mActivity,"read_ids",""); StringreadId=mNewsList.get(position).id; if(! ids.contains(readId)) { ids=ids+readId+","; PrefUtils.setString(mActivity,"read_ids",ids); } changeReadState(view);//实现局部界面刷新方法 //跳转新闻详情页代码实现 Intentintent=newIntent(); intent.setClass(mActivity,NewsDetailActivity.class); intent.putExtra("url",mNewsList.get(position).url); mActivity.startActivity(intent); WebView中加载的具体代码如下: //所有跳转的链接都会在此方法中回调 @Override publicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){ //tel: 110 view.loadUrl(url); returntrue; } }); 界面显示图如下所示: 图3-7新闻详情页示意图 当点击左上角的返回按钮时,会调用Activity的finish()方法销毁当前Activity,退回到上一界面。 实现代码如下: caseR.id.btn_back: finish(); break; 当点击字体按钮时,会弹出选择对话框。 有5种字体大小可选择。 当选择与当前字体大小不同的字体时,通过WebView获得WebSettings对象,调用它的setTextSize()方法来设置字体大小。 具体实现代码如下: 3.7新闻分享 用户如果在新闻详情页遇到了自己喜欢的文章,可以点击分享按钮选择分享平台分享给其他好友,这就是分享模块需要实现的主要的功能。 该分享功能使用了第三方开源框架ShareSDK。 ShareSDK是一种第三方的社会化分享组件,它集成了一些常见的类库和接口,简化了开发者的开发时间。 ShareSdk不仅能为Android平台提供分享服务,它也能为其他手机平台如IOS或WP提供分享服务。 ShareSDK支持包括微信、QQ、微博、facebook、google+等国内外40多家社交主流平台。 1、应用该框架所需要的权限: name="android.permission.GET_TASKS"/> name="android.permission.ACCESS_WIFI_STATE"/> name="android.permission.ACCESS_NETWORK_STATE"/> name="android.permission.CHANGE_WIFI_STATE"/> name="android.permission.READ_PHONE_STATE"/> name="android.permission.MANAGE_ACCOUNTS"/> name="android.permission.GET_ACCOUNTS"/> 2、在配置文件中配置 android: name="cn.sharesdk.framework.ShareSDKUIShell" android: configChanges="keyboardHidden|orientation|screenSize" android: screenOrientation="portrait" android: theme="@android: style/Theme.Translucent.NoTitleBar" android: windowSoftInputMode="stateHidden|adjustResize"> scheme="tencent100371282"/> name="android.intent.action.VIEW"/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 移动 应用 新闻 客户端 课程设计