返回 首页

App Inventor 编程实例及指南

序言

消费文化为我们创造了各种娱乐、消遣有时甚至是学习的机会,但总体来看,这些活动都是被动的。当然,我们的生活中不能没有休闲娱乐,但也不能只有这些,在满足于消费之外,还要有生产和创造带来的乐趣:绘画、制作航模,或烤面包,同样带给我们喜悦和自豪。

今天我们使用的高科技产品(如手机、平板电脑、电视等),对大多数人来说都是一个黑箱系统,内部的运作机制复杂且难以捉摸。某些产品虽然具有绘画或录制视频等功能,但产品本身并不是一种创造型工具,也就是说,大多数使用者无法为这些终端增添新的功能。

现在假设我们可以改变这种现状,我们可以创造性地控制我们手边的数码产品,如手机;或者假如创建手机上的应用,就像绘画或烤面包那样容易;再或者,假如这些文化消费品本身又是创作工具,那么事情会怎样呢?

首先,让这些产品成为可被理解的开放系统,可以对其做小修小改,而不是让人迷惑的黑箱系统。当我们能够实实在在地为他们增添某些功能时,我们将更主动、更富创造性地面对它们,也将以更深入、更有意义的方式来使用它们。

当Hal Abelson首次跟我提起要做App Inventor的想法时,我们谈到了一个独特的动机:手机可以用于教育。他想知道,这种动机是否可以帮助学生理解计算机科学的概念。当这个成果开始在Dave Wolber教授的课堂上进行试验时,我们开始意识到,它的能量超乎想象:App Inventor把学生从消费者转变为创造者。能够亲手为自己的手机创建应用,这让学生感到有趣和振奋!当Dave的学生创建了那个简单且功能强大的应用“开车不发短信”时,我们真地开始想象,假如每个人,而不只是专职软件工程师,都能创建应用,事情会怎样呢。

于是我们加倍努力,使App Inventor更易用、更有趣,也更强大(但依然简单)。我们会继续努力,因为App Inventor仍然是一个测试产品,关于它,我们有更加令人兴奋的计划。

本书的作者是一位真正的世界级教育工作者及软件工程师。对于他们为产品App Inventor for Android所做的开发、测试及文案整理工作,我深表谢意,当然,还有这本奇妙的书。

现在,该去发挥你的创造力,创建一个应用了!

—Mark Friedman

Google公司App Inventor for Android项目技术主管及经理

简介
前言
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录
简介
序言
前言
第 1 章 Hello 猫咪
第 2 章 油漆桶
第 3 章 打地鼠
第 4 章 开车不发短信
第 5 章 瓢虫快跑
第 6 章 巴黎地图旅游
第 7 章 安卓,我的车在哪?
第 8 章 总统测验
第 9 章 木琴
第 10 章 出题及答题
第 11 章 广播中心
第 12 章 遥控机器人
第 13 章 亚马逊掌上书店
第 14 章 理解应用的结构
第 15 章 软件工程与应用调试
第 16 章 应用中的存储
第 17 章 创建动画应用
第 18 章 程序中的决策:条件块
第 19 章 数据列表编程
第 20 章 循环
第 21 章 定义过程
第 22 章 数据库
第 23 章 传感器
第 24 章 与Web API通信

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }