>> FRED聪：好的。
嗨，大家好。
感谢您的欢迎 在这个研讨会上加入了我。
所以今天我们将要谈论 如何开发应用程序为Android，
特别是，我们要 是为了采用Android工作室
发展我们的应用程序。
>> 所以，大家都知道。
Android使用Java的，所以我们会在 经过简单的介绍
在Java本身。
所以我知道你们很多人只有 编程经验的C.所以
这是完全正常，这是 因为Java是非常，非常
类似于C，具有小的差异。
>> 所以，在Java中类型 固定的字节数。
因此，在C，我们有短裤 和多头，他们
不同的比特数 从机器到机器。
在Java中，它已经被设置为标准。
所以字节有8位，短裤 有16位，等等，等等。
我们也有字符，布尔值， 也和双精度浮点数。
所以，你的方式计划 Java中，这是非常相似的。
因此，例如，我们有 for循环和while循环，
如果和else语句是 完全一样，你会做C.
>> 好吧，所以对特殊的事情 Java是，它是面向对象的。
现在，什么是对象？
所以，如果你看一下 你周围的事物，你会
注意，每一个真正的世界中的对象 有两个共同的特点。
那就是他们有状态 他们有某种行为。
>> 因此，例如，狗 将有哪些国家
有名称，颜色，品种，也许 如果狗是饿了还是不行。
还有一些行为，狗将有 会狂吠，或摆尾，
或取一球。
所以我们也可以将此 到无生命的物体。
因此，例如，汽车，它们具有 该型号，年份，最大速度，
等，等等。
和他们有一些行为。
例如，在加速，或 制动，或去反向。
>> 所以Java对象试图模拟 这种由具有属性和方法。
所以字段是指出 该Java对象可以具有
而方法将代​​表 行为的Java对象会有。
所以，当我说的方法 和领域，我真的
仅仅意味着变量和函数。
它们是完全一样的，除了 它们适用于特定的目的。
>> OK，所以移动到类。
Java类是像 蓝图的对象。
他们会告诉你什么方法 它有什么字段有，
而即使在这里，我们有什么 所谓的访问修饰符其中
我们会在一段时间。
因此，要声明一个Java类，它的 在语法上非常类似C结构。
>> 在这里，我们用公共类车起步， 然后我们有一个开放的括号，然后
字段的一些数 你想要的对象有。
然后我们在这里有一些方法， 我们也有一个对象的构造。
现在，这是什么对象的构造 做的是它告诉对象，
OK，我想这个初始化 反对用某种领域。
>> 所以在这里，我们希望每一个汽车 有一个模型和一年。
因此，我们有一个构造函数 只是具体
为模型和年份，以及 这将设置模型字段
到一定值，并 当年领域也是如此。
>> 现在关于访问 修饰符我在说什么。
在这里，我们有市民和 私有访问修饰符。
所以，你可以认为这是 在RWX在您的目录。
因此，他们让某些人 阅读，并有机会获得
这些字段和方法。
>> 所以，如果我说，模型和 今年和速度是私有的，
这意味着其他对象不能 试图访问该对象的字段
也有私有的。
但是，当我设置的访问 改性剂是公开的，
现在这意味着其它的目的 可以自由地访问和甚至
用在此处定义的方法。
>> 因此，这是基本的 Car对象，我有。
我们有加快， 打破，和getSpeed​​方法。
这一点，是每个人都清楚 Java对象以及如何申报呢？
酷，没事的。
所以，如果你想使用Java 在程序本身目的，
那么我们就可以用这个 新的汽车构造。
所以在这里我们说，我们想声明 一个新的对象，它的类型是轿车。
在这里，它的应用 该型号和年份，
我们在定义 这个对象就在这里。
>> 因此，这也是另一种 反对，如果你注意到。
这是一类的 主程序本身。
我们有这个PSVM，或公共 静态无效的主要，功能，
其出发 点你的程序中，
类似于主 功能在你的C程序。
在这里，我们可以访问和 使用对象的功能
使用点，然后将 函数名符号。
我们甚至可以指定 某些参数或参数
该功能。
>> 好了，现在正在上继承。
所以，现实世界中的物体可能 共享相同的特性。
因此，例如，有 不同类型的自行车。
例如，山地自行车， 城市自行车或双人自行车。
因此，他们有这个共同的 成为一名骑自行车的特性。
>> 所以自行车可能有两个轮子和 它们可以具有一个车把，甚至
尾灯或类似的东西。
所以Java为我们提供了这个 电力为代表的对象
有某些共同 通过继承特性。
现在，继承呢，就是它 通过对对象的属性和方法
到一个子对象。
>> 因此，举例来说，如果我 有车，它有
有四个状态 轮子和一个方向盘，
那么我们就可以通过这个上 某些不同类型的汽车。
例如，我们有 轿车，跑车和越野车。
现在，这三个不同 类型的汽车仍然会
有四个轮子和一个 方向盘，但他们
可能有一定的 特殊的特点，
比如有5个座位， 一种用于轿车，例如。
>> 因此，要利用这个继承 功能，我们使用这个extends关键字。
所以记得给车 反对我以前定义。
现在，我定义了一个轿车对象。
所以这个轿车对象将有 相同的字段和功能，或方法，
该车将有。
但是，在这里我指定 某些附加功能，
例如，该组 乘客人数
并得到乘客的数量。
>> 在这里，你可能也注意到 我们可以覆盖的方法，
这意味着我们只是 更换行为
采取不同的行动在某些情况下。
因此，举例来说，我想 设置一个最高速度为我们的汽车。
要做到这一点，我检查这是否 速度会去在最大速度。
如果没有，那么我所说的 超一流的“加速法。
所以这是super.accelerate（）调用 超类的加速方法。
>> 最后，我们要 说说接口。
所以接口是一种只暴露 某些方法向外界。
所以，他们就像一个表 的内容，你
可以把它们看作像 C头文件，就
类似方法用空体，和它们 指定哪些对象或类
必须有，或者是什么方法 对象或类必须具有。
>> 因此，举例来说，如果我 有一个自行车界面，
它有三种不同的方法， 在这里，如果我实现了这个接口，
然后这意味着这个自行车 需要实现三个相同
我在接口中定义的方法。
>> 到现在为止，没有其它问题？
好吧，冷静。
所以这是一个非常简单的 和Java的快速教程。
有在途中更多的功能和话题 Java中，你实际上可以通过。
例如，有 仿制药，有数据类型，
甚至还有枚举类的东西。
所以，如果你想了解更多 关于这一点，做到遵循这些链接，
他们会教你更多关于他们。
>> OK，所以，让我们继续前进的 研讨会的实际肉，
并且，实际上是 Android的编程。
所以在我们实际 得到编程，
我想谈一些行话。
因此，一个活动 说法Android的方式
它是一个单一的屏幕 内的应用程序。
>> 因此，举例来说，如果你有Gmail 应用程序，我们有看法的电子邮件活动。
然后，如果你点击 某些电邮，说
将显示另一个活动的地方 这是一个观点电子邮件活动。
然后我们也有撰写 活性，或编辑消息活动。
等活动 一般只是一个单一的屏幕
内的应用程序本身。
>> 现在，意见，使组件 在屏幕，或活动本身。
因此，他们得出了一定 在屏幕的东西。
因此，例如，它可能是一个 文本字段中，它可能是一个标签，
它可能是一个检查框。
所以这是许多不同类型的意见。
所以，现在我们有意向， 这就是一个信息
被传递到另一个活动。
它们包含的信息为 你想要的这个活动来执行。
最后，我们有 清单文件，那
是一个XML文件，让你的手机 所有关于你的应用程序的信息。
所以这包括的版本，并 你将有活动。
>> 好了，让我们开始。
因此，我们将要 采用Android工作室。
所以，如果你们有这个已经 安装，随意跟着。
我们会尽量从头开始。
所以我要去尝试 并创建一个新的项目。
我要去打电话 我的Andr​​oid项目101。
在这里，我们把的名字 项目在应用名称字段。
>> 公司域名，你不这样做 真的要担心。
这是多么的Andr​​oid 标识您的应用程序。
所以，你有一个域名，您可以键入 在里面有你的域名。
但是，如果你不这样做，你能感觉到 自由地在任何你想要的类型。
所以我在这里只需要输入frederickw.com。
>> 然后，最后，我选择在哪里 我想我的存储项目。
而且我要只是选择我的桌面。
所以用户，弗雷德里克 聪，和桌面。
好不好。
然后单击下一步。
在这里，我要选择 得到支持的最低API。
因此，在这种情况下，我 要选择API 15。
和它的罚款，如果你真的只 选择4.4是最新的API。
或者如图5所示，实际上。
但你只需要担心 这手机你真的支持，
和你的目标哪些手机。
点击下一步。
>> 好了，我们来此 屏幕，我们只是
要使用创建一个 通过这一活动。
所以，我要点击空白 活动，然后单击下一步。
我们打​​算把它称为主 活动中，我觉得这很好。
只是去调用它， 按完成就在这里。
等待它加载，并有才好。
>> 所以在这里，我们注意到三个 不同的文件夹。
我们有清单文件夹 包含我们的清单。
如果你打开​​它，我们将看到我们的包。
或如何Android的标识 您的应用程序
然后我们有这个 应用程序标签，
包含了我们的应用程序的标题 以及应用程序的图标。
>> 实际上，我们可以运行此 应用直线。
那么，为什么我们不尝试做到这一点？
我将使用Genymotion。
如果你把自己的电话，你可以 连接起来并运行它，如果你想。
但我只是想使用 仿真器，以及我要开始了。
哦。
嗯，我认为这是 将需要一段时间，
所以我想我们就开门见山 为解释更多关于这一点。
所以在这里我们有Java目录，或 在您的源文件都包含。
在这里，我们的主要活动本身。
你可以看到它 扩展了活动类。
因此，我们的主要活动是一个屏幕 这将是我们的应用程序。
然后在这里我们看到，一些 功能是为我们自动生成。
我们拥有的onCreate功能， 并且将调用whenever--
学生：你介意 使文本大？
FRED聪：OK，确保万无一失。
我会尝试和增加字体大小。
觉得应该不错。
好了吗？
>> 学生：只是一点点 更高，像20或什么的。
>> FRED聪：20？
好不好。
OK，没事的。
所以在这里我们有的onCreate 方法会
被调用时，我们的活动 在[创建？说明了什么？。
我们有 onCreateOptionsMenu，我们将
看到有实际 一个动作栏，然后
我们可以把它添加某些菜单项。
然后在这里我们有 onOptionsItemSelected。
因此，这就像一个事件监听器，所以 只要我们行动起来吧选项
被点击时，这个 函数将被调用，
并且将与一个传递 单击的某些项目。
>> OK，我要see-- 这不是运作良好。
让我们尝试和开始。
噢亲爱的。
好不好。
这是令人担忧的。
好了，反正。
在这里，我们有布局 我们的活动本身。
这是我们的主要活动，并在这里 我们注意到，有操作栏。
然后我们有这个打招呼 世界标签，我们实际上可以
编辑文本就在这里。
如果你去和滚动 下到的Hello World，
我们可以将其更改为任何我们想要的。
例如，它可以是，有您好。
欢迎。
还有我们去，它的变化。
噢亲爱的。
这种风格不工作。
OK，这是令人担忧的。
OK，反正我们可以继续前进，而不说。
所以现在，让我们来尝试 做一些很基本的东西。
所以在这里，我们将不得不 一个标签，然后我们
将会有一个文本view-- 对不起，不是一个文本视图，
我们将有一个编辑文本。
那是一个组件 你输入和东西。
因此，我们有一个纯文本，然后 我们只是将它加入到我们的界面。
>> 在这里，我也想加入一些保证金 顶端，使其看起来更好。
所以，我们要继续到 属性，然后在顶部缘
我们将在20个检测点补充。
所以，现在，DPS只是 测量单位在Android中，
他们主张密度 独立的像素。
所以，你可能知道，Android的，有 许多不同类型的屏幕
然后他们有 不同的屏幕密度。
所以在这里它只是将是 密度独立的像素，
所以这将是相同的 在所有的屏幕上。
>> 要扩展这个编辑文本，并 那么我也将添加一个按钮。
而且它会说OK。
20 DPS。
好不好。
所以，现在我们有三个 不同的组件。
和方式，我们可以参考 这些在我们的主要活动课
是通过使用这种方法 所谓findViewByID。
所以我要定义一些领域。
因此，我们必须在TextView中， 所以我们说helloText。
然后，如果你使用的是Android工作室， 您可以使用快捷键替代，
进入。
并单击导入类自动 导入相应类别
我们所需要的。
然后在这里我要一个ID添加到 这个TextView的并称之为text_hello。
现在，我们已经定义 为此TextView的一个ID，
我们可以用它来指 我们刚刚定义的TextView。
所以helloText等于 TextView的findViewByID，
然后我们指定的ID 我们希望，这是r.ID.text_hello。
>> 所以，这是非常相似的JavaScript 和jQuery，在这里我们可以实际上只是
参阅某些元素 在刚刚布局
通过使用我们指定的ID。
因此在一般情况下，访问一个 某些对象或特定字段
在我们的布局，你将有 使用此findViewByID方法。
然后我们将做同样的 事情对于其它两个要素。
在这里，我要 添加ID text_name。
是。
以及为这一个。
Button_ok。
>> 现在，我想这做的是 当我们点击确定按钮，
我们已经输入某种 名称的文本字段，
那么它会更新这个 标签说，喜的名字，欢迎。
因此，早在我们的主要 活动课，我们
也要去尝试和参考 那些我们必须找到的元素。
>> 因此，我们有EditText上nameText。
哎呀。
输入和替代，进口类。
然后还确定按钮。
同样，我们要 做同样的事情在这里。
nameText等于的EditText findViewByID，r.ID.text_name。
然后确定按钮。
findViewByID，r.ID，然后button_ok。
>> 好了，现在我们有三个 我们要引用的元素。
所以现在我要附加一个 在单击监听到我们的按钮
监听用户点击。
为此，我们只使用 setOnClickListener事件。
现在，这里在说，我们需要 指定setOnClickListener，
你能做到这一点，只需有一个 新onClickListener，然后按Enter键。
>> 然后你有这样的匿名 类或匿名对象。
而且我们也有这个的onClick 方法，这是基本
什么它会被称为 每当我们按钮的点击。
>> 所以在这里，我想要得到的名称 被输入到一个文本字段第一所以
字符串名称等于 nameText.getText（）。
再次，这是象 用于指Java语法
在对象中的功能。
所以nameText.getText，然后我们 将其转换为一个字符串。
现在，我们有名称 是由用户输入。
>> 然后我们要 产生一个新的字符串，
所以它会被称为打招呼。
我会说，喜的名字，欢迎选购。
最后，你要 更新helloText。
因此，要做到这一点，我们只需调用 helloText.setText（你好）。
好不好。
哎呀。
>> 我要去尝试重新运行Genymotion 最后一次，看看它是否工作。
如果不是这样，这是完全罚款。
好不好。
所以我想这是行不通的。
其实，让我尝试这样做。
可能是这一点。
Genymotion。
好不好。
行。
是的，它的工作原理。
好不好。
这是可怕的。
好不好。
我不是故意这样做。
好了，我们有这个Android模拟器。
让我关闭这个功能。
因此，我们有我们的Andr​​oid模拟器。
所以我们要尝试 运行该应用程序，我们做了。
只是要单击播放按钮， 而且它会说，等待亚洲开发银行。
哦，伙计。
重新开始。
OK，我想这仍然无法正常工作。
OK，请不要介意，那么。
这将是一个遗憾。
但是，让我们说，我们希望 创建一个新的活动，
而我们将有一个 画面中的活动。
要做到这一点，我们只要点击 该文件，然后新建。
然后在这里我们可以选择 活动，然后空白活动。
在这里，我们将调用 它也许CatActivity。
>> 好了，现在它生成其他两个文件。
一个被称为 activity_cat，另
被称为catActivity，这是一种类。
因此，让我们说，我们要添加 猫的照片就在这里。
所以，当你做到这一点，我们要 使用ImageView的类。
我们将它添加到这里。
然后设置页边距为20 DP。
>> 现在我们要找到 在互联网上一个猫的图像。
所以，让我们来看看。
猫。
好不好。
我想这是很好。
好不好。
所以现在我们有我们的形象。
所以，我们要添加 它为我们的项目。
可以通过右键做到这一点 点击和then--我们
可实际上只是打开这个， 去下载，对不起，台式机。
要试着找到它。
猫。
就在这里。
我将它复制到我的文件夹中。
现在，它要问我几个选项。
现在，我只希望这 在该文件夹的绘制，
那将是对所有 不同的屏幕分辨率。
或者，我们可以 其实只要选择
它的屏幕分辨率您 希望此图片是英寸
所以，要选择 绘制文件夹，然后单击确定。
只是将它命名为cat.jpg。
>> OK，所以，现在它的加入 进入我们的图像视图。
我们将不得不使用 这个来源就在这里，
然后我们可以使用这个点点点 按钮，并选择猫的图像。
好不好。
所以，现在我想让它这样的 它的大小刚好。
所以我要选择此调整 查看边界选项就在这里，
而且自动 它设置为合适的尺寸。
好不好。
现在，实际推出这个 从我们以往的活动活动，
你将不得不使用 一些所谓的意图。
所以我们可以说我要添加其他 按钮启动该活动。
我将它添加在这里，就在这里。
然后它会 有文字激活它。
哎呀。
好不好。
>> 现在，我们如何真正打开 本次活动中的新的活动？
所以，同样的交易和以前一样。
我们需要的ID添加到该 按钮，并调用它button_activate。
然后在我们的主要活动，将 有这个新的按钮activateButton。
然后还用 findViewByID方法。
activateButton等于按钮 findViewByID r.ID.button_activate。
>> 好不好。
然后我们也要去 添加在onClickListener。
新onClickListener。
然后，我们将使用 所谓的意向这个事情。
意图等于新的意图（本）。
的，然后名字 我们要显示的活动。
所以在这里，在此，我们将 有catActivity.class。
抱歉。
我们将不得不 指定@ MainActivity.this。
所以，现在的物业。这是指 到对象的当前实例
本身。
好不好。
到现在为止，什么问题吗？
所有的好？
行。
>> 然后，如果你想创业 活动中，这是很简单的。
我们只是调用了 startActivity方法。
然后我们通过在Intent 我们刚才定义的对象。
不幸的是，我们 不能真正表明这一点。
我希望我们可以实际运行 这一点，并显示它沿研讨会上，
但不幸的是没有。
哦，伙计。
我明白。
哦，我们要尝试并杀死ATB.exe。
好不好。
重新开始。
难道它的工作？
哦，OK。
所以，现在它的实际编制。
呵呵。
不幸的是，有 没有任何设备上运行。
让我们试着重新启动我的模拟器。
嗯，我们走吧。
它出现了。
好不好。
所以，我要发动我的 在我的Andr​​oid模拟器的应用程序。
我们拥有的东西 我们定义刚才。
因此，我们有标签，文本视图， 文本字段，然后按钮。
所以我要输入 我的名字就在这里，
还有，我们走了，它改变了文字。
因此，如果我们输入美孚，它的 要改变美孚。
>> 如果我点击 激活按钮，
我们已经联系到实际推出 新的活动，希望这将工作，
在那里，我们走了。
它推出了新的活动。
回去的时候，我们可以按 后退按钮就在这里。
或不。
呵呵，我们走吧。
哎呀。
这是不好的。
好不好。
>> 所以，现在我们已经实现 在Android的一些基本的东西，
我们可以尝试做一些 更复杂的东西。
因此，首先，让我们尝试和传递消息 从一个活动到另一个。
因此，让我们说，我们要传递 从主要活动名称
猫的活动。
和名称将是 从这个nameText检索。
>> OK，所以首先，我们要 在这里检索名称。
字符串名称等于 nameText.getText（）的toString（）。
好不好。
然后我们就可以用这个东西 叫intent.putExtra（名称），
然后它实际上还希望 一键这个额外的领域。
>> 所以我要定义一个新的 关键，我们把它叫做EXTRA_NAME。
所以我要利用这个 键，CatActivity.EXTRA_NAME，
然后通过在名称本身。
>> 好了，现在我们实际上可以检索 这种新的CatActivity内。
为了做到这一点，我们必须使用 意图等于getIntent方法。
所以，现在它要 检索意图
被用来调用这个新的活动。
所以，如果你想要检索的字符串 我们居然把意图在里面，
您可以使用intent.getStringExtra 然后通过在相同的密钥，
>> 好了，现在让我们说，我们为您 要改变这一领域。
在这里更改此字段。
让我们使字体 该字段的大小。
因此，让我们说，我想这是20 DP。
好不好。
而且我要添加 ID为这个TextView的，
而且我要text_cat调用它。
抱歉。
>> 而早在CatActivity， 同样的交易和以前一样。
我们要定义一些领域。
这将是 一个TextView catText。
然后catText等于TextView的 findViewByID，r.ID.text_cat。
好不好。
再回到这里，我 要设置文本权
当我们检索 它从意图。
的setText（名称）。
>> OK，让我们尝试了这一点。
点击播放按钮。
我将使用相同​​的设备。
回到这里。
所以我们可以说我没有input-- 如果我们不指定任何名称，
让我们看看会发生什么。
所以，现在有出现什么。
因此，我们回去输入我们的名字， 它只是会说弗雷德。
所以，我们实际上可以传递消息 从一个活动到另一个。
好不好。
>> 因此，有很多其他的意见 您可以在Android中使用。
所以，现在我们有进度条，我们有 列表视图，我们有开关按​​钮，
如果你真的想 了解更多有关，
实际上你可以访问这些网页。
它们包含许多不同的资源。
因此，例如，该API 指导这里实际上
给你一些代码示例 在Android库中的某些功能。
>> 和一些教程，我发现有用 学习Android的时候。
这是官方教程本身， 而且这等教程就在这里。
最后，你其实可以 使用不同的库
为你的Andr​​oid应用程序。
现在，这些实际上延长 您的应用程序的功能
而不必 真写很多代码。
不足之处是， 当然，你实际上
要学会图书馆自己。
>> 因此，举例来说，如果你想 使用Dropbox的云技术，
那么你可以使用Dropbox的API。
类似与Facebook的API。
再有实际上几 不同其他杂项库
您可以使用。
如果你想获得一样， JSON从某网站，
那么我认为谷歌JSON 图书馆将是非常有益的。
所以，现在，转换一个JSON 格式化文本到Java对象，
反之亦然。
>> 再有就是改造和毕加索。
而且，如果你想use--的 那是，如果你使用的是REST API。
和毕加索，如果你使用的图像 为你的Andr​​oid应用程序。
行。
非常感谢， 和乐趣的编码。