英语原文共 408 页,剩余内容已隐藏,支付完成后下载完整资料
你的第一个Android应用
第一章充满了新概念而且需要建立一个Android应用。到了章节末尾如果你还不能理解所有东西也没关系。在你浏览整本书的时候,你还会见到它们,同时伴随着更多的细节。
你将要创建的应用叫GeoQuiz 。GeoQuiz 测试的是用户的地理知识。用户点击True或者False来回答屏幕上的问题,GeoQuiz 提供即时的反馈。
图1.1显示了用户点击False按钮的结果:
图1.1(正确答案是Istanbul,而不是Constantinople)
App基础
你的GeoQuiz 应用由一个activity和一个layout组成:
activity是Android SDK中类Activity的一个实例,负责管理用户与屏幕信息的交互。你需要编写Activity的子类来实现你的app需要的功能。一个简单的应用可能只需要一个子类;一个复杂的应用就会有很多子类。
GeoQuiz是一个简单的app,所以它将有一个单独的名字叫QuizActivity的Activity子类,QuizActivity管理着如图1.1所示的用户界面。
Layout定义了一系列的用户界面对象和它们在屏幕上的位置。Layout由写在XML中的定义组成。每一个定义用来创建一个在屏幕上显示的对象,比如按钮或者一些文字。
GeoQuiz包含一个名叫activity_quiz.xml的布局文件。文件里面的XML定义了如图1.1所示的用户界面。
QuizActivity和activity_quiz.xml的关系如图1.2所示
图1.2QuizActivity管理着activity_quiz.xml定义的界面
有了这些想法,让我们来创建一个app。
创建一个Android项目
第一步是创建一个Android项目。Android项目包含构成整个应用的文件。先打开Android Studio来创建一个新的项目。如果你是第一次使用Android Studio,你将看到Welcome窗口,如图1.3所示。
图1.3 欢迎来到Android Studio
从窗口中选择Start a new Android Studio project。如果你没有看到欢迎窗口,你可能在之前已经创建过项目了。在这种情况下,选择File → New Project....。你应该看到了新建项目向导,在向导的第一页,输入GeoQuiz作为应用的名字(如图1.4)。在公司栏,输入android.bignerdranch.com。在做了这些之后,你会看到生成的包名变成了com.bignerdranch.android.geoquiz。至于项目的位置,你可以使用任何你想要用的文件系统位置。
图1.4创建一个新的应用
注意包名使用了”reverse DNS”转换用来将你的组织名称反转然后用进一步的标识作为后缀。这种转换保证了包名的唯一性而且在Google Play上区分不同的应用。
点击Next。下一个页面允许你指定你想要你设备支持的细节部分。GeoQuiz只支持phones,所以只需要选择Phone an Table。选择一个最小的SDK版本API 16: Android 4.1 (Jelly Bean)(如图1.5)。你将在第6章学到Android的不同版本。
图1.5指定支持的设备
(Android Studio经常更新,所以你的向导页面看起来和现在的有些许不同。这些通常不是问题;选项应该都类似。如果你的向导页面看起来大不相同,那就是工具彻底的更改了。别担心。访问这本书的论坛forums.bignerdranch.com,我们会帮你理解最新的版本。)
点击Next。
在下一个页面,你会被提示给GeoQuiz的第一个屏幕选择一个模板(如图1.6)。选择Blank Activity,然后点击Next。
图1.6选择一种Activity
在向导的最后一个窗口,命名activity子类QuizActivity(如图1.7)。注意类名以Activity为后缀,这不是必须的,但是遵守它是明智的。
图1.7配置新建的activity
Layout名字会自动更新为activity_quiz来对应activity的新名字。Layout名字遵循activity的命名规则,全小写,单词之间为下划线。在之后的学习中不仅layout,其他的资源也推荐使用这种命名样式。
至于标题,输入GeoQuiz来适配app的名字。离开Menu Resource Name就这样点击Finish。Android Studio就会创建并打开你的项目。
Android Studio 里面的Navigating
Android Studio打开了你的项目,如图1.8所示。
不同的项目窗口被称作Tool Windows。
左边的是项目工具窗(project tool window)。从这里,你能看到和管理与你项目关联的文件。
中间的是编辑区(editor)。为了让你开始编写,Android Studio 已经在编辑区中打开了activity_quiz.xml。(如果你在编辑区看到的是图像,在底部点击Text标签按钮。)你还能在右边看到文件预览。
图1.8最开始的项目窗口
你可以通过点击屏幕左、右或者底部的名字来打开或者关闭对应的工具窗口。你也可以用键盘快捷键来做这些。如果你没有看到工具按钮条,点击主视图左下角灰色的方形按钮或者选择View→Tool Buttons。
设计用户界面
现在,activity_quiz.xml定义了默认的activity布局。默认布局经常改变,但是XML文件总是看起来像清单1.1。
清单1.1 默认的activity布局 (activity_quiz.xml)
默认布局定义了两个组件(widget):RelativeLayout和TextView。
组件是你用来构成用户界面的建造模块。组件可以展示文字和段落,与用户交互,或者整理屏幕上的其它组件。按钮,文本输入控件,和选择框都是组件。
Android SDK包含许多你可以用来配置你想要=界面和行为的组件。每一个组件都是View类或者它子类(比如TextView或者Button)的一个具体实现。
图1.9展示了清单1.1中定义的RalativeLayout和TextView如何显示在屏幕上。
图1.9默认组件如图所示
但是这些不是你想要的组件,QuizActivity的界面需要五个组件:
- 一个垂直LinearLayout组件;
- 一个TextView组件;
- 一个水平LinearLayout组件;
- 两个Button组件。
图1.10展示了这些组件如何构成QuizActivity界面。
图1.10 需要的组件如图所示
现在你需要在activity_quiz.xml中定义这些组件。
在activity_quiz.xml中,清单1.2展示了这些修改,需要删除的XMl已经打上的删除线,需要添加的XML用粗体显示。本书统一用这种形式。
不需要担心不懂你写的是什么;接下来你会学到它是如何工作的,仔细点。布局XML是不会验证的,错误迟早会导致问题。
清单1.2在XML里面定义组件(activity_quiz.xml)
将你的XML和如图1.10所示的用户界面。每一个组件有一个对应的XMl元素。元素的名称是组件的类型。每一个元素有一系列的XML属性。每一个属性是组件如何配置的指令。
为了理解元素和属性如何工作,需要从分层的视角来看布局。
视图分层
你的组件以分层的视角存在,即视图层级结构(view hierarchy)。图1.11展示了清单1.2中XML对应的视图层次结构。
图1.11组件和属性的分层视图
布局视图的根元素是LinearLayout。作为根元素,LinearLayout必须指定Android资源XMl的命名空间为http://schemas.android.com/apk/res/android。
LinearLayout继承自View的子类名叫ViewGroup。ViewGroup是一种包含和配置其他组件的组件。当你需要你的组件以行或列的形式排列是,你可以使用LinearLayout。其它的ViewGroup有FrameLayout、TableLayout和RelativeLayout。
当一个组件包含在ViewGroup中,它就被称为那个ViewGroup的子组件。根LinearLayout有两个子组件:TextView和另一个LinearLayout。子组件LinearLayout本身有两个Button子组件。
组件属性
我们来看一下你用来配置组件的一些属性。
android:layout_width和android:layout_height
layout_width和android:layout_height属性几乎是每一种组件必须的。它们通常被设置为match_parent或wrap_content:
match_parent:视图和它的父视图一样大
wrap_content:视图根据它的内容调整
(你可能在有些地方看到fill_parent,这个废弃的值等同于match_parent。)
对于根LinearLayout,height和width属性的值都是match_parent。LinearLayout是根元素,但是它仍然有一个父视图——Android提供用来容纳app所有视图的视图。
你布局里面的其它组件的width和height设置为wrap_content。你能从图1.10中看出怎么决定它们的大小。
TextView看起来大一些,因为它设置的width和height属性值是android:padding='24dp'。这个属性告诉组件在决定它的大小时增加它的空间。用它给问题和答案之间留下一点空间。(不理解dp?它是density-independent pixels,你将在第8章学到它。)
android:orientation
两个LinearLayout组件都有的android:orientation属性决定了它们的子组件会垂直还是水平展示。根LinearLayout是垂直的,子LinearLayout是水平的。
子组件的顺序决定了它们在屏幕中的展示顺序。在垂直的LinearLayout中,第一个子组件展示在最上方。在水平的LinearLayout中,第一个子组件展示在最左边。(除非设备的语言是从右到左显示,比如Arabic或者Hebrew。在那种情况下,第一个子组件展示在最右边。)
android:text
TextView和Button组件有android:text属性。这个属性告诉组件展示什么文字。
注意这些属性的值不是字符串的字面意思。而是字符串资源的引用。
字符串资源包含在称为String文件的XML文件中。你可以给组件一个硬编码字符串。像android:text='True',但是这通常不是一个好方法。把字符串放在一个独立的文件中,然后去引用它更好,因为这让本地化变得简单。
你在activity_quiz.xml中引用的字符串资源还不存在,让我们来解决它。
创建字符串资源
每一个项目包含一个默认名为stirng.xml的字符串文件。
在项目窗口中,找到app/res/values目录,展开内容,打开string.xml。
模板已经为你增加了几个字符串资源。移除不用的字符串hello_world,添加你的布局需要的三个新的字符串。
清单1.3添加字符串资源(string.xml)
(不要删除action_setting字符串。你的项目已经默认配置好菜单。删除action_setting将导致菜单关联的其它文件出现连串的错误。)
现在,在GeoQuiz项目中任何XML文件中引用@string/false_button,你将在运行时得到字符串原意”false”。
保存string.xml文件。如果在activity_quiz.xml文件中有缺少字符串资源错误,现在应该没有了。(如果仍然有错误,检查两个文件是否有拼写错误。)
尽管默认字符串文件名为string.xml,你也能任意命名。你也能有多个字符串文件。只要文件位于res/values/,有resources根元素,而且包含子string元素,字符串就能被找到并被正确使用。
预览布局
你的布局已经完成,现在
全文共13810字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[16515],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。