android 开发框架_通过此拖放框架学习Android开发

android 开发框架

1990年代后期,我开始进行涉及计算机的基于教室的研究时,我要做的第一件事就是将一些计算机带入教室。 我的顾问获得了六台第一代Bondi Blue iMac的资助,这些iMac将在我们进行研究的中学安装。 带着那些诱人的胶状形状的机器进入学校后,我对寻找参与者的担忧就烟消云散了。

那时,任何地方的计算机,尤其是中学教室里的计算机,仍然相对不常见,我们能够将其新颖性融入到我们的教育干预中。

App Inventor使您可以快速轻松地深入构建适用于手机和平板电脑的移动应用程序。

如今,计算机越来越普及,学生们例行携带的移动设备比第一代iMac具有更高的计算能力。 尽管仍然有一部分学生(成人和青少年)对计算机科学感兴趣,可以坐在任何可用的设备前,但在计算机上工作的新颖性和参与性不足以吸引那些否则可能会过去。

仍然可以通过基于设备的教育吸引学生,但是现在您需要使用学习者一直使用的移动设备。 这就是App Inventor的亮点。

移动编程框架

App Inventor是一个编程框架,用于使用可视块语言(类似于ScratchSnap )构建Android应用程序。 它最初是由Hal Abelson和Mark Friedman原型设计的,而Hal在Google的MIT休假期间就休假了,此后它从最初的基于Java的根源演变为USB调试器,再到使用Blockly库的基于Web的调试器。

App Inventor使您可以快速轻松地深入构建适用于手机和平板电脑的移动应用程序。

在规范的入门练习中,学习者构建一个简单的音板应用程序:轻按猫的图片,然后电话播放“喵”的声音。 构建框架之后,学习者可以用自己想要的声音替换声音,添加额外的按钮,并使用他们想要的任何有趣的声音效果构建自定义音板。 一旦构建了第一个应用程序,学习者就倾向于立即向同龄人(特别是尚未在App Inventor项目上工作的同伴)炫耀他们的作品,播放他们录制的幽默声音。

正是这种现象,新手程序员立即展示了自己所构建的东西(可以在任何Android设备上运行的合法独立应用程序),使App Inventor成为当今教学计算机编程的引人注目的平台。 也许会有一天,手工制作的移动应用程序取代了早期的iMac曲棍球鼠标,但这一天尚未到来。

事件驱动的方法

App Inventor鼓励学习者采用事件驱动的方法来考虑其程序。 该模型对于现代编程非常有用(考虑事件调度循环中现代程序要完成多少工作)。 通过跳过执行到完成的main()概念,我们可以直接跳入诸如“用户按下此按钮时会发生什么?”之类的问题。 这可能是教授编程概念的非常自然的方法,尤其是采用基于项目的方法时。

App Inventor环境包含两个主要部分,即客户端和服务器,这两个部分都是Apache 2.0许可下的开放源代码

尽管您可以运行自己的实例(如果要构建以某种方式扩展语言的自定义块,则特别酷),但是大多数用户使用appinventor.mit.edu上运行的免费实例。 Web客户端围绕Blockly库构建, Blockly库是另一个起源于Google的开源项目。 Blockly被设计为一种元语言,一种用于为Web构建基于块的编程语言的框架。 我经常将Maze Blockly难题用作像程序员一样对基于块的编程和思维的第一个介绍,但是Blockly也可以用于生成JavaScript代码

Example of the Maze Blockly puzzle

在服务器端,App Inventor是一个大型Java服务器,旨在在Google App Engine容器中运行。 服务器处理诸如存储人们的工作,登录凭据等日常事务,以及更令人兴奋和有趣的编译过程,通过该过程,用户的块表示形式将转换为可下载并运行的Android Package Kit( APK )文件。

除了编程接口,用户还需要具有执行上下文。 最简单的选择是在其Android设备上安装特殊的配套应用 。 伴随应用程序可以与他们的App Inventor会话配对,并将提供其工作的实时更新实例。 实际上,我发现某些学校WiFi环境不支持此功能,因为它需要用户计算机和设备之间的对等网络连接。 在这种情况下,可以在电话和计算机之间使用USB调试器连接,也可以在计算机本身上运行仿真器。 如果缺少可用的设备,则首先让学生在模拟器上工作是有意义的,然后他们可以轮流将其应用程序上载到手机。 学生还可以通过将其代码导出为APK并将其直接安装在设备上来进行工作(如果手机允许使用第三方提供的未签名应用程序),但是工作流程很慢。 这就是为什么最好使用实时更新,尤其是对于配套应用程序,因为建立USB连接可能非常棘手(有时需要安装驱动程序,并且总是需要安装Android调试桥)。

将App Inventor付诸实践

Starting to program the "Appy Bird" app

设计环境允许用户从界面小部件(例如按钮,输入字段和画布)(可以包含可移动精灵或直接绘制)中构建屏幕。 设计环境还允许激活电话专用的输入,例如方向/抖动感应,摄像头,甚至是对远程API的Ajax请求。

如上所述,编程环境在很大程度上是事件驱动的。 当某件事发生时,通常会每隔N毫秒敲击或敲打一下时钟,就会触发代码块。 该块可以包含标准命令式语言构造(循环和分支),并且可以设置应用程序全局变量状态。 也可以使用局部参数和返回值(或操纵全局状态的函数定义函数,这是简单应用程序的常见新手方法)。

