欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:33458643       资源大小:514KB        全文页数:48页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    -作者xxxx-日期xxxxAndroid移动终端开发大作业【精品文档】Android移动终端开发大作业一、 作业要求l 1人一组,独立完成。 l 按照个人兴趣方向,自选题目,完成系统。l 在规定的时间里完成系统主体功能,程序比较稳定的运行。 l 手机界面要求简洁、美观,功能不能过于简单,应具备一定的实用性。 l 至少要3个Activity以上。l 必须使用自定义Listview,要使用Sqlite数据库或API调用与数据解析(API可使用聚合数据( Store( l 欢迎好的创意作品、实用作品,评分时会适当加分。l 需提交设计报告,设计报告格式见附件,按附件顺序装订(包括评分表) l 大作业成绩从工作量、功能点、创新性、实用性、报告的字数、质量及规范度等方面的成绩构成  二、 注意事项l 压缩包内作业内容包括两部分: 作业项目文件夹,项目必须能够调试通过,android平台选择选择2.2或是2.3.3。 作业设计说明,word文件。l 可以借鉴网络上的代码,但不可全部照搬。不许相互抄袭,一旦发现成绩为零。附件1:学 号成 绩Android平台移动应用开发大 作 业题 目基于Android的新闻浏览软件的设计与实现学 院信息工程学院专 业信息工程班 级信息1303姓 名杏允升指导教师秦珀石2015年12月10日一、 3二、 概述4三、 关键技术5四、 概要设计6五、 系统实现7六、 心得体会8一、 概述 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 ViewPagerGithub作为你项目的library(如何拉取代码及添加公共库)。(2) 调用仅需简单两步:a. 布局定义代替一般的ViewPager定义 b. 启动ViewPager自动滚动startAutoScroll() 启动自动滚动stopAutoScroll() 停止自动滚动3、设置setInterval(long) 设置自动滚动的间隔时间,单位为毫秒setDirection(int) 设置自动滚动的方向,默认向右setCycle(boolean) 是否自动循环轮播,默认为truesetScrollDurationFactor(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接口,它里面定义了最重要和基本的indicator表现出的一些方法:    1.1 首先一个indicator必须要与一个ViewPager关联在一起,所以它提供了一个setViewPager方法。    1.2 它扩展了ViewPager.OnPageChangeListener接口,表示接管了ViewPager的Pager改变时的监听处理,          这也是为什么为ViewPager设置OnPageChangeListener监听器时不能设置在ViewPager上而必须设置在          indicator上的原因。    1.3 还有一个notifyDataSetChanged通知方法,表示为这个ViewPager提供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随附带的Demo     Demo项目的设计    项目由一个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"需要解析的文件名 UserMessage userMessage=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的项目,且自此之后,经过大规模的重构和改进。特性列举:多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置支持图片的内存缓存,文件系统缓存或者SD卡缓存支持图片下载过程的监听根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片提供在较慢的网络下对图片进行加载使用过程:创建默认的ImageLoader,所有的操作都由ImageLoader控制。该类使用单例设计模式,所以如果要获取该类的实力,需要调用getInstance()方法。在使用ImageLoader显示图片之前,你首先要初始化它的配置,调用ImageLoaderConfiguration的init()方法,然后你就可以实现各种的显示了。得到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:package com.name.xinwen;import com.thinkland.sdk.android.JuheSDKInitializer;import android.app.Application;text;import android.os.Handler;import android.os.Looper;/* * 应用程序的入口 */public class BaseApplication extends Application private static Context mContext;private static Thread mMainThread;private static int mMainThreadId;private static Handler mMainThreadHandler;private static Looper mMainThreadLooper;Overridepublic void onCreate() super.onCreate();JuheSDKInitializer.initialize(getApplicationContext();/在应用程序入口提供全局的工具/上下文mContext = this;/主线程和子线程mMainThread = Thread.currentThread();/mMainThreadId = mMainThread.getId();/当前应用程序进程ID/mMainThreadId = android.os.Process.myPid();/ 线程id myTid();mMainThreadId = android.os.Process.myTid();/用户id myUid();/主线程handlermMainThreadHandler = new Handler();mMainThreadLooper = getMainLooper();public static Context getContext()return mContext;public static Thread getMainThread()return mMainThread;public static int getMainThreadId()return mMainThreadId;public static Handler getMainThreadHandler()return mMainThreadHandler;public static Looper getMainThreadLooper()return mMainThreadLooper;package com.name.xinwen;izer;import android.app.Application;import android.content.Context;import android.os.Handler;import android.os.Looper;/* * 应用程序的入口 */public class BaseApplication extends Application private static Context mContext;private static Thread mMainThread;private static int mMainThreadId;private static Handler mMainThreadHandler;private static Looper mMainThreadLooper;Overridepublic void onCreate() super.onCreate();JuheSDKInitializer.initialize(getApplicationContext();/在应用程序入口提供全局的工具/上下文mContext = this;/主线程和子线程mMainThread = Thread.currentThread();/mMainThreadId = mMainThread.getId();/当前应用程序进程ID/mMainThreadId = android.os.Process.myPid();/ 线程id myTid();mMainThreadId = android.os.Process.myTid();/用户id myUid();/主线程handlermMainThreadHandler = new Handler();mMainThreadLooper = getMainLooper();public static Context getContext()return mContext;public static Thread getMainThread()return mMainThread;public static int getMainThreadId()return mMainThreadId;public static Handler getMainThreadHandler()return mMainThreadHandler;public static Looper getMainThreadLooper()return mMainThreadLooper;代码2:/* * Copyright (C) 2013 Andreas Stuetz <andreas.stuetz> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.xinwen.indicator.lib;import android.annotation.SuppressLint;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Paint.Style;import android.graphics.Typeface;import android.os.Build;import android.os.Parcel;import android.os.Parcelable;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.util.AttributeSet;import android.util.DisplayMetrics;import android.util.TypedValue;import android.view.Gravity;import android.view.View;import android.view.ViewTreeObserver.OnGlobalLayoutListener;import android.widget.HorizontalScrollView;import android.widget.ImageButton;import android.widget.LinearLayout;import android.widget.TextView;import java.util.Locale;import org.itheima51.indicator.lib.R;public class TabSlidingIndicator extends HorizontalScrollViewpublic interface IconTabProviderpublic int getPageIconResId(int position);/ formatter:offprivate static final int ATTRS = new int android.R.attr.textSize, ;/ formatter:onprivate LinearLayout.LayoutParamsdefaultTabLayoutParams;private LinearLayout.LayoutParamsexpandedTabLayoutParams;private final PageListenerpageListener= new PageListener();public OnPageChangeListenerdelegatePageListener;private LinearLayouttabsContainer;private ViewPagerpager;private inttabCount;private intcurrentPosition= 0;private floatcurrentPositionOffset= 0f;private PaintrectPaint;private PaintdividerPaint;private intindicatorColor= 0xFF666666;private intunderlineColor= 0x1A000000;private intdividerColor= 0x1A000000;private booleanshouldExpand= false;private booleantextAllCaps= true;private intscrollOffset= 52;private intindicatorHeight= 8;private intunderlineHeight= 2;private intdividerPadding= 12;private inttabPadding= 24;private intdividerWidth= 1;private inttabTextSize= 12;private inttabTextColor= 0xFF666666;private inttabNormalTextColor= 0xFF666666;private inttabSelectedTextColor= 0xFFFF0000;private TypefacetabTypeface= null;private inttabTypefaceStyle= Typeface.BOLD;private intlastScrollX= 0;private inttabBackgroundResId= R.drawable.background_tab;private Localelocale;public TabSlidingIndicator(Context context) this(context, null);public TabSlidingIndicator(Context context, AttributeSet attrs) this(context, attrs, 0);public TabSlidingIndicator(Context context, AttributeSet attrs, int defStyle) super(context, attrs, defStyle);setFillViewport(true);setWillNotDraw(false);tabsContainer = new LinearLayout(context);tabsContainer.setOrientation(LinearLayout.HORIZONTAL);tabsContainer.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);addView(tabsContainer);DisplayMetrics dm = getResources().getDisplayMetrics();scrollOffset = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, scrollOffset, dm);indicatorHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, indicatorHeight, dm);underlineHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, underlineHeight, dm);dividerPadding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dividerPadding, dm);tabPadding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, tabPadding, dm);dividerWidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dividerWidth, dm);tabTextSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, tabTextSize, dm);/ get system attrs (android:textSize and android:textColor)TypedArray a = context.obtainStyledAttributes(attrs, ATTRS);tabTextSize = a.getDimensionPixelSize(0, tabTextSize);tabTextColor = a.getColor(1, tabTextColor);a.recycle();/ get custom attrsa = context.obtainStyledAttributes(attrs, R.styleable.TabSlidingIndicator);indicatorColor = a.getColor(R.styleable.TabSlidingIndicator_pstsIndicatorColor, indicatorColor);underlineColor = a.getColor(R.styleable.TabSlidingIndicator_pstsUnderlineColor, underlineColor);dividerColor = a.getColor(R.styleable.TabSlidingIndicator_pstsDividerColor, dividerColor);indicatorHeight = a.getDimensionPixelSize(R.styleable.TabSlidingIndicator_pstsIndicatorHeight, indicatorHeight);underlineHeight = a.getDimensionPixelSize(R.styleable.TabSlidingIndicator_pstsUnderlineHeight, underlineHeight);dividerPadding = a.getDimensionPixelSize(R.styleable.TabSlidingIndicator_pstsDividerPadding, dividerPadding);tabPadding = a.getDimensionPixelSize(R.styleable.TabSlidingIndicator_pstsTabPaddingLeftRight, tabPadding);tabBackgroundResId = a.getResourceId(R.styleable.TabSlidingIndicator_pstsTabBackground, tabBackgroundResId);shouldExpand = a.getBoolean(R.styleable.TabSlidingIndicator_pstsShouldExpand, shouldExpand);scrollOffset = a.g

    注意事项

    本文(Android移动终端开发大作业.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开