[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]