计算机科学与技术专业 Android 毕业设计论文 中英文 外文 文献 资料 翻译.pdf_第1页
计算机科学与技术专业 Android 毕业设计论文 中英文 外文 文献 资料 翻译.pdf_第2页
计算机科学与技术专业 Android 毕业设计论文 中英文 外文 文献 资料 翻译.pdf_第3页
计算机科学与技术专业 Android 毕业设计论文 中英文 外文 文献 资料 翻译.pdf_第4页
计算机科学与技术专业 Android 毕业设计论文 中英文 外文 文献 资料 翻译.pdf_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国地质大学(北京)2012 届本科生毕业设计外文资料翻译 2 android 起航 1 使用 xml 进行布局 虽然纯粹通过 java 代码在 activity 上创建和添加部件,在技术上是可行的,我们在第 4 章中做的一样,更常见的方法是使用一种基于 xml 的布局文件。动态的小部件实例保留更 多,情况复杂,小工具在编译时不为人所知。例如,在数据检索了互联网基础上将单选按钮 填充柱。 考虑到这一点,现在是时候来学习如何用此种方式来布置 android activities。 1.1 什么是基于 xml 的布局? 正如其名称所示,一个基于 xml 的布局是一个关系到每个规格的小部件,和他们的容 器(更多关于此内容的在第 7 章)编码的 xml 格式。具体来说,android 认为基于 xml 的布局是资源,因此布局文件存储在 res /在你的 android 项目布局目录中。 每个 xml 文件包含一个指定的部件和容器布局元素树,一种意见认为构成层次。对 xml 元素的属性,描述一个部件应如何看或者一个容器应如何运转。例如,如果一个按钮 元素。 有一个 android 的属性值:文字样式=“bold” ,这意味着该文本出现在按钮的表面应该 是呈现一个粗体字体样式. android的sdk中附带一个使用的布局的工具 (aapt) 。 这个工具应自动调用你的android 工具链(例如,eclipse 中,ants build.xml) 。作为一个开发人员,尤其重要的是,在您的 项目中 aapt 生成 r.java 源文件,让您能在那些布局中直接从 java 代码中获取布局和部件。 1.2 为什么基于 xml 的布局? 使用 xml 布局文件做的大部分都可以通过 java 代码。例如,你可以使用 settypeface ()命令一个按钮使用粗体文本,而不是在一个 xml 布局中使用属性。由于 xml 布局是 为你跟踪的另一个文件,所以我们需要好的理由来使用这样的文件。 也许最大的原因是为了在视图定义中协助工具的建立,如 ide 中一个 gui 创建者像 eclipse 或者一个像 droiddraw1 设计 gui 图形用户界面建设者。这样 gui 建设者们,在原 则上,生成 java 代码而不是 xml。目前的挑战是重新阅读用户界面的定义,以支持编辑, 也就是说,如果是像 xlm 的结构公式数据比一个程序语言中的数据简单的多。此外,保持 生成的 xml 定义从手写的 java 代码中分离,使得某人定制的来源意外重新生成不太可能。 xml 形成一个良好的中间立场,使工具作家使用更简便,程序员需要时手工工作更简 易。 此外,xml 作为一个 gui 定义格式是越来越普遍。微软的 xaml,adobe 的 flex,和 mozilla 的 xul 都采取 android 类似的方法:把布局细节放在一个 xml 文件和把编程智慧 资料放在源文件(例如,xul 中的 javascript) 。许多不太知名的图形用户界面框架,如 zk, 还使用视图定义的 xml。而“随大流”并不一定是最好的政策,但他们有优势帮助从任何 其他 xml 为中心的观点描述语言轻松进入 android。 好了,那么基于 xml 的布局是什么样子的?下面是以前的章节的示例应用程序按钮, 转换成一个 xml 布局文件: 中国地质大学(北京)2012 届本科生毕业设计外文资料翻译 3 部件,按钮的类名称形成 xml 元素的名称。因为按钮是 android 提供的部件,我们可 以只使用裸类的名称。 如果您创建自己的部件作为 android.view.view 子小部件, 您也将需要 提供一个完整的包声明(如 monsware.android.mywidget) 。 因为我们要引用这个来自 java 代码的按钮,我们需要通过 android 给它一个标识符:id 属性。我们将在本章后面更详细的介绍这个概念。 其余的属性是此按钮实例属性: android:文字表示的初始文本将显示在按钮(这种情况显示空字符串) android:layout_width 和 android:layout_height 命令 android 有按钮的 宽度和高度填写 “parent” ,这种情况下,整个屏幕。将这些属性将在第 7 章中详解。 由于这个单一部件是 activity 的仅有内容,我们只需要这一个因素。复杂的用户界面将需要 整个树的元素,代表工具和容器,控制自己的定位。所有的这本书余下的章节将使用 xml 布局,所以还有数十种更复杂的其他布局实例,请前进到第七章仔细阅读。 1.3 符号有什么用途? 许多部件和容器只需要出现在 xml 布局文件,不须引用在 java 代码。例如,一个静态 标签(textview)只需要在布局文件中以表明它应该出现在那里。在 xml 文件中各种元素 文件不需要有 android:id 属性给他们一个名称。任何你想要在 java 资源中使用的东西,都 需要一个 android:id 。 该公约是使用 +id.作为 id 值,其中的.代表你 locallyunique 名称有问题的部件。在 上一节的 xml 布局的例子中, +id 是按钮控件的标识符。 android 提供了一些特殊的 android:id 值,形式android:id/.我们将在这本书的不同 章节中看到这些,例如第八章和第十章。 我们将这些附加到 java如何? 既然你有意建立一个 xml 配置文件的工具和容器,名为 main.xml 存储 res/layout,所 有你需要的是一个在您 activity 的 oncreate()回调以使用该版式:setcontentview (r.layout.main); 这是相同的 setcontentview() ,我们前面使用,通过它的一个视图子类的实例(在这 种情况下,一个按钮) 。该 android 制造的观点,来自我们的布局,是从访问该代码生成的 r 类。所有的布局都可以访问 r.layout,由基地键控布局文件的名称- main.xml result in r.layout.main. 要访问确定部件,使用 findviewbyid() ,在数字标识符传递有问题的部件。这一数字 标识符生成的 r 类由 android 在 r.id.something(其中一些是你正在寻找的具体部件) 。这些 部件是只是子类的视图,就像我们在第四章中创建 button 实例。 剩下的部分在原始的 now 演示中,按钮的表面便会显示当前的时间,这将反映当按钮 被最后按下时显示的时间(或者如果在按钮尚未被按下时显示) 。这种逻辑仍然适用,即使 在该修订演示(nowredux)中。尽管如此,在 activitys oncreate() callback 中的实例,我 中国地质大学(北京)2012 届本科生毕业设计外文资料翻译 4 们可以从 xml 的布局参考一个例子: package monsware.android.layouts; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.button; import java.util.date; public class nowredux extends activity implements view.onclicklistener button btn; override public void oncreate(bundle icicle) super.oncreate(icicle); setcontentview(r.layout.main); btn=(button)findviewbyid(r.id.button); btn.setonclicklistener(this); updatetime(); public void onclick(view view) updatetime(); private void updatetime() btn.settext(new date().tostring(); 第一个区别是,在 java 代码中设置内容视图作为视图,我们将它设置为引用的 xml 布局(setcontentview(r.layout.main) ) 。该 r.java 源文件将被更新,当我们重建这个项目, 包括对我们布局参考文件(存储在 main.xml in our projects res/layout directory ) 。 另一个不同是,我们需要亲手实验按钮实例,我们使用 findviewbyid()调用。既然我 们发现按钮为 +id/button,我们可以参考按钮的标识符 r.id.button。现在,随着手手头上的 实例,我们可以设置回调并根据需要设置标签。 2 使用基本组件 每一个 gui 工具包都有一些基本的部件:字段,标签,按钮等,android 的工具包在范 中国地质大学(北京)2012 届本科生毕业设计外文资料翻译 5 围内没有不同,其基本部件将提供一个良好的介绍,关于这些部件在 android activities 中是如何运行的。 指派标签是最简单的部件是标签,在 android 提到的作为一个 textview。像大多数的 gui 工具包,标签的文本是不可被用户直接编辑的。通常情况下,它们被用来确定相邻部件 (例如,一个“姓名: ”一个填充姓名前的标签) 。 在 java 中, 你可以通过创建一个 textview 的实例 l 来创建一个标签。 更常见的, 虽然, 你将通过添加一个 textview 元素到布局来在 xml 布局文件中创建标签,与一个 android: 文本属性来设置标签的本身价值。如果您需要交换基于某些标准的标签,例如国际化,你可 能想使用 xml 中的资源参考代替,这些将在第 9 章叙述。例如,在 basic/label 项目中,你 将找到下列布局文件: textview xmlns:android= android:layout_width=fill_parent android:layout_height=wrap_content android:text=you were expecting something profound? 只是单独的布局,由 android 的项目生成器提供的 java 源的(如 activitycreator) ,生成 应用程序。 2.1 按钮,归属于谁? 我们已经在第 4 和第 5 章看到了按钮部件用法。 按钮是文本视图的一个子类, 所以一切 都在上一节讨论了,按钮格式所面临的问题仍然成立。 android 有两个部件,来帮助你将照片嵌入 activities:imageview 和 imagebutton。正如 名称所暗示的,他们是分别对于文本视图和按钮基于图像的类似物。每个部件带有一个 android:src 属性(在一个 xml 布局中) ,指明使用什么图片。这些通常引用一个可绘制的 资源,在讲资源的这个章节中更详细地描述了。您还可以通过 setimageuri()从内容提供 商在 uri 基础上设置图像。 imagebutton 控件,一个 imageview 子类,混合在标准按钮行为中,应对点击和诸如此 类的东西。 例如, 从 basic/imageview 样本项目中看 main.xml 布局, 这可以在 以及所有其他代码示例种找到。 2.2 绿色字段或者其他色彩 中国地质大学(北京)2012 届本科生毕业设计外文资料翻译 6 紧接着按钮和标签,字段是大多数 gui 工具包的第三个“锚” 。在 android 中,他们通 过 edittext 部件运行,它是标签的一个子类 textview。 随着标准 textview 属性(例如,android:文本样式) ,edittext 有许多其他方面可以帮 助你创建字段,包括:除了这些,你可以使用专门配置字段输入方法,如 android:仅数字 输入 numeric,android:为笼罩密码输入密码,还有 android:phonenumber 进入电话号码。 如果你想创建自己的输入法计划(如邮政编码,社会安全号码) ,您需要创建自己的执行情 况 inputmethod 接口, 然后通过 android 设定字段来使用: inputmethod。 例如, 从 the basic/field 项目,这里是一个 xml 布局文件显示 edittext: 请注意 android:singleline 是错误的,因此,用户将能够输入几行文字。对于这一项目, fielddemo.java 文件填充了一些散文输入栏: package monsware.android.basic; import android.app.activity; import android.os.bundle; import android.widget.edittext; public class fielddemo extends activity override public void oncreate(bundle icicle) super.oncreate(icicle); setcontentview(r.layout.main); edittext fld=(edittext)findviewbyid(r.id.field); fld.settext(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 + /licenses/license-2.0); 注意:android 的模拟器只允许在每一个独特的 java 包发射器中应发射用。由于本章中 的所有演示共享 monsware.android.basic 包, 您将只能在你的模拟器发射的任何时候 中国地质大学(北京)2012 届本科生毕业设计外文资料翻译 7 的看到这些演示之一。 另一个字段的特色,提供自动完成,以帮助用户在整个无文本输入一个值。这是作为 autocompletetextview 部件在 android 中提供的并将在第 8 章讨论。 经典的复选框有两种状态:选中的和未选中的。在这两种状态之间点击复选框切换来 指示选择(例如, “添加快递到我的命令” ) 。在 android 中,还有一个 checkbox 控件,以 满足这种需要。它作为一个 textview 先驱,因此您可以像 android 使用 textview 性能:格 式部件添加文字颜色。 此外,当复选框的状态发生改变时,你可以注册一个侦听器(这种情况下,一个 oncheckedchangelistener 实例)来提醒。例如,从 the basic/checkbox 的项目,这里是一个 简单的复选框的布局: 相应的 checkboxdemo.java 检索和配置 checkbox 的行为: public class checkboxdemo extends activity implements compoundbutton.oncheckedchangelistener checkbox cb; override public void oncreate(bundle icicle) super.oncreate(icicle); setcontentview(r.layout.main); cb=(checkbox)findviewbyid(r.id.check); cb.setoncheckedchangelistener(this); public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) if (ischecked) cb.settext(this checkbox is: checked); else cb.settext(this checkbox is: unchecked); 中国地质大学(北京)2012 届本科生毕业设计外文资料翻译 8 请 注 意 为 复 选 框 的 状 态 变 化 activity 作 为 其 自 身 监 听 器 , 因 为 它 执 行 oncheckedchangelistener 分界面(通过 cb.setoncheckedchangelistener(this)) 。回调侦听器 在 oncheckedchanged() ,它接收复选框的状态有什么新的变化和状态。在这种情况下,我 们更新了文本的复选框来反映复选框中包含的实际内容。 中国地质大学(北京)2012 届本科生毕业设计外文资料翻译 9 beginning android 1. using xml-based layouts while it is technically possible to create and attach widgets to our activity purely through java code, the way we did in chapter 4, the more common approach is to use an xml-based layout file. dynamic instantiation of widgets is reserved for more complicated scenarios, where the widgets are not known at compile-time (e g., populating a column of radio buttons based on data retrieved off the internet). with that in mind, its time to break out the xml and learn how to lay out android activities that way. 1.1what is an xml-based layout? as the name suggests, an xml-based layout is a specification of widgets relationships to each otherand to their containers (more on this in chapter 7)encoded in xml format. specifically, android considers xml-based layouts to be resources, and as such layout files are stored in the res/layout directory inside your android project. each xml file contains a tree of elements specifying a layout of widgets and their containers that make up one view hierarchy. the attributes of the xml elements are properties, describing how a widget should look or how a container should behave. for example, if a button element has an attribute value of android:textstyle = bold, that means that the text appearing on the face of the button should be rendered in a boldface font style. androids sdk ships with a tool (aapt) which uses the layouts. this tool should be automatically invoked by your android tool chain (e.g., eclipse, ants build.xml). of particular importance to you as a developer is that aapt generates the r.java source file within your project, allowing you to access layouts and widgets within those layouts directly from your java code. 1.2why use xml-based layouts? most everything you do using xml layout files can be achieved through java code. for example, you could use settypeface() to have a button render its text in bold, instead of using a property in an xml layout. since xml layouts are yet another file for you to keep track of, we need good reasons for using such files. perhaps the biggest reason is to assist in the creation of tools for view definition, such as a gui builder in an ide like eclipse or a dedicated android gui designer like droiddraw1. such gui builders could, in principle, generate java code instead of xml. the challenge is re-reading the ui definition to support editsthat is far simpler if the data is in a structured format like xml than in a programming language. 中国地质大学(北京)2012 届本科生毕业设计外文资料翻译 10 moreover, keeping generated xml definitions separated from hand-written java code makes it less likely that somebodys custom-crafted source will get clobbered by accident when the generated bits get re-generated. xml forms a nice middle ground between something that is easy for tool-writers to use and easy for programmers to work with by hand as needed. also, xml as a gui definition format is becoming more commonplace. microsofts xaml2, adobes flex3, and mozillas xul4 all take a similar approach to that of android: put layout details in an xml file and put programming smarts in source files (e.g., javascript for xul). many less-well-known gui frameworks, such as zk5, also use xml for view definition. while “following the herd” is not necessarily the best policy, it does have the advantage of helping to ease the transition into android from any other xml-centered view description language. layout file, found in the layouts/nowredux sample project. this code sample along with all others in this chapter can be found in the source code area of . the class name of the widgetbuttonforms the name of the xml element. since button is an android-supplied widget, we can just use the bare class name. if you create your own widgets as subclasses of android.view.view, you would need to provide a full package declaration as well. the root element needs to declare the android xml namespace: xmlns:android= all other elements will be children of the root and will inherit that namespace declaration. because we want to reference this button from our java code, we need to give it an identifier via the android:id attribute. we will cover this concept in greater detail later in this chapter. the remaining attributes are properties of this button instance: android:text indicates the initial text to be displayed on the button face (in this case, an empty string) android:layout_width and android:layout_height tell android to have the buttons width and height fill the “parent”, in this case the entire screenthese attributes will be covered in greater detail in chapter 7. since this single widget is the only content in our activity, we only need this single element. complex uis will require a whole tree of elements, representing the widgets and containers that control their positioning. all the remaining chapters of this book 中国地质大学(北京)2012 届本科生毕业设计外文资料翻译 11 will use the xml layout form whenever practical, so there are dozens of other examples of more complex layouts for you to peruse from chapter 7 onward. 1.3 whats with the signs? many widgets and containers only need to appear in the xml layout file and do not need to be referenced in your java code. for example, a static label (textview) frequently only needs to be in the layout file to indicate where it should appear. these sorts of elements in the xml file do not need to have the android:id attribute to give them a name. anything you do want to use in your java source, though, needs an android:id. the convention is to use +id/. as the id value, where the . represents your locallyunique name for the widget in question. in the xml layout example in the preceding section, +id/button is the identifier for the button widget. android provides a few special android:id values, of the form android:id/. we will see some of these in various chapters of this book, such as chapters 8 and 10. we attach these to the java how? given that you have painstakingly set up the widgets and containers in an xml layout file named main.xml stored in res/layout, all you need is one statement in your activitys oncreate() callback to use that layout: setcontentview(r.layout.main); this is the same setcontentview() we used earlier, passing it an instance of a view subclass (in that case, a button). the android-built view, constructed from our layout, is accessed from that code-generated r class. all of the layouts are accessible under r.layout, keyed by the base name of the layout filemain.xml results in r.layout.main. to access our identified widgets, use findviewbyid(), passing in the numeric identifier of the widget in question. that numeric identifier was generated by android in the r class as r.id.something (where something is the specific widget you are seeking). those widgets are simply subclasses of view, just like the button instance we created in chapter 4. the rest of the story in the original now demo, the buttons face would show the current time, which would reflect when the button was last pushed (or when the activity was first shown, if the button had not yet been pushed). most of that logic still works, even in this revised demo (nowredux). however, rather than instantiating the button in our activitys oncreate() callback, we can reference the one from the xml layout: package monsware.android.layouts; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.button; import java.util.date; 中国地质大学(北京)2012 届本科生毕业设计外文资料翻译 12 public class nowredux extends activity implements view.onclicklistener button btn; override public void oncreate(bundle icicle) super.oncreate(icicle); setcontentview(r.layout.main); btn=(button)findviewbyid(r.id.button);btn.setonclicklistener(this);updatetime(); public void onclick(view view) updatetime(); private void updatetime() btn.settext(new date().tostring(); the first difference is that rather than setting the content view to be a view we created in java code, we set it to reference the xml layout (setcontentview(r.layout.main). the r.java source file will be updated when we rebuild this project to include a reference to our layout file (stored as main.xml in our projects res/layout directory). the other difference is that we need to get our hands on our button instance, for which we use the findviewbyid() call. since we identified our button as +id/button, we can reference the buttons identifier as r.id.button. now, with the button instance in hand, we can set the callback and set the label as needed. 2. employing basic widgets every gui toolkit has some basic widgets: fields, labels, buttons, etc. androids toolkit is no different in scope, and the basic widgets will provide a good introduction as to how widgets work in android activities. the simplest widget is the label, referred to in android as a textview. like in most gui toolkits, labels are bits of text not editable directly by users. typically, they are used to identify adjacent widgets (e.g., a “name:” label before a field where one fills in a name). in java, you can create a label by creating a textview instance. more commonly, though, you will create labels in xml layout files by adding a textview element to the layout, with an android:text property to set the value of the label itself. if you need to swap labels based on certain criteria, such as internationalization, you may wish to use a resource reference in the xml instead, as will be described in chapter 9. textview has numerous other properties of relevance for labels, for example, in the basic/label project, you will find the following layout file: 2.1 button, whos got the button? weve already seen the use of the button widget in chapters 4 and 5. as it turns out, button is a subclass of textview, so everything discussed in the preceding section in terms of formatting the face of the button still holds. android has two widgets to help you embed images in your activities: imageview and imagebutton. as the names suggest, they are image-based analogues to textview and button, respectively. each widget takes an android:src attribute (in an xml layout) to specify what picture to use. these usually reference a drawable resource, described in greater detail in the chapter on resources. you can also set the image content based on a uri from a content provider via setimageuri(). imagebutton, a subclass of imag

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论