Android毕设外文资料和译文.docx

上传人:b****7 文档编号:9366803 上传时间:2023-02-04 格式:DOCX 页数:19 大小:29.17KB
下载 相关 举报
Android毕设外文资料和译文.docx_第1页
第1页 / 共19页
Android毕设外文资料和译文.docx_第2页
第2页 / 共19页
Android毕设外文资料和译文.docx_第3页
第3页 / 共19页
Android毕设外文资料和译文.docx_第4页
第4页 / 共19页
Android毕设外文资料和译文.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

Android毕设外文资料和译文.docx

《Android毕设外文资料和译文.docx》由会员分享,可在线阅读,更多相关《Android毕设外文资料和译文.docx(19页珍藏版)》请在冰豆网上搜索。

Android毕设外文资料和译文.docx

Android毕设外文资料和译文

外文资料和译文

 

专业:

计算机科学与技术(嵌入式软件开发方向)

班级:

计嵌入式000000

姓名:

XXXX

学号:

08111XXXXX

指导教师:

XXXX教授

 

2011年12月18日

译文

这篇文档主要讲述Android应用框架的核心原则。

站在高层来说,以用户为中心来设计良好的交互程序,对于应用设计者或是开发者来说是非常重要的。

下面用例子来阐述了activities和tasks的一些底层原则和机制,例如导航,多任务,activity重用,意图和activity栈。

这篇文档也着重讨论了一些设计决策,针对如何利用好它们去设计你的应用程序UI。

这篇文档中的例子均是Android应用程序,包括默认应用程序(比如拨号器)、Google应用程序(比如地图)。

你可以自己在Android模拟器上或是Android手机上去试验这些例子。

如果你使用Android手机试验时,可能未提供本文档中的某些例子。

Applications,Activities,ActivityStackandTasks

理解Android系统中的四个基本概念对你是很有帮助的,它们分别是:

Applications(应用)

Activities(活动)

ActivityStack(活动堆栈)

Tasks(任务)

Applications

一个Android应用程序其实就是由一个或者多个Activity组成。

它们被捆绑在一起并存放进.apk文件中,这就是Android应用程序。

Android中有着丰富的应用程序,比如邮件、日历、地图定位、文本消息、联系人、照相机、打电话、音乐播放器,系统设置等应用。

一般情况下,桌面上都会有Android应用程序快捷图标,用户可以选择某一个图标来启动应用程序。

Activities

Activity是Android应用程序的主要组成部分,activity可以是你自己创建的,当然,还可以是其它应用程序中的activity。

它们都是在运行时绑定上的,以便于应用程序扩展其自身的功能,它们一旦组合在一起,就会如同一个应用程序一样。

每个activity都有其独特的UI、明确的功能,诸如打电话、看照片、听音乐等。

任何一个应用程序都应至少有一个activity。

当使用Android手机时,用户在屏幕上一个接一个地滑动或是点击图标启动activity,完全不会注意到底层的行为——他们体验是无缝的。

activity后面有activity,task后面还会有task。

Activity可以处理特定的数据类型和接受一相关的动作。

每个activity都有其各自的生命周期,互不干扰;并且它们都可以被用户或者系统独立启动、运行、暂停、恢复运行、停止、重新开始。

正因为这个独立性,activity可以以不同的方式被其它的activity进行替换。

Activity是Android应用中最为突出的组件,其余组件分别为:

service、contentprovider、broadcastreceiver。

ActivityStack

用户之所以能够从一个activity转到下一个activity,是因为Android系统针对activity而设计了一个线性的导航历史以供用户追溯访问,这就是activity栈,也称为backstack。

当用户启动了一个新的activity,它就被添加进activity栈,以便按BACK键时能够返回到上一个activity。

然而,用户不能按BACK键就直接返回到桌面(除非activity的前一个是桌面才可以)。

activity栈里面存放的只能是activity,而视图、窗体、菜单和对话框则不能。

也就是说,如果你可以让用户从屏幕A跳转到屏幕B,当用户按BACK键时,他就应该会回到屏幕A,那屏幕A必须是一个activity。

有个例外情况就是,你的应用程序需要利用BACK键控制自身的导航,那就要自己重新设定BACK键的导航功能。

Tasks

任务则是一系列的activity集合,它能使用户完成既定的操作,而又不用去关心这些activity是哪个应用程序里面的,除明确指定一个新任务之外(参见“中断任务”小段),那么其他activity都属于当前任务的一部分。

再次注意的是,这些activity可是任意应用程序中的其中一个,也就是说不管它们所属的应用程序是否相同。

