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应用程序。 行。 非常感谢, 和乐趣的编码。