Android移动终端开发大作业.docx

上传人:b****7 文档编号:9276588 上传时间:2023-02-04 格式:DOCX 页数:57 大小:248.83KB
下载 相关 举报
Android移动终端开发大作业.docx_第1页
第1页 / 共57页
Android移动终端开发大作业.docx_第2页
第2页 / 共57页
Android移动终端开发大作业.docx_第3页
第3页 / 共57页
Android移动终端开发大作业.docx_第4页
第4页 / 共57页
Android移动终端开发大作业.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

Android移动终端开发大作业.docx

《Android移动终端开发大作业.docx》由会员分享,可在线阅读,更多相关《Android移动终端开发大作业.docx(57页珍藏版)》请在冰豆网上搜索。

Android移动终端开发大作业.docx

Android移动终端开发大作业

Android移动终端开发大作业

一、作业要求

●1人一组,独立完成。

 

●根据个人爱好方向,自选题目,完成系统。

●在要求时间里完成系统主体功效,程序比较稳定运行。

 

●手机界面要求简练、美观,功效不能过于简单,应含有一定实用性。

 

●最少要3个Activity以上。

●必需使用自定义Listview,要使用Sqlite数据库或API调用与数据解析(API可使用聚合数据()、APIStore()或apix()提供API,如有能力也可自行开发服务器端)。

 

●欢迎好创意作品、实用作品,评分时会合适加分。

●需提交设计汇报,设计汇报格式见附件,按附件次序装订(包含评分表) 

●大作业成绩从工作量、功效点、创新性、实用性、汇报字数、质量及规范度等方面成绩组成  

二、注意事项

●压缩包内作业内容包含两部分:

1 作业项目文件夹,项目必需能够调试经过,android平台选择选择2.2或是2.3.3。

2 作业设计说明,word文件。

●能够借鉴网络上代码,但不可全部照搬。

不许相互剽窃,一旦发觉成绩为零。

 

附件1:

学号

7

成绩

 

Android平台移动应用开发

大作业

 

题目

基于Android新闻浏览软件设计与实现

学院

信息工程学院

专业

信息工程

班级

信息1303

姓名

杏允升

指导老师

秦珀石

 

12

10

一、

概述

 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)表示,跟软件开发合作对象亲密接触正在进行中。

谷歌与开放手机联盟联合开发了 Android操作系统,这个联盟由摩托罗拉、高通、宏达电、中国移动和 T-Mobile 等在内多家无线应用和技术领军企业组成。

谷歌经过与设备制造商、开发商、运行商和其她相关各方结成深层次合作关系,期望借助建立开放式、标准化移动移动电话软件平台,在移动产业内形成一个开放性生态系统,这将是开发Android软件一个契机,Android平台开发在未来肯定大放异彩。

二、

关键技术

1)使用ViewPager里面添加多张图片配合线程延时实现轮播图自

没有经过ScheduledExecutorService或Timer定时实施某个任务实现,而是简单经过handler发送消息去完成一次滚动,在完成一次滚动后发送另外一个delay滚动消息,如此循环实现。

自动滚动部分关键代码以下:

至于ViewPager嵌套引发子ViewPager无法触摸问题是经过在子ViewPageronTouchEvent中添加

严禁父控件对touchevent做intercept处理。

ViewPager滑动速度设置是经过反射方法重新设置ViewPagerScroller,改变ScrollerstartScroll间隔时间完成。

调用setScrollDurationFactor(double)即可。

2、使用

(1)引入公共库

引入AndroidAutoScrollViewPager@Github作为你项目library(怎样拉替换码及添加公共库)。

(2)调用

仅需简单两步:

a.布局定义

替换通常ViewPager定义

b.开启ViewPager自动滚动

startAutoScroll()开启自动滚动

stopAutoScroll()停止自动滚动

3、设置

setInterval(long)设置自动滚动间隔时间,单位为毫秒

setDirection(int)设置自动滚动方向,默认向右

setCycle(boolean)是否自动循环轮播,默认为true

setScrollDurationFactor(double)设置ViewPager滑动动画间隔时间倍率,达成减慢动画或改变动画速度效果

setStopScrollWhenTouch(boolean)当手指碰到ViewPager时是否停止自动滚动,默认为true

setSlideBorderMode(int)滑动到第一个或最终一个Item处理方法,支持没有任何操作、轮播以及传输到父View三种模式

setBorderAnimation(boolean)设置循环滚动时滑动到从边缘滚动到下一个是否需要动画,默认为true

4、其她

(1)指示器,圆形或是方形指示器请配合ViewPagerIndicator使用