举个例子,用户打开了联系人的程序,任务随之也会启动,他选择了email地址准备发邮件,这时跳转到了emailactivity,之后他要添加附件,需要在相册中挑选图片。

这里面,联系人,email,图片相册都是不同的应用程序。

当一个activity启动时,任务也随之启动的话,那个activity就是根activity。

启动activity一般有这么几种方式,应用程序发射器、桌面快捷方式、最近任务切换器。

Android系统内部一旦有任务,那么按BACK键就可以回到上一个activity。

Activity栈可以是多个任务的组成部分。

下面是关于任务的例子,以供参考:

发送文本消息并含有附件

观看YouTube视频并以邮件的方式向其他人分享。

中断任务——任务中有一个重要特性就是能使用户中断当前正在做的操作(他们的任务)而去执行其它操作,当然他们也可以回到之前的任务上,也就是说支持同时运行多任务并且来回切换它们。

这里有两种情况来开始其它任务,并且都可以返回到原先的任务上。

打开通知:

用户接收到通知并打开查看它。

用户转去做其它操作:

用户在桌面启动。

当然,也有例外的。

除了刚才提到的两种方式,另外还有一种打开新任务的情况,就在其内部开启一个activity。

例如,在邮件中以新任务的方式打开地图activity或是打开一个浏览器activity,当按BACK键时就又会回到邮件activity中。

Activities和Tasks之旅

下面的例子阐述了应用程序的基本原则,主要有activities,activity栈,回退键,任务和意图;并展示了系统是如何响应用户请求的,例如用户开始了一个应用程序,用户不断的切换UI,程序内部就是利用在不同任务之间切换activities的。

下面的许多例子你都可以在Android手机上运行起来。

在桌面上开始一个Activity

桌面是启动应用程序的主要地方,比如在桌面上点击应用程序图标就能将其打开,用户第一眼看到的就是应用程序中的主activity。

用BACK和HOME键进行导航

Activity保持或者丢掉其状态完全取决于用户是怎样离开这个activity的——使用HOME键还是BACK键。

默认情况下,按下BACK键来结束(销毁)当前activity并为用户显示上一个activity。

此外,也不是所有activity都是当按下BACK键之后销毁掉的。

例如用户开始播放音乐,接着按下BACK键,却不会影响音乐的播放。

即使它的activity不再可见,音乐应用程序依然会在状态栏上提示着用户。

注意:

你也可以让activity不再可见时停止掉或是继续在后台运行,但后者更适合像音乐这样的应用程序。

重用activity

有两个应用程序中,它们分别也有两个activity:

activityA和activityB。

A的部分功能需要调用B的已实现功能,那么B就叫被重用。

联系人重用相册来获取图片—联系人activity中会有联系人的照片,但是照片一般存放在相册里面,所以联系人要重用相册的功能来获取图片,相册activity就是重用的绝佳例子。

替换activity

这个例子描述的是不用应用程序中的两个activity互相替换,activityA替换activityB。

这种一般发生在activityA比activityB的功能更为强大一些。

换句话来说,A和B妥妥得等价,当然就可以实现A替换B。

这个例子中的联系人应用程序重用了activity,A和B虽然是完全不同的activity,但是它们两个彼此形成了互补,使程序更加的强大。

多任务

如前所述,当一个activity启动后,用户还可以回到桌面启动第二个activity,第一个activity则不会被销毁还是继续运行着,我们换个例子来说明这一小节——地图应用程序。

状态1:

用户打开了地图应用程序并查询一个地址。

这时,用户该说了,网络太慢了!

因为地图定位是需要一些时间的。

状态2:

用户准备做些其它事情,按下HOME键,不过这样做不会干扰地图应用程序,还是保持其加载地图的状态。

状态3:

地图activity现在是在后台运行着,桌面在来到了前台。

这时用户打开了日历activity,比如查看今天是星期几。

状态4:

用户回到桌面,重新打开Map,这时地图已经全部加载完毕了。

以上两个应用程序“地图”和“日历”是两个不同的任务,因此Android支持多任务模式。

切换任务

下面的例子描述的是用户如何在两个任务之间进行切换。

1.开始第一个任务。

你想要发送一条短消息并附加一张图片。

你会这样操作:

桌面>短消息>新的短信息>菜单>附件>图片。

最后一步启动了相册activity来选择一张照片。

注意相册是另外的一个应用程序。

在选择照片之前,可以先去桌面打开日历,目的是为了开始第二个任务。

2.开始第二个任务。

你会这样操作:

桌面>查看日历。

从桌面上打开日历,就等于是开始一个新任务了。

3.切换到第一个任务并完成后面的操作。

查看完日历之后,继续回到先前的任务上:

