Android移动终端开发大作业一、作业要求●1人一组,独立完成。
●按照个人兴趣方向,自选题目,完成系统。
●在规定的时间里完成系统主体功能,程序比较稳定的运行。
●手机界面要求简洁、美观,功能不能过于简单,应具备一定的实用性。
●至少要3个Activity以上。
●必须使用自定义Listview,要使用Sqlite数据库或API调用与数据解析(API可使用聚合数据(https:///)、API Store(/)或apix(/)提供的API,如有能力也可自行开发服务器端)。
●欢迎好的创意作品、实用作品,评分时会适当加分。
●需提交设计报告,设计报告格式见附件,按附件顺序装订(包括评分表)●大作业成绩从工作量、功能点、创新性、实用性、报告的字数、质量及规范度等方面的成绩构成二、注意事项●压缩包内作业内容包括两部分:①作业项目文件夹,项目必须能够调试通过,android平台选择选择2.2或是2.3.3。
②作业设计说明,word文件。
●可以借鉴网络上的代码,但不可全部照搬。
不许相互抄袭,一旦发现成绩为零。
Android平台移动应用开发大作业基于Android的新闻浏览软件的设计与题目实现学院信息工程学院专业信息工程班级信息1303姓名杏允升指导教师秦珀石2015 年12 月10 日一、 ................................................................................................................. 错误!未定义书签。
二、概述 (3)三、关键技术 (4)四、概要设计 (8)五、系统实现 (9)六、心得体会.................................................................................................. 错误!未定义书签。
一、概述Android应用平台新闻客户端软件是基于Android手机平台,采用Java语言,从网络上的开放的新闻接口获取数据,设计出针对使用Android平台的手机新闻客户端资讯实时掌控的手机应用程序。
Android平台新闻客户端软件的开发可以进一步扩大时事新闻的覆盖面,让广大公众能够随时随地方便且快捷地获取最新的新闻资讯信息,了解新闻时事,本软件的广泛使用,尤其是在传授知识、普及教育方面起着非常重要的作用。
目前市场研究机构Worldpanel发布了全球主要的国家智能手机操作系统在去年Q4内的分布报告,报告指出了谷歌的Android继续保持着增长的势态,但是增幅已经明显放缓了。
而在另一个方面,苹果iOS操作系统在全球只能手机市场上均有下滑,个别国家的降幅甚至高达10.3%。
最新统计数据中显示,Android 操作系统将继续领跑全球市场,包括美国、澳大利亚、中国、意大利、英国、德国、西班牙等所占的市场比例都已经超出50%,并且还将继续呈现上涨的趋势。
而在苹果iOS操作系统方面,最大的市场份额所占比的国家依旧是美国,数值为43.9%;紧随美国的则是澳大利亚,数值为35.2%;而在中国方面,市场份额也从21.2%下降到了19%;在意大利,iOS所占的市场份额更是从23.1%猛降至12.8%。
从上面的数据可以看出,Android手机软件的开发具有巨大的发展前景,在Android系统上开发出一款手机新闻客户端软件所支持的用户量也是相比较于其他系统多出很多的。
谷歌的移动平台主管安迪·鲁宾(Andy Rubin)表示,跟软件开发合作对象的密切接触正在进行中。
Google与开放手机联盟联合开发了 Android操作系统,这个联盟由摩托罗拉、高通、宏达电、中国移动和 T-Mobile 等在内的多家无线应用和技术的领军企业组成。
Google通过与设备制造商、开发商、运营商和其他有关各方结成深层次的合作关系,希望借助建立开放式、标准化的移动移动电话软件平台,在移动产业内形成一个开放性的生态系统,这将是开发Android软件的一个契机,Android平台的开发在将来必定大放异彩。
二、关键技术1) 使用ViewPager里面添加多张图片配合线程延时实现轮播图的自没有通过ScheduledExecutorService或Timer定期执行某个任务实现,而是简单的通过handler发送消息去完成一次滚动,在完成一次滚动后发送另外一个delay的滚动消息,如此循环实现。
自动滚动部分核心代码如下:至于ViewPager嵌套引起子ViewPager无法触摸问题是通过在子ViewPager 的onTouchEvent中添加禁止父控件对touch event做intercept解决的。
ViewPager滑动速度的设置是通过反射的方式重新设置ViewPager的Scroller,改变Scroller的startScroll的间隔时间完成的。
调用setScrollDurationFactor(double)即可。
2、使用(1) 引入公共库引入Android Auto Scroll ViewPager@Github作为你项目的library(如何拉取代码及添加公共库)。
(2) 调用仅需简单两步:a. 布局定义代替一般的ViewPager定义b. 启动ViewPager自动滚动startAutoScroll() 启动自动滚动stopAutoScroll() 停止自动滚动3、设置setInterval(long) 设置自动滚动的间隔时间,单位为毫秒setDirection(int) 设置自动滚动的方向,默认向右setCycle(boolean) 是否自动循环轮播,默认为true setScrollDurationFactor(double) 设置ViewPager滑动动画间隔时间的倍率,达到减慢动画或改变动画速度的效果setStopScrollWhenTouch(boolean) 当手指碰到ViewPager时是否停止自动滚动,默认为truesetSlideBorderMode(int) 滑动到第一个或最后一个Item的处理方式,支持没有任何操作、轮播以及传递到父View三种模式setBorderAnimation(boolean) 设置循环滚动时滑动到从边缘滚动到下一个是否需要动画,默认为true4、其他(1)指示器,圆形或是方形指示器请配合ViewPagerIndicator使用(2)无限循环,如果希望在最后一张继续播放第一张而不是退回到第一张,请参考AutoScrollViewPagerSingleDemo.java,注意这个特性不能和ViewPagerIndicator 使用2)使用viewpager结合ViewPageIndicator进行新闻类别的分类切换,可点击切换也可以滑动切换。
1. ViewPager Indicator的Library查看Viewpager Indicator的Library代码,可以看到此项目的设计思想:首先定义了一个PageIndicator接口,它里面定义了最重要和基本的indi cator表现出的一些方法:1.1 首先一个indicator必须要与一个ViewPager关联在一起,所以它提供了一个setViewPager方法。
1.2 它扩展了ViewPager.OnPageChangeListener接口,表示接管了ViewPager的Pager改变时的监听处理,这也是为什么为ViewPager设置OnPageChangeListener监听器时不能设置在ViewPager上而必须设置在indicator上的原因。
1.3 还有一个notifyDataSetChanged通知方法,表示为这个ViewP ager提供View(一般是Fragment)的Adapter 里面的数据集发生变化时,执行的动作,这里可增加相关的逻辑。
2. Viewpager Indicator的实现类然后再看下Viewpager Indicator的实现类,共有6个,由6个类分别实现,它们分别为:2.1 小圆圈类型的2.2 带图标类型的2.3 小横线类型的,距离屏幕最下边端有一定的距离。
2.4 标签类型的(Tab)2.5 标题类型的,与标签类型的有点像,但它当前的标题页的左/右边的标题会卷起,即往两端缩进去。
2.6 屏幕底部小横线类型的,并且会占满整行。
3. Viewpager Indicator随附带的DemoDemo项目的设计项目由一个ListSamples的ListActivity入口,它主要用作组装所有的子indicator的列表。
TestFragment.java,所有ViewPager上真正显示的视图。
TestFragmentAdapter.java,所有ViewPager里的Adapter,为ViewPager生成TestFragment。
Samplexxx.java,所有的indicator的显示,一个类显示一种使用方法或特性2)使用viewpager结合ViewPageIndicator进行新闻类别的分类切换,可点击切换也可以滑动切换。
3)使用Gson对新闻数据的json字符串进行解析显示到listview上需要使用jar包fastjson或gson这两个jar包。
//Gson的使用方式Gson gson=newGson();String str=ReadAssetsFile.readtext(this,"json_ss");//this当前类,"json_ss"需要解析的文件名UserMessageuserMessage=gson.fromJson(str,UserMessage.class);//需要解析的json文件最外层类名//fastjson的使用方法String json=ReadAssetsFile.readtxt(this,"json_h"); UserMessage user = JSON.parseObject(json,UserMessage.class);自己扩展4)使用Universal-Image-Loader对图片进行缓存加载Android上最让人头疼的莫过于从网络获取图片、显示、回收,任何一个环节有问题都可能直接OOM,这个项目或许能帮到你。
Universal Image Loader for Android的目的是为了实现异步的网络图片加载、缓存及显示,支持多线程异步加载。
它最初来源于Fedor Vlasov的项目,且自此之后,经过大规模的重构和改进。