Programming the pig's movements
Setting the global failspeed

例如,这是名为“ Appy Bird”的Flappy Bird克隆的动画例程,该子图形在每个时钟滴答声中移动。 同样,在时钟滴答声中,子画面的速度降低一个恒定量(模拟向下的加速度),并且在屏幕敲击时,速度设置为一个向上(正)的恒定值。 通过调整游戏的滴答速度和加速度,可以进行微调以获得最令人满意的游戏体验。

引入App Inventor时,Appy Bird游戏有点复杂,但对于经验丰富(或希望在一周左右的入门工作后继续构建游戏)的人来说,这是完全可以的。

Playing the Appy Bird game

制作互动飞猪游戏虽然很有趣(或者也许三年前,《飞扬的小鸟》在流行文化时代中很流行),但App Inventor提供了许多其他针对移动设备的独特功能。 例如,您的学生可能会喜欢制造一些能够响应设备倾斜方向的东西(可能通过倾斜使大理石精灵绕迷宫移动),记录手机所受到的G力(并通过直接绘制到画布上绘制图形) ),或与手机的SMS系统交互以自动回复所有输入的文本,并显示“抱歉,我现在正在开车,但稍后我会再与您联系”,只要手机以一定速度行驶(由其GPS计算得出)。

我的一位学生构建了一个工具,该工具使学生可以对附近的壁画进行地理标记,然后上传到Google Fusion Table (然后将其显示在地图上,供班级和学校观看)。 绘图纸(学生可以在其中学习计算机显示的奇异坐标系)对数学专业的学生来说非常有吸引力。 我面临的一个常见挑战是:“在用户点击的位置绘制一个正方形”,扩展为“让用户选择一个数字N,然后在他们点击的位置绘制规则的N形”,最终达到“使用应用程序存储系统记住用户制作的图纸,以便以后重新加载和编辑。” (请注意,当应用程序以调试模式运行时,应用程序存储空间将被删除,因此需要直接加载APK才能真正测试此功能)。

教学App Inventor的3个技巧

有关使用App Inventor教授编程概念的大量好资源,例如David Wolber的书App Inventor 2:创建自己的Android应用以及appinventor.mit.edu上的资料

此外,无论您是在教小孩子还是成人学习者,我都发现了一些可以在任何App Inventor课程中使用的原则。 这些原则源于基于项目的探究式学习模型,该模型用于六年级至十二年级的数学和科学教育(这自然与我在1990年代后期对那些iMac所做的研究保持一致)。

1.通过一个包含一些编程概念的简单项目吸引您的学习者,但不要首先明确地讲授该概念。

在教学中,通常先讲一个想法,然后提供一个例证该概念的实验或习题集,这很普遍。 我更喜欢颠倒这种关系。 作为老师,我知道我的学生已经准备好学习if / then / else构造,但是我不需要在解释它们的白板前上课。 相反,我可以利用基于块的语言的优势:语法错误很难创建,并且块往往是自我记录的。 如果我提出了一个简单的挑战,需要一种语言结构,那么我通常可以让学生弄清楚这些结构是如何解决挑战的。 作为一个具体的例子,在他们完成了上述简单的猫音板练习后,我向我的学生发起挑战,要求它在按下按钮五次后让猫停止叫声。 有多种方法可以实现此目的,但是所有方法都需要跟踪某种状态并根据该状态做出决策。 之后,我将做一个简短的演讲,总结他们的所作所为,然后返回到新的挑战:在静音猫又被敲了五遍之后,应该说“停下来”。 最终,该程序与FizzBu​​zz分配没有太大区别(除了它不使用模块化算术),但是它更具吸引力。

使用App Inventor进行教学的这一简单原则极其强大且重要。 尽管计算机科学的许多人在遍及教育的“先讲后讲”的环境中学得很好,但更多数量的人对这种教学方式没有很好的React。 通常,当听众足够了解该主题对他们立即有意义时,即在您谈论该实用程序时,他们会看到有用的信息,这时讲座会更有用。

2.让学生有机会以不同的方式变得聪明。

有些人想学习编程,因为他们想做游戏,讲故事或建立聪明的互动。 如果您以能够表达创意的方式安排作业,您将对您的学生不断感到惊讶。 实际上,这主要意味着确保您选择的基础项目在多个方向上都可扩展。 音板可以轻松地演变成多按钮合成器面板,可以体现出记忆顺序的游戏,或者可以拥有很多真正聪明的声音和有趣的图像。 如果您给学生关于他们可以构建什么的不同想法,然后给他们时间来构建有趣的东西,他们不仅会扩展自己的理解,而且通常会与您学习过程中的下一个重要概念相抵触(例如在音板中)课程顺序(循环或功能分解,具体取决于学生所阐述的功能)。

3.鼓励小组合作。

这与前两点是一致的:如果您允许一组丰富的基于项目的学习经验,您的学生将在小组中一起工作和更好地学习,尤其是在能力和兴趣混杂在一起的小组中。 重要的是要密切注意团队的运作方式,并鼓励频繁的角色切换(例如,谁在操纵键盘,谁在问问题并监视进度,谁在设计交互)。

如果您将这三个原则应用于App Inventor的教学(或者实际上是任何一种编程教育),您的学生可能会更积极地参与这些课程,并不断地以其很少的语言结构就能构建出多少东西而使您感到惊讶。

翻译自: https://opensource.com/article/17/8/app-inventor-android-app-development

android 开发框架

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值