桌面>短消息,此时进入的并不是短消息activity,而是相册activity,也就是之前离开的activity。

然后你就可以选择图片并发送短消息出去了,也就完成了第一个任务。

设计小贴士

下面的提示和指导都是针对应用设计者和开发者而提出的。

使用显式意图来防止外部应用调用你的activity

如果你不想自己的activity被外部使用,就别在manifest.xml里面配置intent-filter。

这样的话,你的activity就只会在应用程序内部来启动了,同样也避免了安全漏洞。

反之,创建一个意图并指定明确要启动的组件,这就是显示意图,在这个例子中,就不需要intentfilters。

Intentfilters可以发布所有的应用程序,当你创建了一个intentfilter时,其它应用程序就可以访问到你的activity了,至于它们怎么用,你就不知道了,这意味着不经意间形成了安全隐患。

思考:

以怎样的方式来启动activity

做为Android设计者或开发者,完全取决于用户如何启动你的应用程序,而应用程序则是由一系列的activity组成,用户会从Home或是其他应用程序中启动这些activity。

在桌面点icon来启动应用程序主activity

如果你的应用程序是独立运行的,它应该是用户在屏幕上触摸应用程序的icon或是任务选择器当中来启动(这个机制需要在manifest.xml中配置intentfilter,action为MAIN,category为LAUNCHER)。

在其它应用程序中启动你的activity

这种方式就意味着你的activity是可重用的,也就是隐式意图。

许多应用程序中的数据都需要共享给其它用户的,例如,email、文本消息、上传下载等。

还会有一种情况是这样,就是当用户选择了一个功能,正好有一个或多个activity符合用户的这种需求,就会向用户提供一个activity列表供其选择。

举一个具体的例子,Gallery(相册),它能让用户查看并共享图片,这时用户选择了“共享”菜单,Android系统会在intentfilter中寻找适合该请求的activity,如果有多个,就会以列表的形式展现给用户,供其选择。

在这个例子中,intentfilter能找到Email、Gmail、Messaging、Picasa等。

当其它的activity启动了你的activity时,会根据需求给它们返回一个结果。

启动一个activity并需要返回一个结果

官方称这种方式为closedloop,也就是说当启动一个activity之后,会返回一个结果回来。

再拿上面那个例子来说,当用户完成上传或者发送的过程之后,会将图片信息返回给Gallery。

这个例子中的上传过程所用到的activity就是由外部的Gallery启动的。

(这种方式需使用startActivityForResult())

启动一个activity不需要返回结果

官方称这种方式为open-ended。

举个例子,在Email中可定位一个住址,那么应用程序便会启动地图activity来定位地址,完成之后不会再给Email返回任何的结果;此时用户可以按BACK键回到Email中来。

(这种方式需使用startActivity())

不同的图标能够启动多个相同的应用程序

由于Android应用程序的运行代码均存在于.apk文件中,因此就把这个文件看作是一个应用程序。

我们甚至还可以让其内部存在两个主activity,也就是两个应用程序启动入口点。

Camera.apk(照相机)就是一个非常好的例子,它内部就含有两个独立的主activity,Camera和Camcorder(摄像机);它们均拥有自己的icon并且独立运行;在用户角度上来看,这就是两个应用程序。

它们都共享使用一个镜头、在Gallery里面保存图片等。

实现这样的功能其实很简单,只需将它们都关联到不同的任务上即可。

(每个activity都其各自的任务,每个任务都有不同的亲缘性(affinity)。

(这个例子的两个应用它们所在的两个包是"com.android.camera"和"com.android.videocamera",有兴趣的可以深入研究)。

联系人和拨号器也是同一个应用两个主activity的典型例子。

应用程序部件

我们也可以将应用程序以部件的形式嵌进桌面上或是其它应用程序中并能它们持续更新。

允许你的activity添加到当前任务中

如果你的activity是在外部应用程序已经启动的话,那么也允许把它们添加到当前的任务中来(或者是已存在的任务——它有自身的affinity),这样做的话能会使用户能够在其它任务和你的activity之间进行自由切换。

但不包括你的activity仅有一个实例的情况。

对于这种行为,你的activity应该有一个standard或singleTop的启动模式,而不是singleTask或singleInstance,这样,你的activity就会以多实例的模式来运行。

请使用通知系统,而不要使用对话框来代替通知

如果你的后台服务在某个时刻要通知给用户一个消息,那么请使用标准通知系统-,不要使用dialog或toast来通知。

这两个会直接弹出来提示用户,再说通俗一些就是会突然打断用户的当前操作,这是一个极为不友好的用户体验。

通知系统在这方面就做得就比较好,用户可以在适当的时候从屏幕上方拉下通知列表以便回应消息。

不要重新设置BACK键的功能,除非你有绝对的需要

BACK键的主要功能就是从当前的activity回退到上一个activity,就是所谓的导航功能。

大多数的activity都是一些比较通用的操作,诸如查看联系人列表,查看照片等,如果按BACK键,就直接返回先前调用它的activity就好了,不需其它的功能需求。

但要考虑一个问题,如果是应用程序非常得大,并需要细粒度的BACK键来加以控制该如何呢?

例如Google浏览器,已经打开了几个web页面和地图页面,其中有一些关于地图数据的图层面板,我们需要在它们之间进行切换操作,也就是说在其内部通过BACK键来对其进行回退导航,而不是针对整体的activity。

接上面的例子继续说,地图应用程序展现给用户不同的数据图层面板:

有用来显示查询结果的定位信息、有显示朋友的位置、有显示街道方向的路线等。

地图应用程序将这些图层面板保存在自身的历史记录里面,所以需要BACK键来进行回退导航。

同样地,浏览器使用浏览器窗体为用户展示多个的web页面,每个窗体都有它自身的历史导航,也就是桌面操作系统上的浏览器中的标签。

例如,你在Android浏览器中的一个窗体上打开Google进行查询,并点击一条查询结果,那么这个结果页面会在当前窗体上打开,然后按BACK键就会回到了查询页面。

总结一句话就是,当前窗体是从先前的窗体上跳转过来的,这时按BACK键就会回到了先前的窗体。

如果用户一直按BACK键的话,最后就会离开浏览器所在的activity,回到了桌面。

这些例子就是你有绝对的需要才要重新设置BACK键功能的理由。

 

ActivityandTaskDesign

ThisdocumentdescribescoreprinciplesoftheAndroidapplicationframework,fromahigh-level,user-centricperspectiveusefultointeractionandapplicationdesignersaswellasapplicationdevelopers.

Itillustratesactivitiesandtaskswithexamples,anddescribessomeoftheirunderlyingprinciplesandmechanisms,suchasnavigation,multitasking,activityre-use,intents,andtheactivitystack.ThedocumentalsohighlightsdesigndecisionsthatareavailabletoyouandwhatcontroltheygiveyouovertheUIofyourapplication.

ThisdocumentdrawsexamplesfromseveralAndroidapplications,includingdefaultapplications(suchasDialer)andGoogleapplications(suchasMaps).YoucantryouttheexamplesyourselfintheAndroidemulatororonanAndroid-powereddevice.Ifyouareusingadevice,notethatyourdevicemaynotofferalloftheexampleapplicationsusedinthisdocument.

Applications,Activities,ActivityStackandTasks

FourfundamentalconceptsintheAndroidsystemthatarehelpfulforyoutounderstandare:

Applications

Activities

ActivityStack

Tasks

Applications

AnAndroidapplicationtypicallyconsistsofoneormorerelated,looselyboundactivitiesfortheusertointeractwith,typicallybundledupinasinglefile(withan.apksuffix).Androidshipswitharichsetofapplicationsthatmayincludeemail,calendar,browser,maps,textmessaging,contacts,camera,dialer,musicplayer,settingsandothers.

AndroidhasanapplicationlauncheravailableattheHomescreen,typicallyinaslidingdrawerwhichdisplaysapplicationsasicons,whichtheusercanpicktostartanapplication.

Activities

ActivitiesarethemainbuildingblocksofAndroidapplications.Whenyoucreateanapplication,youcanassembleitfromactivitiesthatyoucreateandfromactivitiesyoure-usefromotherapplications.Theseactivitiesareboundatruntime,sothatnewlyinstalledapplicationscantakeadvantageofalreadyinstalledactivities.Onceassembled,activitiesworktogethertoformacohesiveuserinterface.Anactivityhasadistinctvisualuserinterfacedesignedaroundasingle,well-boundedpurpose,suchasviewing,editing,dialingthephone,takingaphoto,searching,sendingdata,startingavoicecommand,orperformingsomeothertypeofuseraction.Anyapplicationthatpresentsanythingonthedisplaymusthaveatleastoneactivityresponsibleforthatdisplay.

WhenusinganAndroiddevice,astheusermovesthroughtheuserinterfacetheystartactivitiesoneaftertheother,totallyoblivioustotheunderlyingbehavior—tothemtheexperienceshouldbeseamless,activityafteractivity,taskaftertask.

Anactivityhandlesaparticulartypeofcontent(data)andacceptsasetofrelateduseractions.Eachactivityhasalifecyclethatisindependentoftheotheractivitiesinitsapplicationor

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

当前位置:首页 > PPT模板 > 国外设计风格

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

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