[Powered by Google Translate] [讲座] [Android应用程序(现在糖豆!)] [约旦Jozwiak] [哈佛大学] [这是CS50。] [CS50.TV] 大家好,欢迎到Android应用程序(现在糖豆)研讨会。 这就是所谓的现在与糖豆,当然,因为 最新版本的操作系统被称为果冻豆。 当我谈到去年的Andr​​oid这样做基本上是相同的研讨会 我提出的设计图案和风格的选择,姜饼, 尽管冰淇淋三明治已经出来的时候, 这是后话,我们会谈论前进一点点。 Android的,当然,有一些碎片问题, 所以最新的谷歌操作系统通常是 不是真的要成为常见的用户之间可能高达一年,不幸的。 但无视这一点,我们会谈论很多原因, Android是远远优于iOS的。 好吧,我们来谈谈Android与iOS的, 一些设计范例,您将如何设立只是一个幻灯片, 大的区别,我只是想,这与去年的 通过一些概念性的东西,使用变焦 操作系统,然后进入一个非常基本的例子。 事实上,就在建立你的第一个应用程序,谷歌描述的例子, 通过它,我们会去一起,只是描述。 我知道你们许多人只用C语言编写的,所以Java已经 不同的角度,这样你会得到你的脚湿 和感觉舒服些希望。 一个快速的总结,Android与iOS的。 在Android中,有这种一次性的开发费用为25美元, 没有这个每年100美元的事情。 有没有限制,这意味着,如果我想提交一个应用程序, 我刚提交它,就像是有适用于iOS有没有审批流程。 您可以使用Eclipse与Java开发, 它是跨平台的,所以它并不重要,如果你有一个苹果, Windows,或者一些Linux机器。 当然,你必须与iOS在Mac上使用XCode, Android是越来越多的人使用, 所以,如果你希望你的应用程序有某种形式的知名度,或者 从广告,赚小钱 你可能更容易从Android获益。 还有一件事,一直被称为关于Android 是极端的定制量,而以自己的方式是非常固定的iOS 这样他们可以维护每一个小环节的安全性和控制权 在其操作系统和单个应用程序的设计。 Android是非常自由的形式,而且有那么多的可能性。 好吧,有些设计范例。 请注意,这里就像iOS的平板电脑和iPhone和iPod touch 如果你想支持,他们有支持,比方说,有十几设备 历史的东西为好。 有了Android,你的设备必须支持数百个, 所以有一些事情,谷歌一直试图实现 使用户体验到一个更加一致的一点, 但我们还将讨论如何这意味着有碎片问题 你不断地有要注意的支持。 碎片意味着有许多不同的操作系统, 许多不同的手机,不同的硬件上运行Android同时, 所以这个图可以追溯到约6个月。 是啊,6个月,你可以看到如何在最黑暗的乐队 在底部是糖豆,在夏季出来, 你可以看到现在大概2%左右的手机。 冰淇淋三明治出来一年多前, 一季度的手机。 仍然有很多手机从几年前正在使用的操作系统版本。 有一件事,谷歌一直试图做才能让用户体验 更一致的应用程序有很多蜂窝,开始 这是平板版本,冰淇淋三明治和果冻豆, 他们真的想强调这个动作栏, 这是你可以在上面看到这里, 这里的一切权利,包括这个小设置“按钮。 它的设计选择。 现在,每当你看到三个点,这意味着在此, 而且会有一个下拉菜单,其中有某种设置。 这只能说明,因为我点击这个按钮。 这是,他们正试图用一点点,使应用程序更加一致 一刀切的,所以用户有一个统一的体验更好的感觉。 好吧,如果你还没有这样做已经或者如果你在家里看 那么你可以按照以下步骤设置你的编码环境。 这将涉及网站。 您可以在Google安装Android SDK 并遵循一些描述。 他们会告诉你一切。 他们有你安装SDK,下载Eclipse Classic的版本, 当然,即使我们在Java编码。 他们建议这一项,那么这个ADT,Android开发工具, 是一个插件安装到Eclipse中,它允许你 在Eclipse有一个更精简的体验与Android。 它会给你一些图形用户界面 设计的意见,它会给你更多的支持 并有能力推出与仿真器和所有诸如此类的事情。 应用程序框架。 我想谈谈如何在Android项目结构, 然后我们将进入一个简单的例子,希望 你可以问的问题在任何时候,感觉很舒服,它的结束。 我们有一些行话。 当你启动一个应用程序时,您看到的屏幕就像是一个活动。 整个体验活动本身, 所以你可以把它看作是一个屏幕或视图, 但它实际上是它的源代码方面。 我们仍然调用实际的接口视图。 它有点像我们如何在习题集7控制器和视图。 的活性或多或少控制器, 的观点是我们在做什么的XML 是与该活动相关联。 片段是东西的实施冰淇淋三明治前进。 这只是一个想法,采取部分视图或活动 这样我们就可以把它们分成不同的领域 这许多不同的设备,使我们的代码更可用 我们要支持,它只是一个尝试的方式 分解出更多的代码。 服务播放音乐或导航方向可能的背景之类的东西。 内容提供者,这些都是在操作系统内的API 允许您访问共享数据,如联系人信息, 然后意图是什么时,我们将使用我们要启动 一个新的活动,从我们目前的活动。 您好Android的,这是怎么回事,是一个项目,我们将谈论。 实际上,我会为你做它,那么我们就做了一件事情,在这里我们点击一​​个按钮 一些文字,并推出一个新的活动。 非常简单,但我想通过 什么将进入这样一个项目。 当你做出新的项目,你会看到在Eclipse 这个项目名为Hello的Andr​​oid。 然后有一大堆的文件夹,在这里。 你真正关心的是源文件夹, 资源文件夹,水库,以及一定程度上的libs文件夹库。 只是让我们在相同的页面 如果你要创建一个新的项目, 你可以做到这一点就在这里,所以如果我想叫它HelloAndroid ,然后它会自动为我们的信息做了一大堆。 包的名称应该是一个唯一的标识符 通常会与网站关联,如果你有一个。 例如,我会打电话这个net.cs50.helloandroid。 我已经取得了这个项目一次。 好吧,对不起。让我们叫它HelloCS50。 然后它会问喜欢什么样的图标,我们想的事情。 这是因为Android开发工具界面, 我们加入到Eclipse的插件,所以我们可以选择喜欢的东西 什么样的图标,我们想,如果我们想要的话,会去到那个深度。 但到最后,才使这个项目, 一切都显示在这里。 正如我另一个屏幕上显示, 大家都有源文件夹,我将谈论什么都很快,这意味着, 但你可以看到,它立刻把我们带到的HelloCS50屏幕。 在这里有一些按钮添加文本和文本字段布局。 这有点像XCode的,但不幸的是没有相当精简。 但剪辑将成为您的朋友和ADT尤其是这样做的。 好吧,源文件夹是 持有的Java文件,这其实是你的程序的启动。 这基本上就像控制器。 资源文件夹或水库是在这里,我们将保持屏幕布局, 图像,声音,文字,动画和一切,很明显,库库。 和清单,这是Android系统知道的方式, 如何与您的应用程序进行交互。 它告诉它有关权限和什么样的活动将实际运行。 这一切都需要运行你的应用程序的基本信息。 源文件夹,如果我们展开它,你可以看到这里。 一个例子,代码会看这是默认的代码。 我们把它称为,MainActivity。 默认情况下,我们得到的倚仗,这就是所谓的这项活动负载时,这是一个函数, 所以你想调用的onCreate(savedInstanceState),的。 这将恢复信息的任何位 情况下,应用程序被暂停。 整个活动有一个生命周期的图表,你可以看看 当你得到一点点更深入, 但最重要的一行代码的setContentView有这个功能 这将加载资源文件的布局。 这里倚仗基本上是做什么它说 当我创建这个活动,我想加载此布局。 我们会谈论什么,布局是在第二。 如果我们要推出,这里看起来酷似, 默认情况下,因为我们已经这样做了Eclipse和ADT我们这样做是为了 这是为我们创造的所有样板代码, 我们可以将改变,因为我们喜欢的东西。 资源文件夹,就像我说的,这是我们持有的所有布局, 可绘制任何形式的图像 他们是所谓的可绘制,然后声音文件,菜单。 这是一种XML在一个很好的排序方式了一大堆。 正如你可以看到,有华电国际,LDPI MDPI和xhdpi文件夹的可绘制。 这些不同的屏幕密度,如此高密度每英寸的像素, 低密度,中密度,超高密度。 再次,这是我们可以支持所有这些不同的设备, 理想情况下,你将不得不为每个不同的分辨率不同的图像。 布局是我们包括所有不同的布局将被用来在不同的活动中。 他们还可能包括片段的布局, 这意味着基本部分活动。 如果你想要做一些很酷的东西一样,只要你转动手机 你想让它有一个不同的布局,为不同的文件夹,你可以做布局景观, 和Android会自动的资源文件夹内有一大堆这些规则, 所以它会知道来看看目前的手机设置的基础上的不同的文件夹, 你使用什么样的硬件。 同样,这个值-V11在这里和值-V14 默认值文件夹这是为 好了,本身的值,这将是在所有版本的操作系统的默认值。 另一方面,卷11和卷14的通讯与蜂窝 冰淇淋三明治。 同样,这些方式,在这些文件夹是不同的字符串 和风格,所以你可以自定义您的应用程序的外观 或潜在的甚至是它的功能,虽然这很可能是一个坏主意, 基于版本的操作系统。 和我谈起这一切都在这里。 同样,绘制,原材料,布局,价值观。 默认值,如果我们进入您好Android或你好CS50现在 它看起来就像这。 它会说你好世界。 正如你可以看到这里与Android文本 这个文本视图的文本,这基本上只是一个标签, 就是我们将调用它的iOS。 它有这个有趣的符号@串/的hello_world。 是这样的话,我们可以,我们尝试提取的所有字符串, 到一个单独的文件夹中的所有硬编码字符串在Android, 发生在values​​.strings。 如果我们看一下这里,我们可以看到,我们有一个硬编码的字符串保存在这里 你好世界,它被称为“世界,你好,这是样的 在许多平台上常见的设计决定您要到 字符串的事情,我们希望能够改变可能是那种。 我们不希望我们的XML控制F在我们的源代码文件,。 我们希望能够改变这种每当我们得到了机会。 此XML文件的strings.xml,是一种解压方式 硬编码字符串,否则将在我们的布局资源 或者在我们的源代码。 该清单是我们保持这个重要的信息有关的应用程序。 它包括包名。这是一个独特的标识符。 在App Store的iOS应用程序的名称不同 不必是唯一的,事实上,你可以在你的应用程序的名称更改 您提交后,所以如果我开始了与“愤怒的小鸟” 然后我进行更新,我不想发布一个新版本 我想我可以把它称为“愤怒的小鸟”2,而我在同一个发行周期。 这只是显示更新。 唯一的东西,都必须是唯一的,这是包名, 没有多少人会看到。 那么,你只能看到,如果你正在寻找的源代码或者如果有某种错误。 这些组件包括的活动,所以我们必须声明 我们使用任何形式的活动。 这是一个权限之类的事情。 由于Android没有这种严格的申请程序 提交的应用程序,而不是他们只是尽一切基于权限 并宣布在清单中的东西。 SDK版本也很重要。 我们可以设置使用SDK的最低版本的东西。 很显然,你要创建的代码 和设计新的操作系统。 也许不是最新的,也许不是糖豆。 也许你想设计主要用于冰淇淋三明治, 虽然他们是几乎相同的设计决策 实际库和API。 但是,而不是让人们 原生Android版本类似甜甜圈回来的路上时, 还有谁碰巧使用,尝试下载您的应用程序,然后说 这是行不通的,我的手机上,你可以设置的最低版本 是姜饼或冰淇淋三明治 或任何你觉得舒服的一起提交的。 这是一个例子的清单。我们可以看看在实际中位。 好吧,我们就前进的演示。 此为演示,如果谷歌Android建立你的第一个应用程序或类似的东西。 我们将通过在那里的一切是怎么回事, 对不起,只是一个参考,谁知道这里Java在任何程度上的? 好吧,所以Java走出CS50对于大多数人来说是新的编码语言。 简单地说,走一遍这里说什么, 我们想要做的是什么,而不是调整这个Hello World应用程序 它是所有它启动,它说,“世界,你好 和它说你好CS50在顶部,因为这是活动名称 我们要试图使一个文本字段和一个按钮 这样,当我们按下此按钮,将采取文字 从文本字段,并推出一个新的活动,它会说 无论该文本在活动中说,这是比较简单的。 这是不是很有趣。你不想要,释放任何这样的应用程序。 但它演示了一些重要的设计的东西。 我们将不得不与清单,布局文件, 的源代码,你可以看到如何启动一个活动,从另一个。 我们将开始与我们的第一个活动的布局, 我知道这是一种小的, 但正如你可以看到,现在,所有这是我们的标志,我们创建, 活动名称,和它说你好世界的中心。 相反,我首先要使它成为一个线性布局, 相对布局,而这些所有的东西 你可以看看值得在一些点在布局方面。 这是一个很像HTML。 我们说,这不是真的值得了解的方面的纲领性意义, 但也有许多不同的布局,你可以控制, 它就像CSS款式。 有很多事情只是在这里的美学, 是啊,这是值得学习的,但它的诸如此类的事情,你应该看看 你去,你觉得你需要一些新的东西。 所以我可以利用的一些ADT工具,至少在这里,开始了与。 我会做出一个文本字段,我会让一个按钮。 把他们的权利,彼此相邻的。 他们已经适当地调整。 我们很抱歉,再次回来线性布局和相对布局之间的差异, 线性布局提供了一些功能 在填充空间并确保 我们的位置水平或垂直的事情。 线性布局和相对布局的最大区别 是布局相对位置的一切相对于其他意见, 它的好处是,它需要较少的时间来绘制 因为作业系统的所有代码和说,这正好 相对于此,在这里。 这意味着它使较少的测量,比一大堆的嵌套的线性布局, 这是我必须做的,如果我想的事情去垂直这里。 我已经有一些事情水平,所以我需要一个不同的线性布局 嵌套它们垂直,但如果我做一个相对的布局,我可以说 保持这个到左侧,右侧和下面这些东西。 但是,因为我希望他们能填权现在我打算使用线性布局, 你可以看到它已经为我们做了很多这些东西。 所有视图需要有一个属性的宽度和高度, 发生这种情况的权重为1,这有一个权重为1的 所以,它充满了整个空间。 但是,宽度和高度是最重要的。 此ID字段在这里并不重要,在实际的布局 除非我们使用相对布局和说,大家可以参考 一种观点认为参考到另一个位置。 如果我们有一个相对布局,我们可以说,低于这个位置 或高于这个ID,但这个ID将是重要的 当我们在我们的代码中使用它,因为大家可以参考一下 这些个人的意见这种方式。 然后你就可以看到标记requestFocus,这是一些你可能看到的pset 7。 有一个自动对焦标记或东西沿着这些线路的领域之一。 还有一件事,当然,我们可以做的,就像在HTML中, 通知关于ADT的好东西之一是,它可以自动在这里。 也许不是很好的,因为它没有在XCode,但它仍然 我们可以说提示,然后给它一些字符串排序 喜欢写一条消息, 如果我给它的时刻,也请注意,我在这里得到一点点的错误 说,我们应该使用一个字符串资源, 所以如果我让它做一些对我的辛勤工作 我可以选择这个字符串,做折射Android和提取物的Andr​​oid串。 它可以给我这个名字,写一个消息, 什么,它现在是没有取代硬编码字符串 与参考字符串的XML文件中的字符串, 这意味着,现在这是在这里。 我知道,在这一点上似乎有点琐碎,像额外的工作, 但是当你有一大堆的事情,一大堆的字符串, 这是非常重要的,特别是对于本地化 因为正如我前面提到的,Android是全球使用的操作系统 你可以简单地做价值观EN或值SP 或英语或西班牙语或其他语言的东西。 然后,你可能还没有过这样的经历还 因为我们并没有做太多的JavaScript网页编程方面, 但我们也可以做这一领域的onClick按钮, 这是一个引用的方式在我们的布局 我们希望在我们的源代码一定要调用的函数。 我要调用的SendMessage, 为了使这项工作,这意味着在这里的主要活动 我将不得不创建一个函数是公共 ,这样它可以被访问由布局。 它是无效的,因为你只是不希望它返回什么。 我们叫它的sendMessage,它需要一个视图, 这是一个样的背景下,我们可以巩固这个方法 个别的观点,当我们运行它。 我不知道你是否注意到,你不会注意到, 但在这一点上就在这里 这种观点是一种尚未被列入, 当然,大家都知道从CS50不包括的类型。 关于IDE的Eclipse这样美好的事情是, 如果你忘了,包括类型,它会用小的红色波浪下划线 然后给你选择导入的看法。 这样做,是一个快速的方法控制移位O,以及将导入 它需要的所有文件。 现在,我们有这个函数SendMessage, 这是怎么回事MainActivity消息发送到一个新的活动, 我们将不得不使用从这个意图推出新的活动, 所以我们可能要创建一个全局常量或还特别公开常数 这将帮助我们知道我们要如何来引用字符串 因为当我们创建了一个意图,我们不只是调用一个新的活动, 但我们也可以给它一个信息包。 一个bundle实际上是Android使用的术语, 说给它额外的数据,它不能是一个非常复杂的数据类型的一种方式, 但我们可以肯定包括布尔型或字符串或整数。 诸如此类的事情。 随意询问任何预选赛, 公众,最终,静态的。 公开是最重要的一个。 这意味着我们可以访问此变量从其他源代码文件 比如,当我们创建了一个新的活动。 大家可以参考一下这个文件内的字符串。 如果它是私有的,这意味着它是有限,这个单独的文件。 不过,我们会打电话给这个像额外的消息。 现在,我们已经取得了这个功能,如果我们按一下按钮,这个函数将被调用。 但是我们还没有做任何事情,很明显,与功能。 我们现在要做的是创建一个新的活动, 的活动,实际上将陆续推出。 在Eclipse中,我们可以说新的Andr​​oid活动,空白活动。 我们可以给它一个名字。 让我们叫它结果活动。 然后此层次的父字段指定的方式 的活动如何彼此相关的。 因为这一个从其他活动将陆续推出 我们应指定,它有父的主要活动。 我可以点击下一字段,这将告诉我们 还包括一些可选字段, 但关于ADT,再次,是很好的事情,如果我在这里向下滚动 在清单中,记住,这一切真的被列入默认情况下, 当我们最初创建项目 因为我们现在只是用来创建一个新的活动,而不是 这样做,因为我们经历过他们的GUI添加自己的类文件 它已经增加了这一切为我们的清单, 这意味着,现在的操作系统将不会抱怨 当我们尝试推出这项活动。 当然,也给它的标签,这也说明了在字符串。 它做了很多的事情,我们的后端。 不管怎样,现在,我们有这个结果活动, 实际的源代码在源文件夹中的文件, 你可以看到简单地谈谈这 因为我们告诉它关于这个层次的父母 它给了本场android.r.ide.home此onOption所选的事情。 这基本上是说的是,现在有一个菜单按钮 在屏幕的左上角 如果我回去到PowerPoint,我们第一次谈到行动起来吧 因为父层次,现在有一个小箭头,回到这里 这是可点击的,所以我们应该能够到后,我们运行这个程序 回去了,它是一种拯救我们有一点点的代码。 现在,在这个井,似乎抱怨了一会儿。 我们的意见说出来。 现在,为了真正与这2个活动, 我们要创造的意图,其中包括所有的数据。 的sendMessage现在我要通过一些代码位巡航 ,并解释说,因为我去。 一个意图,正如我所说,是从另一种方式来启动一个活动。 意图是类型。我们正在创造一个变量myIntent。 这实际上是一个对象,这就是为什么我们必须调用新。 这是常见的Java使用,这可能需要一点点的时间来适应。 这意味着我们正在使用的活动或类MainActivity, 意图以这种方式需要的活动,它会从 和活动,这是怎么回事,我们称之为ResultActivity, 那就是它自己的类。 中包括这样。 然后,正如我之前提到的,我们给到编辑的文本字段,ID 文本视图,因此,以编程方式捕捉 ,存在在EDITTEXT中的文本 我们使用此功能称为findViewByID, 这是类似的东西,你会当试图从DOM领域使用。 也许大卫谈讲座。 但它只是一种让那些这就是为什么我们这些字段标记这些东西。 Id.editText1。 它已经自动完成对我来说。 然后我们会还包括这EDITTEXT现在我们有现场 在我们的程序中,所有的findViewByID基本上没有 你可以把它看作是给大家一个参考,EDITTEXT。 现在,我们想要得到的字符串或消息 ,在该EDITTEXT我们可以通过使用- 你能想到的EDITTEXT为结构 在Java对象与一大堆不同的方法,我们把它叫做 或连接到它的字段和属性。 当我说EDITTEXT。它让我有机会访问 方法如gettext的,这将得到当前文本 在该EDITTEXT,然后再转换,明确 一个字符串,我们已经保存了该消息。 现在我们真正想要做一些与这一意图,我们只是瞬间。 我会把多余的,因为它是调用的意图, 再次,就像我之前说的,这是一种方式创建捆绑 一大堆数据。 额外的消息是我们的标签,所以我们知道我们节省下, 然后我消息。 然后我们就可以真正开始活动给​​它的参数myIntent。 这实际上将推出的活动,所以,因为我现在升级到Windows 8 有可能是一些简要的错误,但试图忽略它们。 这是在Android模拟器。 希望的代码实际上将在瞬间弹出。 同样,无视所有那些小东西。 但在Android模拟器可以模拟任何版本的操作系统 从最早的甜甜圈,姜饼。 这是果冻豆4.1。 但是,你现在可以看到,这是我们所做的事情。 这具有的MainActivity,EDITTEXT,按钮。 我可以输入的东西,但是在这一点上我们还缺少什么? 我们作出了场MainActivity发送消息 的其他活动,但在这一点 我们没有做任何其他活动,所以它不会收到任何东西。 让我们完成了这部分在我们继续之前。 这种结果的活动,我们需要做的是什么,我们需要做的是,我们需要到 我们也可以在这个活动中引用的意图, 所以我们要捕获的意图,这是非常简单的。 它是一个函数包含在活动类, 因此,我们可以说“消息的意图。” “意向书myIntent =的getIntent。” 而这将给我们现在myIntent是一个对象, 这是一个参考的意图,我们这个活动。 MainActivity调用,并提供了额外的信息,导致活动。 结果活动现在看起来,导致这里的意图, 我们可以访问的信息是,我们在中的另一个, getStringExtra,这会为我自动完成。 然后记得,我们标记的方式,数据位 为给这一领域就在这里,这个公共字符串, 这是我们实际上包括字符串标记。 如果我说MainActivity.Extra_Message, 它就在那里,这是有点像参数名称 当我们通过从控制器的代码模板, 当我们想要说标题箭头的东西。 它的想法是相同的排序。 现在,请记住这一点。 我们也有这个自动创建或自动生成的代码 结果活性,其中包括在中间的文本图 说“世界,你好。 我们可能有更大。 让我们做到这一点。 我们可以使40密度独立像素。 让我们来看看,这是超级巨大的。这将是好的。 然后以引用这个人在我们的代码中的文本视图 我们需要给它一个编号, 为了做到这一点,我们说@ + ID,这意味着我们将它的ID。 如果我们刚才说的@ id,它会假设,我们引用一个ID已经存在, 让调用这个resultTextView。 注意到,在XML中有没有分号或任何需要。 一切都在这些标签。 它非常类似于HTML中大量的感官。 这需要一点点的时间来适应,但最终你会觉得很舒服。 让我们更新我们的结果文本视图的文本, 像我们一样,当我们得到我们的其他活动中,编辑的文本字段 MainActivity在这里,我们也同样会 我们会发现视图的ID。 和R的情况下,我没有提过,是参考我们的资源文件夹, 然后ID是一个参考的资源“文件夹中的一切,所有的ID, 和resultTextView。 像以前一样,resultTextView是一个对象, 这意味着它有与它相关联的所有这些特性。 当我们使用这个文本字段编辑文本或文本视图的getText 实际上,我们可以使用的setText 然后,我们已经找到了该消息的意图, 所以我可以说的消息,这实际上设置消息。 它花点时间来启动,然后我们可以看它是否崩溃, 但这个过程有任何疑问,诸如此类的互动吗? 在许多方面,它的简单。 我之所以要通过相对简单的东西 再次,是因为你能看到的布局之间的相互作用, 的源代码,参考的东西你怎么 也许得到Java的工作方式有一点点暴露。 如果我输入的东西在这里,ohai一样,然后我按一下按钮, 它推出一个新的活动,并,文本视图ohai说。 这是非常简单的,但希望在这个例子中 排序看到这种互动是如何工作的,和现在那些乱七八糟的文件 所有这些项目文件夹的左侧,希望你知道现在去哪里找。 这是你的源代码区域。 布局是真正的唯一的事情,你会处理包括图像,直到你 可绘制或什么的,和值,即包括字符串, 正如我们提到的,风格是有点像CSS。 当你想解决这个问题,但直到你感觉很舒服,增加额外的天赋 您的应用程序就没有必要担心太多。 只是包裹起来的另一件事情,你一定要包括 假设你要很酷的功能集成,并保存自己的一些额外的编码 将包括第三方库。 这里是小的Andr​​oid与福尔摩斯的帽子的家伙。 这是一个行动吧福尔摩斯库, 这基本上意味着,你看到刚才的动作栏, 这是现在的标准配置冰淇淋三明治和糖豆, 如果你想带那种旧版本的用户体验,以用户 并保存自己的担心用户如何去浏览 在旧版本中,当那个东西是不存在,你可以包括库 然后你只需要参考,而不是默认的Andr​​oid 库行动吧,你引用这个支持库。 Scoreloop的之类的东西,这是伟大的,如果你要,其中包括游戏。 它可以让你添加游戏排行榜和成就。 Admob的是一种把广告到您的应用程序 的情况下,你想一点点钱。 当然,也有整合有Facebook和Twitter 如果你想分享的东西很容易,等等。 Dropbox的,同样,Google Analytics(分析)是寻找一个有该图表。 这将是非常重要的,如果你真的想看到谁交互 与您的应用程序或者是谁,他们是如何相互作用,等等。 默认情况下,谷歌,告诉你很多已安装您的应用程序的统计信息 他们有什么样的手机,他们有什么样的操作系统版本。 但是,如果你希望看到谁在使用它每天的基础上,以及他们如何使用它 那么你会希望包括某种这样的跟踪系统。 当你准备好分发您的应用程序 我并不需要太多的深度进入,在。 点击这里的链接,谷歌播放。 它使用的是Android市场。 他们更名一切与谷歌的播放, 所以现在你提交。 这是非常简单的。 你必须包括说明,一些截图。 就像我说的,有没有像iOS的审批过程。 和从这里去哪里? 我向您展示了一个非常简单的例子。 我们希望,如果它似乎极其简单 那么这可能是一个好兆头。 如果你感到有点困惑或不确定,正是我打字 这也蛮好的,但是从这里去谷歌指南。 这是一个伟大的地方开始。 它会跟你通过他们所期望的应用程序设计方面, 用户通常是如何与它进行交互。 它更比iOS更自由的形式,我会说, 它似乎像表意见,我不知道,那是他们的面包,黄油。 一切都是表视图,向上和向下滑动。 有了Android,他们肯定鼓励人们看它从 一大堆不同的观点。 当包括软件开发工具包在这个ADT 默认情况下,你在Android有一大堆的样本项目。 就在这里,机器人,机器人示例项目。 如果我点击的话,我可以选择一个版本的样品项目申请。 这里有一个不同的事情一大堆。 开始行动吧兼容性, 加速度播放,备份和恢复,支持蓝牙,手势建设者。 喷气男孩是一个样本,他们给你的游戏,是LunarLander。 这里有一大堆的示例应用程序, 他们都针对Android的API在不同的方面, 的想法是,当你让你的应用程序 你不需要学习一切关于Android的Andr​​oid应用程序。 你只需要了解的部分,其实你要使用。 看看这些样品库。 随意进行复制和粘贴代码,并重新应用它。 这是一个伟大的事情,看起来更困难的代码 并尝试去了解它,这当然是为什么CS50 我们常常给你大量的源代码。 看看其中的一些,如果你要使用类似的库 然后将其应用到自己的代码。 当然,有教程。 搜索教程。 我发现了很多好的网上可以给你带来加快速度 片段真的是什么,以及如何可以使用它们。 这些新设计的东西,有些像碎片一样, 你真的不必担心,除非你正在做一个 在相当大的范围内项目。 他们的事情,谷歌正试图逐步英寸 StackOverflow的当然是你的朋友。 希望我卖给你的Andr​​oid上, 实现它只是编码语言方面更容易接近。 Java是Objective-C的理解比我想说容易得多。 Android正在成长,我觉得比iOS更。 我的意思是,有太多的数据是,除了我在想什么。 这是怎么回事了一段时间, 他们是落后几年在其设计周期 所以它的排序可以理解的,他们还在通过一些 一致性的问题,比如这个动作栏为他们仍然是一个新事物, 排序在所有的应用程序创建类似的用户体验。 希望你可以向前走,现在开放的Eclipse ,使自己的Andr​​oid应用程序。 没有人有任何的问题之前,我们总结什么? 我可以告诉你,答案是42。 嗯,高兴编码大家,祝你好运。 [CS50.TV]