(2)无限循环,假如期望在最终一张继续播放第一张而不是退回到第一张,请参考AutoScrollViewPagerSingleDemo.java,注意这个特征不能和ViewPagerIndicator使用

2)使用viewpager结合ViewPageIndicator进行新闻类别分类切换,可点击切换也能够滑动切换。

1.ViewPagerIndicatorLibrary

查看ViewpagerIndicatorLibrary代码,能够看到此项目设计思想:

首先定义了一个PageIndicator接口,它里面定义了最关键和基础indicator表现出部分方法:

   1.1首先一个indicator必需要与一个ViewPager关联在一起,所以它提供了一个setViewPager方法。

   1.2它扩展了ViewPager.OnPageChangeListener接口,表示接管了ViewPagerPager改变时监听处理,

       这也是为何为ViewPager设置OnPageChangeListener监听器时不能设置在ViewPager上而必需设置在

       indicator上原因。

   1.3还有一个notifyDataSetChanged通知方法,表示为这个ViewPager提供View(通常是Fragment) Adapter里面数据集发生改变时,实施动作,这里可增加相关逻辑。

2.ViewpagerIndicator实现类

 然后再看下ViewpagerIndicator实现类,共有6个,由6个类分别实现,它们分别为:

   2.1小圆圈类型

   2.2带图标类型               

   2.3小横线类型,距离屏幕最下边端有一定距离。

   2.4标签类型(Tab)

   2.5标题类型,与标签类型有点像,但它目前标题页左/右边标题会卷起,即往两端缩进去。

   2.6屏幕底部小横线类型,而且会占满整行。

                

3.ViewpagerIndicator随附带Demo

   Demo项目设计

   项目由一个ListSamplesListActivity入口,它关键用作组装全部子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使用方法Gsongson=newGson();Stringstr=ReadAssetsFile.readtext(this,"json_ss");//this目前类,"json_ss"需要解析文件名UserMessageuserMessage=gson.fromJson(str,UserMessage.class);//需要解析json文件最外层类名//fastjson使用方法Stringjson=ReadAssetsFile.readtxt(this,"json_h");UserMessageuser=JSON.parseObject(json,UserMessage.class);

自己扩展

4)使用Universal-Image-Loader对图片进行缓存加载

Android上最让人头疼莫过于从网络获取图片、显示、回收,任何一个步骤有问题都可能直接OOM,这个项目或许能帮到你。

UniversalImageLoaderforAndroid目是为了实现异步网络图片加载、缓存及显示,支持多线程异步加载。

它最初起源于FedorVlasov项目,且自此以后,经过大规模重构和改善。

特征列举:

多线程下载图片,图片能够起源于网络,文件系统,项目文件夹assets中以及drawable中等

支持随意配置ImageLoader,比如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其她部分配置

支持图片内存缓存,文件系统缓存或者SD卡缓存

支持图片下载过程监听

依据控件(ImageView)大小对Bitmap进行裁剪,降低Bitmap占用过多内存

很好控制图片加载过程,比如暂停图片加载,重新开始加载图片,通常使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动时候去加载图片

提供在较慢网络下对图片进行加载

使用过程:

创建默认ImageLoader,全部操作都由ImageLoader控制。

该类使用单例设计模式,所以假如要获取该类实力,需要调用getInstance()方法。

在使用ImageLoader显示图片之前,你首先要初始化它配置,调用ImageLoaderConfigurationinit()方法,然后你就能够实现多种显示了。

自定义配置imageloader,就像你已经知道,首先,你需要使用ImageLoaderConfiguration对象来初始化ImageLoader。

因为ImageLoader是单例,所以在程序开始时候只需要初始化一次就好了。

提议你在ActivityonCreate()方法中初始化。

假如一个ImageLoader已经初始化过,再次初始化不会有任何效果。

下面我们经过ImageLoaderConfiguration.Builder创建一个设置

得到imageLoader

使用过程:

(1)图像操作是否参与缓存以及图像效果配置操作

DisplayImageOptions以下是全部默认配置参数依据需求能够自定义配置

(2)图片加载监听器在这里吧能够设置加载时动画或者进度条之类东西这里

(3)简单设置就能够给ImageView添加图片了

对于当地图片,在其绝对地址前面要加入"file:

//"。

网络图片就直接写路径了。

缓存清理:

缓存清理能够按需求来定,能够再每个Activity生命周期函数onDestroy中清理也能够单独设置让用户自行清理。

GirdView,ListView加载图片:

相信大部分人都是使用GridView,ListView来显示大量图片,而当我们快速滑动GridView,ListView,我们期望能停止图片加载,而在GridView,ListView停止滑动时候加载目前界面图片,这个框架当然也提供这个功效,使用起来也很简单,它提供了PauseOnScrollListener这个类来控制ListView,GridView滑动过程中停止去加载图片,该类使用是代理模式

第一个参数就是我们图片加载对象ImageLoader,第二个是控制是否在滑动过程中暂停加载图片,假如需要暂停传true就行了,第三个参数控制猛滑动界面时候图片是否加载

概要设计

Json数据部分返回参数

名称类型说明

error_codeint返回码

reasonstring返回说明

resultstring返回结果集

titlestring新闻标题

contentstring新闻摘要内容

img_widthstring图片宽度

full_titlestring完整标题

pdatestring公布时间

srcstring新闻起源

img_lengthstring图片高度

imgstring图片链接

urlstring新闻链接

pdate_srcstring公布完整时间

 

三、系统实现

代码1:

packagecom.name.xinwen;

importcom.thinkland.sdk.android.JuheSDKInitializer;

importandroid.app.Application;

importandroid.content.Context;

importandroid.os.Handler;

importandroid.os.Looper;

/**

*@应用程序入口

*/

publicclassBaseApplicationextendsApplication{

privatestaticContextmContext;

privatestaticThreadmMainThread;

privatestaticintmMainThreadId;

privatestaticHandlermMainThreadHandler;

privatestaticLoopermMainThreadLooper;

@Override

publicvoidonCreate(){

super.onCreate();

JuheSDKInitializer.initialize(getApplicationContext());

//在应用程序入口提供全局工具

//上下文

mContext=this;

//根本程和子线程

mMainThread=Thread.currentThread();

//mMainThreadId=mMainThread.getId();

//目前应用程序进程ID

//mMainThreadId=android.os.Process.myPid();

//线程idmyTid();

mMainThreadId=android.os.Process.myTid();

//用户idmyUid();

//根本程handler

mMainThreadHandler=newHandler();

mMainThreadLooper=getMainLooper();

}

publicstaticContextgetContext(){

returnmContext;

}

publicstaticThreadgetMainThread(){

returnmMainThread;

}

publicstaticintgetMainThreadId(){

returnmMainThreadId;

}

publicstaticHandlergetMainThreadHandler(){

returnmMainThreadHandler;

}

publicstaticLoopergetMainThreadLooper(){

returnmMainThreadLooper;

}

}

packagecom.name.xinwen;

importcom.thinkland.sdk.android.JuheSDKInitializer;

importandroid.app.Application;

importandroid.content.Context;

importandroid.os.Handler;

importandroid.os.Looper;

/**

*@应用程序入口

*/

publicclassBaseApplicationextendsApplication{

privatestaticContextmContext;

privatestaticThreadmMainThread;

privatestaticintmMainThreadId;

privatestaticHandlermMainThreadHandler;

privatestaticLoopermMainThreadLooper;

@Override

publicvoidonCreate(){

super.onCreate();

JuheSDKInitializer.initialize(getApplicationContext());

//在应用程序入口提供全局工具

//上下文

mContext=this;

//根本程和子线程

mMainThread=Thread.currentThread();

//mMainThreadId=mMainThread.getId();

//目前应用程序进程ID

//mMainThreadId=android.os.Process.myPid();

//线程idmyTid();

mMainThreadId=android.os.Process.myTid();

//用户idmyUid();

//根本程handler

mMainThreadHandler=newHandler();

mMainThreadLooper=getMainLooper();

}

publicstaticContextgetContext(){

returnmContext;

}

publicstaticThreadgetMainThread(){

returnmMainThread;

}

publicstaticintgetMainThreadId(){

returnmMainThreadId;

}

publicstaticHandlergetMainThreadHandler(){

returnmMainThreadHandler;

}

publicstaticLoopergetMainThreadLooper(){

returnmMainThreadLooper;

}

}

代码2:

/*

*Copyright(C)AndreasStuetz<>

*

*LicensedundertheApacheLicense,Version2.0(the"License");

*youmaynotusethisfileexceptincompliancewiththeLicense.

*YoumayobtainacopyoftheLicenseat

*

*

*

*Unlessrequiredbyapplicablelaworagreedtoinwriting,software

*distributedundertheLicenseisdistributedonan"ASIS"BASIS,

*WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.

*SeetheLicenseforthespecificlanguagegoverningpermissionsand

*limitationsundertheLicense.

*/

packageorg.xinwen.indicator.lib;

importandroid.annotation.SuppressLint;

importandroid.content.Context;

importandroid.content.res.TypedArray;

importandroid.graphics.Canvas;

importandroid.graphics.Paint;

importandroid.graphics.Paint.Style;

importandroid.graphics.Typeface;

importandroid.os.Build;

importandroid.os.Parcel;

importandroid.os.Parcelable;

importandr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1