{"id":33,"date":"2014-07-21T23:26:39","date_gmt":"2014-07-21T23:26:39","guid":{"rendered":"http:\/\/appinventor.pevest.com\/?page_id=33"},"modified":"2014-07-21T23:26:39","modified_gmt":"2014-07-21T23:26:39","slug":"app-inventor-2-tutorial-book","status":"publish","type":"page","link":"https:\/\/coldstreams.com\/appinventor\/app-inventor-2-tutorial-book\/","title":{"rendered":"App Inventor Books"},"content":{"rendered":"<p>Help yourself to faster programming by\u00a0purchasing my App Inventor 2 Guides from any of the following vendors &#8211; thank you very much!<\/p>\n<p>Detailed descriptions of all the books are below, including Table of Contents and some sample chapters.<\/p>\n<h2>Where to Buy<\/h2>\n<ul>\n<li><strong>App Inventor 2 Introduction (Volume 1 e-book)<\/strong><br \/>\nStep-by-step guide to easy Android programming<br \/>\nBuy from: <a href=\"http:\/\/amzn.to\/1Sw6z8p\">Amazon<\/a>, <a href=\"https:\/\/play.google.com\/store\/books\/details\/Edward_Mitchell_App_Inventor_2_Tutorial?id=sPlfBQAAQBAJ\">Google Books<\/a>, <a href=\"https:\/\/store.kobobooks.com\/en-US\/ebook\/app-inventor-2-introduction\">Kobo Books<\/a>, <a href=\"https:\/\/itunes.apple.com\/us\/book\/app-inventor-2-tutorial\/id941982996?mt=11&amp;uo=4\">Apple iBooks<\/a><\/li>\n<li><strong>App Inventor 2 Advanced Concepts\u00a0(Volume\u00a02 e-book)<\/strong><br \/>\nStep-by-step guide\u00a0to\u00a0Advanced features including TinyDB<br \/>\nBuy from: <a href=\"http:\/\/amzn.to\/1Sy8NqU\">Amazon<\/a>,<a href=\"https:\/\/books.google.com\/books\/about?id=QCB4CgAAQBAJ&amp;hl=en\"> Google Books<\/a>, <a href=\"https:\/\/store.kobobooks.com\/en-US\/ebook\/app-inventor-2-advanced-concepts\">Kobo Books<\/a><\/li>\n<li><strong>App Inventor 2 Databases and Files<\/strong>\u00a0<strong>(Volume 3 e-book)<\/strong><br \/>\nStep-by-step TinyDB, TinyWebDB, Fusion Tables and Files<br \/>\nBuy from: <a href=\"http:\/\/amzn.to\/1UxQGSO\">Amazon<\/a>,<a href=\"https:\/\/play.google.com\/store\/books\/details\/Edward_Mitchell_App_Inventor_2_Databases_and_Files?id=ryB4CgAAQBAJ\"> Google Books<\/a>, <a href=\"https:\/\/store.kobobooks.com\/en-US\/ebook\/app-inventor-2-databases-and-files\">Kobo Books<\/a><\/li>\n<li><strong>App Inventor 2 Graphics, Animation and Charts (Volume 4 e-book <span style=\"text-decoration: underline;\"><em>and printed book<\/em><\/span>)<\/strong><br \/>\nStep-by-step guide to graphics, animation and charts<br \/>\nBuy e-book from: <a href=\"http:\/\/amzn.to\/1Sy8ufN\">Amazon<\/a>, <a href=\"https:\/\/play.google.com\/store\/books\/details\/Edward_Mitchell_App_Inventor_2_Graphics_Animation?id=uKfxCwAAQBAJ\">Google Books<\/a>, <a href=\"https:\/\/store.kobobooks.com\/en-us\/ebook\/app-inventor-2-graphics-animation-and-charts\">Kobo Books<\/a><\/li>\n<li>Price: US$5.99 (e-book), US$12.99 (printed book, 227 pages)<\/li>\n<li>The print version of Volume 4 has been discontinued due to rampant online theft of the product.<a href=\"https:\/\/store.kobobooks.com\/en-us\/ebook\/app-inventor-2-graphics-animation-and-charts\"><br \/>\n<\/a><\/li>\n<\/ul>\n<h2>How to Read<\/h2>\n<p>While the e-books can be read on e-book reader devices[1], I recommend using the free e-reader software available from each e-book distributor for reading on your notebook or desktop computer:<\/p>\n<ul>\n<li>Your Amazon e-book library may be read online, through a browser, <a href=\"https:\/\/read.amazon.com\/\">here<\/a>.<\/li>\n<li><a href=\"https:\/\/www.amazon.com\/gp\/digital\/fiona\/kcp-landing-page\">Amazon&#8217;s Kindle software for Windows and Mac OS X<\/a><\/li>\n<li><a href=\"https:\/\/store.kobobooks.com\/p\/howtoread\">Kobo e-reader app<\/a> for Windows, Android, iOS<\/li>\n<li>Google Books may be read <a href=\"https:\/\/support.google.com\/googleplay\/answer\/185545?co=GENIE.Platform%3DDesktop&amp;rd=3&amp;oco=0\">in a web browser<\/a>, or using the <a href=\"https:\/\/support.google.com\/googleplay\/answer\/185545?co=GENIE.Platform%3DAndroid&amp;rd=3\">Google Play Books app on Android and iPad\/iPhone<\/a>.<\/li>\n<\/ul>\n<p>Note [1] &#8211;<span style=\"text-decoration: underline;\"><em> images used in the e-books do not always display well on the e-book reader devices (e.g. Kindle). For this reason, use of computer-based e-book reader software is recommended.<\/em><\/span><\/p>\n<h2>Covers<\/h2>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/AppInventor-Vol1-RevisedCover.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-871\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/AppInventor-Vol1-RevisedCover-188x300.jpg\" alt=\"AppInventor-Vol1-RevisedCover\" width=\"188\" height=\"300\" \/><\/a><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/08\/AI2Volume3Cover1.jpg\" rel=\"attachment wp-att-859\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-872\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/AppInventor-Vol2-CoverRevised-190x300.jpg\" alt=\"AppInventor-Vol2-CoverRevised\" width=\"190\" height=\"300\" \/><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-859 aligncenter\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/08\/AI2Volume3Cover1-188x300.jpg\" alt=\"AI2Volume3Cover\" width=\"188\" height=\"300\" \/><\/a><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/CoverOnly2.png\" rel=\"attachment wp-att-1209\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1209 aligncenter\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/CoverOnly2-195x300.png\" alt=\"CoverOnly2\" width=\"195\" height=\"300\" \/><\/a><\/p>\n<hr \/>\n<h1><strong><em>App \u00a0Inventor 2 Introduction (Volume 1)<\/em><\/strong><\/h1>\n<p>Download Sample Chapter: <a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/App_Inventor_2_Introduction_Chap4.pdf\">App_Inventor_2_Introduction_Chap4.pdf<\/a><\/p>\n<h2>Where to Buy<\/h2>\n<ul>\n<li><a href=\"http:\/\/www.amazon.com\/gp\/product\/B00KCZ81I6\/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B00KCZ81I6&amp;linkCode=as2&amp;tag=commonsensevi-20&amp;linkId=XFYYYJXNG32RKH4K\">Amazon<\/a><\/li>\n<li><a href=\"https:\/\/play.google.com\/store\/books\/details\/Edward_Mitchell_App_Inventor_2_Tutorial?id=sPlfBQAAQBAJ\">Google Play Books<\/a><\/li>\n<li><a href=\"https:\/\/store.kobobooks.com\/en-US\/ebook\/app-inventor-2-introduction\">Kobo Books<\/a><\/li>\n<li><a href=\"https:\/\/itunes.apple.com\/us\/book\/app-inventor-2-tutorial\/id941982996?mt=11&amp;uo=4\" target=\"itunes_store\" rel=\"noopener noreferrer\">Apple Books<\/a><\/li>\n<\/ul>\n<p><iframe loading=\"lazy\" style=\"width: 120px; height: 240px;\" src=\"\/\/ws-na.amazon-adsystem.com\/widgets\/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=US&amp;source=ss&amp;ref=ss_til&amp;ad_type=product_link&amp;tracking_id=commonsensevi-20&amp;marketplace=amazon&amp;region=US&amp;placement=B00KCZ81I6&amp;asins=B00KCZ81I6&amp;linkId=L3QATWVM7NBFFKVY&amp;show_border=true&amp;link_opens_in_new_window=true\" width=\"300\" height=\"150\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><br \/>\n<\/iframe><\/p>\n<h2>Volume 1 &#8211; Description<\/h2>\n<p>MIT App Inventor 2 is the fast and easy way to create custom Android apps for smart phones or tablets. This guide introduces the basic App Inventor features &#8211; you can likely create your first simple app in an hour, and understand the basic components of App Inventor in a full day. App Inventor 2 is free to use and you can use it for commercial applications too.<\/p>\n<p>App Inventor 2: Introduction\u00a0is targeted at adult learners (high school and up) and shows how to design your app\u2019s user interface with \u201cdrag and drop\u201d interface controls to layout your app\u2019s screen design. Then implement the app\u2019s behavior with unique \u201cdrag and drop\u201d programming blocks to quickly assemble the program in a graphical interface.<\/p>\n<p>This tutorial covers the basics of the App Inventor user interface Designer and the Blocks programming editor, plus basic \u201cblocks\u201d programming concepts and tools for arithmetic, text processing, event handling, lists and other features.<\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/AppInventor-Vol1-RevisedCover.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-871\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/AppInventor-Vol1-RevisedCover-188x300.jpg\" alt=\"AppInventor-Vol1-RevisedCover\" width=\"188\" height=\"300\" \/><\/a><\/p>\n<h3>INTRODUCTION<\/h3>\n<p>WHAT THIS GUIDE COVERS<br \/>\nORGANIZATION OF THIS GUIDE<br \/>\nTip \u2013 Learning to Program<br \/>\nRECOMMENDATION<br \/>\nSOURCE CODE DOWNLOAD<br \/>\nACCESSING MIT APP INVENTOR<br \/>\nINTRODUCTION TO THE DESIGNER<br \/>\nINTRODUCTION TO THE BLOCKS EDITOR<br \/>\nPROGRAMMING THE APP\u2019S BEHAVIOR<br \/>\nTip \u2013 Events and Event Handlers<br \/>\nTHE BUTTON EVENT HANDLER<br \/>\nTIP \u2013 AI2.APPINVENTOR.MIT.EDU<br \/>\nORGANIZATION OF THIS GUIDE<br \/>\nSUMMARY<br \/>\nPRACTICE<\/p>\n<h3>1 &#8211; RUNNING APPS ON YOUR ANDROID PHONE<\/h3>\n<p>Tip \u2013 Where to Get an Android Phone<br \/>\nWI-FI METHOD FOR INSTALLING APPS<br \/>\nTip \u2013 Automatic Real Time Code Updates<br \/>\nUSB METHOD<br \/>\nANDROID APPLICATION FILE DOWNLOAD<br \/>\nBuilding the .apk file<br \/>\nUSING THE EMULATOR<br \/>\nSAVING AND LOADING SOURCE CODE<br \/>\nLoading .aia Source Code Files<br \/>\nSAVING .AIA SOURCE CODE FILES<br \/>\nSUMMARY<br \/>\nPRACTICE<\/p>\n<h3>2 \u2013 BUILDING A CALCULATOR APP USER INTERFACE<\/h3>\n<p>THE IMPORTANCE OF LAYOUTS<br \/>\nADD A TABLE LAYOUT<br \/>\nSUMMARY<br \/>\nPRACTICE<\/p>\n<h3>3 \u2013 BUILDING THE CALCULATOR BLOCKS PROGRAM<\/h3>\n<p>CONCEPT OF CALCULATOR OPERATION<br \/>\nINTRODUCTION TO VARIABLES<br \/>\nTip \u2013 Why is it called global instead of variable?<br \/>\nBLOCKS FOR IMPLEMENTING CALCULATOR KEYS<br \/>\nADDING COMMENTS<br \/>\nIMPLEMENTING THE ARITHMETIC FUNCTIONS<br \/>\nPERFORMING THE ARITHMETIC OPERATION<br \/>\nRUN THE PROGRAM<br \/>\nSUMMARY<br \/>\nPRACTICE<\/p>\n<h3>4 \u2013 LAYOUTS IN DETAIL<\/h3>\n<p>THE VERTICAL LAYOUT<br \/>\nTHE HORIZONTAL LAYOUT<br \/>\nNESTED LAYOUTS<br \/>\nLAYOUT SCREEN SIZE AND SCROLLING<br \/>\nTIP \u2013 CONSIDER AVOIDING \u201cLONG\u201d SCREENS<br \/>\nRESTRICTIONS ON LAYOUTS<br \/>\nRestriction on Screen Complexity<br \/>\nSUMMARY<br \/>\nPRACTICE<\/p>\n<h3>5 \u2013 APPS WITH MULTIPLE SCREENS<\/h3>\n<p>THE BOAT RENTAL APPLICATION<br \/>\nADDING ADDITIONAL \u201cSCREENS\u201d<br \/>\nBLOCKS CODE TO SWITCH SCREENS<br \/>\nNEWCUSTOMER BLOCKS CODE<br \/>\nEXCHANGING VALUES BETWEEN SCREENS<br \/>\nRETURNING A VALUE FROM A SCREEN<br \/>\nRETRIEVING THE RETURNED VALUE IN THE CALLING SCREEN<br \/>\n\u201cPARAMETERS\u201d<br \/>\nHANDLING MULTIPLE SCREENS WITH RETURN VALUES<br \/>\nUsing if-then-else blocks<br \/>\nSetting a Condition in the if-then Block<br \/>\nSUMMARY<br \/>\nPRACTICE<\/p>\n<h3>6 \u2013 INTRODUCTION TO TEXT<\/h3>\n<p>UPCASE AND DOWNCASE<br \/>\nJOIN \u2013 JOINING TEXT ITEMS TOGETHER<br \/>\nTEXT LENGTH<br \/>\nISEMPTY<br \/>\nCOMPARE TEXTS<br \/>\nTRIM TEXT FUNCTION<br \/>\nCHECKING THE CONTENT OF STRINGS<br \/>\nTEXT PROCESSING IN PRACTICE<br \/>\nEXTRACTING STRING SEGMENTS FROM TEXT<br \/>\nSUMMARY<br \/>\nPRACTICE<\/p>\n<h3>7 &#8211; ARITHMETIC IN APP INVENTOR<\/h3>\n<p>ARITHMETIC ORDER OF CALCULATIONS<br \/>\nTRIGONOMETRIC FUNCTIONS<br \/>\nSQUARE ROOT AND OTHER MATH FUNCTIONS<br \/>\nRANDOM NUMBER GENERATORS<br \/>\nSUMMARY<br \/>\nPRACTICE<\/p>\n<h3>8 \u2013 INTRODUCTION TO LISTS<\/h3>\n<p>CREATE<br \/>\nSEARCHING THE LIST<br \/>\nCOMBINING LISTS<br \/>\nLocal Grocer<br \/>\nWarehouse Store<br \/>\nOUTPUT A LIST TO THE SCREEN<br \/>\nCONVERTING LISTS TO COMMA SEPARATED VALUES<br \/>\nLISTS OF LISTS<br \/>\nSEARCHING A LIST OF LISTS<br \/>\nUSING LOOKUP IN PAIRS<br \/>\nINTRODUCING FOREACH<br \/>\nTIP \u2013 CREATE, READ, UPDATE, DELETE<br \/>\nUSING LIST TO CSV TABLE CONVERSION<br \/>\nOTHER LIST BLOCKS<br \/>\nCopy list<br \/>\nSUMMARY<br \/>\nPRACTICE<\/p>\n<h3>9 \u2013 ADVANCED TEXT FUNCTIONS<\/h3>\n<p>ADDITIONAL SPLIT FUNCTIONS<br \/>\nSUMMARY<br \/>\nPRACTICE<\/p>\n<h3>10 \u2013 MAKING CODE RUN MULTIPLE TIMES<\/h3>\n<p>USING THE FOR EACH FROM TO LOOP<br \/>\nLOCAL VARIABLES<br \/>\nWHY USE LOCAL VARIABLES?<br \/>\nINTRODUCTION TO THE FOR EACH LOOP<br \/>\nTip \u2013 The \u201cby\u201d value may be negative<br \/>\nFAHRENHEIT TO CELSIUS CONVERSION TABLE APP<br \/>\nWHILE DO LOOP<br \/>\nSUMMARY<br \/>\nPRACTICE<\/p>\n<hr \/>\n<h1>App Inventor 2 &#8211; Advanced Concepts<\/h1>\n<p>Download sample chapter: <a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/App_Inventor_2_Advanced_Concepts_Chap1.pdf\">App_Inventor_2_Advanced_Concepts_Chap1.pdf<\/a><\/p>\n<h2>Where to Buy<\/h2>\n<ul>\n<li><a href=\"http:\/\/www.amazon.com\/gp\/product\/B010ITAXYU\/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B010ITAXYU&amp;amp;linkCode=as2&amp;amp;tag=commonsensevi-20&amp;amp;linkId=THWH4KTB77GSLDUN\">Amazon<\/a><\/li>\n<li><a href=\"https:\/\/store.kobobooks.com\/en-US\/ebook\/app-inventor-2-advanced-concepts\">Kobo Books<\/a><\/li>\n<li><a href=\"https:\/\/books.google.com\/books\/about?id=QCB4CgAAQBAJ&amp;hl=en\">Google Play Books<\/a><\/li>\n<\/ul>\n<p><iframe loading=\"lazy\" style=\"width: 120px; height: 240px;\" src=\"\/\/ws-na.amazon-adsystem.com\/widgets\/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=US&amp;source=ss&amp;ref=ss_til&amp;ad_type=product_link&amp;tracking_id=commonsensevi-20&amp;marketplace=amazon&amp;region=US&amp;placement=B010ITAXYU&amp;asins=B010ITAXYU&amp;linkId=FBOQVBR2G3ERYS66&amp;show_border=true&amp;link_opens_in_new_window=true\" width=\"300\" height=\"150\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><br \/>\n<\/iframe><\/p>\n<h2>Volume 2 &#8211; Description<\/h2>\n<p>MIT App Inventor 2 is a fast and simple way to create custom Android apps for smart phones or tablets. Volume 2 in the series introduces debugging methods, explains additional controls not covered in Volume 1, introduces \u201cagile\u201d methods for developing a real world app, and provides sample code for using the TinyDB database.<\/p>\n<p>The App Inventor 2 Tutorial series is targeted at adult learners (high school and up). App Inventor 2 provides a simplified \u201cdrag and drop\u201d interface to layout your app\u2019s screen design. Then implement the app\u2019s behavior with \u201cdrag and drop\u201d programming blocks to quickly assemble a program in a graphical interface.<\/p>\n<p>Volume 1 of this series covered the basics of the App Inventor user interface Designer and the Blocks programming editor, plus basic \u201cblocks\u201d programming concepts and tools for arithmetic, text processing, event handling, lists and other features. Volume 2 builds upon Volume 1 to provide tips on debugging programs when the apps work incorrectly, how to us hidden editing features, and how to install your own apps on to your phone or tablet for general use. Code samples are provided for using the Notifier component for general use or for debugging, for user interface control tricks such as buttons that change color continuously or implementing the missing \u201cradio buttons\u201d component, using ListPicker and Spinner for list selections, and using the WebViewer to display web pages in your app. The book includes a large section on designing and building a sample real world application and finishes with a chapter on using the TinyDB database.<\/p>\n<p><em>For readers of the blog, Chapters 4\u20138 are based on the tutorial already presented here. Chapter 2 and Chapter 9 on TinyDB are all new material.<\/em><\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/AppInventor-Vol2-CoverRevised.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-872\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/AppInventor-Vol2-CoverRevised-190x300.jpg\" alt=\"AppInventor-Vol2-CoverRevised\" width=\"190\" height=\"300\" \/><\/a><\/p>\n<p><strong>Chapters<\/strong><\/p>\n<ul>\n<li>Introduction<\/li>\n<li>1 \u2013 App Inventor Tips<\/li>\n<li>2 \u2013 Debugging App Inventor Programs<\/li>\n<li>3 \u2013 User Interface Control Tricks<\/li>\n<li>4 \u2013 Designing and Building a Real World Application<\/li>\n<li>5 \u2013 Tip Calculator Version 2<\/li>\n<li>6 \u2013 Tip Calculator Version 3<\/li>\n<li>7 \u2013 Tip Calculator Version 4<\/li>\n<li>8 \u2013 Tip Calculator Version 5<\/li>\n<li>9 \u2013 Using the TinyDB database<\/li>\n<\/ul>\n<h2>App Inventor 2:\u00a0Advanced Concepts<\/h2>\n<p>About the Author<br \/>\nTable of Contents<br \/>\nIntroduction<br \/>\nConventions<\/p>\n<h3>1 &#8211; App Inventor Tips<\/h3>\n<p>Cut, Copy and Paste within the App Inventor Blocks Editor<br \/>\nWindows<br \/>\nMac OS X<br \/>\nDuplicating Blocks in the Blocks Editor<br \/>\nWindows<br \/>\nMac OS X<br \/>\nRe-arranging, Collapsing and Zooming the Blocks View<br \/>\nBonus Tip!<br \/>\nBacking Up: Saving App Projects to Your Computer<br \/>\nBacking Up: Use \u201cCheckpoint\u201d to save periodic \u201csnap shots\u201d of your project<br \/>\nInstalling Apps on Your Phone<br \/>\nBuilding an App Using the QR Code Method<br \/>\nWhere is the downloaded .apk file?<br \/>\nDownload an App for Installation<br \/>\nUsing App Inventor\u2019s Official Documentation<br \/>\nEvents<br \/>\nProperties<br \/>\nMethods<br \/>\nBack to the Documentation<\/p>\n<h3>2 &#8211; Debugging App Inventor Programs<\/h3>\n<p>Debugging<br \/>\nOverview<br \/>\nUser input errors<br \/>\nDivide by zero errors<br \/>\nOff by 1 errors<br \/>\nLogic errors<br \/>\nBasic Strategies for Debugging<br \/>\nReview of Basic Debugging Techniques<br \/>\nReal Time Program Editing<br \/>\nUsing Notifier to Alert the User to Problems<br \/>\nAdding a Progress Indicator to Notifier<br \/>\nSample Program User Interface<br \/>\nDesigner View<br \/>\nBlocks Code<\/p>\n<h3>3 &#8211; User Interface Control Tricks<\/h3>\n<p>Buttons: Changing Colors and Attributes<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nImplement Continuously Changing Control Colors<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nHiding the Text Entry Keyboard<br \/>\nRadio Buttons<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nListPicker<br \/>\nUsing ListPicker<br \/>\nBuilding the ListPicker Sample Application<br \/>\nTip \u2013 Find Out More About Lists<br \/>\nUsing ListPicker Filters<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nSpinner<br \/>\nDesigner View<br \/>\nBlocks\u00a0Code<br \/>\nChanging the Spinner Choices Programmatically<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nWebViewer<br \/>\nDesigner View<br \/>\nBlocks Code<\/p>\n<h3>4 &#8211; Designing and Building a Real World Application<\/h3>\n<p>Tip \u2013 Software Design and Agility<br \/>\nThe Five Versions<br \/>\nTip Calculator Version 1<br \/>\nThe Tip Calculator User Interface<br \/>\nBlocks Code<br \/>\nHow This Works<\/p>\n<h3>5 &#8211; Tip Calculator Version 2<\/h3>\n<p>The Tip Calculator User Interface<br \/>\nBlocks Code<\/p>\n<h3>6 &#8211; Tip Calculator Version 3<\/h3>\n<p>Designer View<br \/>\nBlocks Code<\/p>\n<h3>7 &#8211; Tip Calculator Version 4<\/h3>\n<p>Blocks Code<br \/>\nKey Features Shown<br \/>\nTip \u2013 Refactoring and Software Testing<\/p>\n<h3>8 &#8211; Tip Calculator Version 5<\/h3>\n<p>The Tip Calculator User Interface<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nSummary of Versions 1 through 5<\/p>\n<h3>9 \u2013 Using the TinyDB database<\/h3>\n<p>Introduction to Databases<br \/>\nTerminology: TinyDB Versus Databases<br \/>\nTinyDB \u2013 Create, Retrieve, Update, Delete &#8211; and Search<br \/>\nUsing the Task List App<br \/>\nAdd Tasks<br \/>\nDelete Item<br \/>\nSearch by Content<br \/>\nClear All Tasks<br \/>\nDesigner View: Screen1<br \/>\nBlocks Code: Screen1<br \/>\nDesigner View: Add Item<br \/>\nBlocks Code: Add Item<br \/>\nDesigner View: Edit Item<br \/>\nBlocks Code: Edit Item<br \/>\nDesigner View: List Tasks<br \/>\nBlocks Code: List Tasks<br \/>\nDesigner View: Search by Content<br \/>\nBlocks Code: Search by Content<\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<h1><strong><em>App \u00a0Inventor 2 Databases and Files\u00a0(Volume 3)<\/em><\/strong><\/h1>\n<p>Download sample chapter: <a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/App_Inventor_2_Databases_Chap1.pdf\">App_Inventor_2_Databases_Chap1.pdf<\/a><\/p>\n<h2>Where to Buy<\/h2>\n<ul>\n<li><a href=\"https:\/\/store.kobobooks.com\/en-US\/ebook\/app-inventor-2-databases-and-files\">Kobo Books<\/a><\/li>\n<li><a href=\"http:\/\/amzn.to\/1UxQGSO\">Amazon<\/a><\/li>\n<li><a href=\"https:\/\/play.google.com\/store\/books\/details\/Edward_Mitchell_App_Inventor_2_Databases_and_Files?id=ryB4CgAAQBAJ\">Google Books<\/a><\/li>\n<\/ul>\n<h2>Volume 3 Description<\/h2>\n<p>App Inventor 2: Databases and Files is a step-by-step guide to writing apps that use TinyDB, TinyWebDB, Fusion Tables and data files for information storage and retrieval. Includes detailed explanations, examples, and a link to download sample code. This is the first tutorial to cover all of these App Inventor database and file features.<\/p>\n<p>If your apps need to work with data or files &#8211; you need this book!<\/p>\n<p>TinyDB stores data on your smart phone or tablet and is a primary way for App Inventor apps to save data, even when the app is no longer running or if the device is turned off.<\/p>\n<p>TinyWebDB is similar to TinyDB, but stores your data on a remote server in the network cloud.<\/p>\n<p>Multiple apps can share a TinyWebDB database, plus you can update the content of your TinyWebDB using just a web browser. This means you can distribute an app whose content can change over time &#8211; just by changing the values in TinyWebDB.<\/p>\n<p>A big challenge is the need to set up a TinyWebDB server &#8211; this book shows how to do that through free services offered by Google.<\/p>\n<p>Fusion Tables provide a powerful, cloud-based database system for App Inventor apps. Creating, retrieving, updating and deleting data is done using the industry standard Structured Query Language or SQL. Fusion Tables reside in the Google network cloud &#8211; this book shows you how to set up and configure Fusion Tables for you own apps using free services of Google. As your app requirements grow, Google&#8217;s cloud can provide low cost servers and bandwidth for your needs.<\/p>\n<p>Underneath the Android OS user interface, there is a file system, similar to the file system found on Windows or Mac OS X. With App Inventor your apps can write and read data from files, and if using the special &#8220;CSV&#8221; format, App Inventor data\u00a0can be shared with many spreadsheet programs. This book shows you how to create, use and access data files, and how to convert data to and from the CSV format.<\/p>\n<p>Over 28,000 words.\u00a0Over 250 screen shots and illustrations. Numerous sample programs and code.\u00a0 Amazon&#8217;s page count is 322 pages.<\/p>\n<p>The link to the App Inventor source code download files is on &#8220;the copyright&#8221; page &#8211; about page 2 or 3 &#8211; in your\u00a0e-reader version.<\/p>\n<p>Updates\u00a0and &#8220;errata&#8221;\u00a0to the e-books\u00a0are located on this <a href=\"http:\/\/appinventor.pevest.com\/?page_id=964\">page<\/a>.<\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/08\/AI2Volume3Cover1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-859\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/08\/AI2Volume3Cover1-188x300.jpg\" alt=\"AI2Volume3Cover\" width=\"188\" height=\"300\" \/><\/a><\/p>\n<h3>Chapters<\/h3>\n<ul>\n<li>1 &#8211; Introduction<\/li>\n<li>2 &#8211; Using the TinyDB database<\/li>\n<li>3 &#8211; Implementing Records Using Lists in TinyDB<\/li>\n<li>4 &#8211; Simulating Multiple TinyDB Databases<\/li>\n<li>5 &#8211; How to Use Multiple Tags in TinyDB<\/li>\n<li>6 &#8211; Introduction and Setup: TinyWebDB<\/li>\n<li>7 &#8211; Managing TinyWebDB in the Cloud<\/li>\n<li>8 &#8211; Programming for TinyWebDB &#8211; Demo 1<\/li>\n<li>9 &#8211; Adding a Tags List to TinyWebDB \u2013 Demo 2<\/li>\n<li>10 &#8211; Handling Multiple Users with TinyWebDB \u2013 Demo 3<\/li>\n<li>11 &#8211; Implementing a Student Quiz Application using TinyWebDB<\/li>\n<li>12 &#8211; Introduction to Fusion Tables<\/li>\n<li>13 &#8211; Developing Your Fusion Table App<\/li>\n<li>14 &#8211; Using Text Files in App Inventor<\/li>\n<\/ul>\n<h3>Detailed Table of Contents<\/h3>\n<h3>1 &#8211; Introduction<\/h3>\n<p>TinyDB<br \/>\nTinyWebDB<br \/>\nFusion Tables<br \/>\nWhich database component to use?<br \/>\nChoosing Which Database to Use<br \/>\nTinyDB<br \/>\nTinyWebDB<br \/>\nFusion Tables<br \/>\nText Files<br \/>\nConventions<br \/>\nAbout the Sample Apps<\/p>\n<h3>2 &#8211; Using the TinyDB database<\/h3>\n<p>Introduction to Databases<br \/>\nTerminology: TinyDB Versus Databases<br \/>\nTinyDB \u2013 Create, Retrieve, Update, Delete &#8211; and Search<br \/>\nSource Code<br \/>\nUsing the Task List App<br \/>\nAdd Tasks<br \/>\nDelete Item<br \/>\nSearch by Content<br \/>\nClear All Tasks<br \/>\nDesigner View: Screen1<br \/>\nBlocks Code: Screen1<br \/>\nDesigner View: Add Item<br \/>\nBlocks Code: Add Item<br \/>\nDesigner View: Edit Item<br \/>\nBlocks Code: Edit Item<br \/>\nDesigner View: List Tasks<br \/>\nBlocks Code: List Tasks<br \/>\nDesigner View: Search by Content<br \/>\nBlocks Code: Search by Content<\/p>\n<h3>3 &#8211; Implementing Records Using Lists in TinyDB<\/h3>\n<p>Source Code<br \/>\nThe User Interface<br \/>\nDesigner View: Screen1<br \/>\nBlocks Code: Screen1<br \/>\nDesigner View: AddItem<br \/>\nBlocks Code: AddItem<br \/>\nDesigner View: ListTasks<br \/>\nBlocks Code: ListTasks<br \/>\nDesigner View: Delete<br \/>\nBlocks Code: Delete<br \/>\nDesigner View: Search by Content<br \/>\nBlocks Code: Search by Content<br \/>\nDesigner View: Edit Contact<br \/>\nBlocks Code: Edit Contact<\/p>\n<h3>4 &#8211; Simulating Multiple TinyDB Databases<\/h3>\n<p>Source Code<br \/>\nDesigner View: Screen1<br \/>\nBlocks Code: Screen1<br \/>\nIMPORTANT NOTE<br \/>\nDesigner View: AddItem<br \/>\nBlocks Code: AddItem<br \/>\nDesigner View: ListTasks<br \/>\nBlocks Code: ListTasks<br \/>\nDesigner View: Search<br \/>\nBlocks Code: Search<\/p>\n<h3>5 &#8211; How to Use Multiple Tags in TinyDB<\/h3>\n<p>Source Code<br \/>\nDesigner View: Screen1<br \/>\nBlocks Code: Screen1<br \/>\nDesigner View: AddItem<br \/>\nBlocks Code: AddItem<br \/>\nDesigner View: Delete<br \/>\nBlocks Code: Delete<br \/>\nDesigner View: List Contacts<br \/>\nBlocks Code: List Contacts<br \/>\nDesigner View: Edit<br \/>\nBlocks Code: Edit<br \/>\nDesigner View: Search by Content<br \/>\nBlocks Code: Search by Content<br \/>\nDesigner View: Select by Employee ID<br \/>\nBlocks Code: Select by Employee ID<br \/>\nDesigner View: Select by Name<br \/>\nBlocks Code: Select by Name<br \/>\nDesigner View: Admin<br \/>\nBlocks Code: Admin<\/p>\n<h3>6 &#8211; Introduction and Setup: TinyWebDB<\/h3>\n<p>Setting Up Your Own TinyWebDB Service<br \/>\nSetting Up TinyWebDB in the Google Cloud<br \/>\nInstallation Steps (Short version)<br \/>\nOverview<br \/>\nShort Version<br \/>\nInstallation Instructions (Long version)<br \/>\nStep 1 &#8211; Install Python<br \/>\nStep 2 &#8211; Install Google App Engine Launcher<br \/>\nStep 3 &#8211; Download customtinywebdb.zip<br \/>\nStep 4 \u2013 Set up Google Account<br \/>\nStep 5 &#8211; Run Google App Engine Launcher<br \/>\nStep 6 &#8211; Return to Google App Engine Launcher<br \/>\nImportant Steps<br \/>\nStep 7 &#8211; Return to the App Engine Launcher program.<br \/>\nStep 8 &#8211; Quick Test<br \/>\nProblems<\/p>\n<h3>7 &#8211; Managing TinyWebDB in the Cloud<\/h3>\n<p>Use the TinyWebDB Web Interface to Get and Store Values<br \/>\nManagement of the Database<br \/>\nTip \u2013 Enabling Datastore Admin Features<br \/>\nSelecting your database<br \/>\nDelete individual records in the TinyWebDB Database<br \/>\nDelete the content of a database<br \/>\nDeleting a Project<\/p>\n<h3>8 &#8211; Programming for TinyWebDB &#8211; Demo 1<\/h3>\n<p>Source Code<br \/>\nThe User Interface<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nTinyDB: Synchronous Operation<br \/>\nTinyWebDB: Asynchronous Operation<\/p>\n<h3>9 &#8211; Adding a Tags List to TinyWebDB \u2013 Demo 2<\/h3>\n<p>Source Code<br \/>\nThe User Interface<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nSimple Explanation of GotValue<br \/>\nProcessing Multiple Pending GetValue Requests in GotValue<\/p>\n<h3>10 &#8211; Handling Multiple Users with TinyWebDB \u2013 Demo 3<\/h3>\n<p>Deadlocks<br \/>\nSource Code<br \/>\nThe User Interface<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nTimer Operation<br \/>\nTimer Event Tags Management<\/p>\n<h3>11 &#8211; Implementing a Student Quiz Application using TinyWebDB<\/h3>\n<p>Source Code<br \/>\nThe User Interface<br \/>\nDatabase View<br \/>\nSetting up the Questions Database<br \/>\nDesigner View: Screen1<br \/>\nBlocks Code: Screen1<br \/>\nDesigner View: DoQuiz<br \/>\nBlocks Code: DoQuiz<\/p>\n<h3>12 &#8211; Introduction to Fusion Tables<\/h3>\n<p>What is a Fusion Table?<br \/>\nSetting Up a Fusion Table Service<br \/>\nTip \u2013 Keep Track of Key Data As You Create Tables<br \/>\nKey Steps<br \/>\nCreate Your Fusion Table<br \/>\nDefine the Table Layout<br \/>\nGather the Table ID<br \/>\nSharing Your Table<br \/>\nCreating a Google Group for Sharing [Optional Step]<br \/>\nOne More Group Step!<br \/>\nGenerating an API Key For Your App Access<\/p>\n<h3>13 &#8211; Developing Your Fusion Table App<\/h3>\n<p>CREATE<br \/>\n\u201cForbidden\u201d Message?<br \/>\nREAD<br \/>\nDELETE<br \/>\nUPDATE<br \/>\nMULTIREAD<br \/>\nShort Introduction to Structured Query Language (SQL)<br \/>\nSELECT<br \/>\nDELETE<br \/>\nINSERT<br \/>\nDesigner View: Screen1<br \/>\nBlocks Code: Screen1<br \/>\nDesigner View: Create<br \/>\nBlocks Code: Create<br \/>\nDesigner View: Read<br \/>\nBlocks Code: Read<br \/>\nDesigner View: Delete<br \/>\nBlocks Code: Delete<br \/>\nDesigner View: Update<br \/>\nBlocks Code: Update<br \/>\nDesigner View: MultiRead<br \/>\nBlocks Code: MultiRead<\/p>\n<h3>14 &#8211; Using Text Files in App Inventor<\/h3>\n<p>Source Code<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nUsing CSV Format Files<br \/>\nThe Super Easy Way to Import a CSV File<br \/>\nWhere is testfile2.txt stored on your phone?<br \/>\nUsing the AI 2 Companion<br \/>\nWhen Built as a .apk File<br \/>\nStep 1: Install File Manager<br \/>\nStep 2: Create a file folder to store your app data files<br \/>\nStep 3: Find the file!<br \/>\nStep 4: Sending the File to your computer<\/p>\n<h1>App Inventor 2 Graphics, Animation and Charts (Volume 4)<\/h1>\n<p>Step-by-step guide to\u00a0Graphics, Animation and Charts<\/p>\n<p>The App Inventor 2 guides introduce the fast and simple way to develop Android apps using MIT App Inventor, the software development system that runs in your browser to create apps that run on your smart phone and tablet.<\/p>\n<p>Volume 4 introduces the use of graphics drawing features, including general graphics features, animation and charting. Charting refers to the creation of line, column and other types of charts commonly used in business and finance.<\/p>\n<p>This book series is targeted at adult learners (high school or secondary school and up) who are interested in producing real world applications (rather than games). Hence, these books focus on features suitable for creating business, productivity and educational applications.\u00a0Volume 4 assumes the reader is familiar with the basics of App Inventor programming; start with Volume 1 if you are new to App Inventor.<\/p>\n<p>Each example provides code you can adapt or modify for use in your own programs so that you can create graphics, simple animation or charts in your own apps.<\/p>\n<h2>WHERE TO BUY<\/h2>\n<p>Please see the links at the top of this page.<\/p>\n<h2>Learn How To Create These Charts<\/h2>\n<p>Theory, design and sample code is provided for all of the following charts, plus more, including using sprites for animation, using &#8220;finger touch&#8221; to fling objects around the screen, using the accelerator and orientation sensor so that tilting the phone can control animation on screen.<\/p>\n<h3>Simple Line Chart<\/h3>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/LineChart0.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1436\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/LineChart0-169x300.gif\" alt=\"LineChart0\" width=\"169\" height=\"300\" \/><\/a><\/p>\n<h3>Simple Line Chart in Landscape Screen Orientation<\/h3>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/HorizLineChart.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1437\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/HorizLineChart-300x169.gif\" alt=\"HorizLineChart\" width=\"300\" height=\"169\" \/><\/a><\/p>\n<h3>Multiple Line \/ Data Series Charts<\/h3>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/Linechart1.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1431 size-medium\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/Linechart1-169x300.gif\" alt=\"Linechart1\" width=\"169\" height=\"300\" \/><\/a><\/p>\n<h3>Line Chart With Regression Equation<\/h3>\n<p>Regression a way to find an equation that is the closest fit to the original data. \u00a0Once the equation is calculated, the equation may then be used to draw a line across the chart showing predicted values.<\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/ScatterRegression.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1439\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/ScatterRegression-300x169.gif\" alt=\"ScatterRegression\" width=\"300\" height=\"169\" \/><\/a><\/p>\n<h3>Scatter Strip Chart<\/h3>\n<p>A scatter chart draws simple dots at the X, Y pair for each data element. A Scatter strip chart takes incoming data as a live data stream, and animates those points from right to left across the screen. New data points arrive at right, while the entire display of points scrolls to the left.<\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/ScatterChart1.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1432 size-medium\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/ScatterChart1-169x300.gif\" alt=\"ScatterChart1\" width=\"169\" height=\"300\" \/><\/a><\/p>\n<h3>Strip Chart Recorder<\/h3>\n<p>This chart draws a line graph as new data arrives, at right. This type of chart might be in a heart monitor, for example, or in a voltage monitor that continuously monitors an input voltage. Data could arrive from a remote device over Bluetooth (such as from an Arduino board connected to sensors).<\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/StripChart.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1438\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/StripChart-169x300.gif\" alt=\"StripChart\" width=\"169\" height=\"300\" \/><\/a><\/p>\n<h3>Use Image Picker<\/h3>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/ImagePicker.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1433 size-medium\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/ImagePicker-169x300.jpg\" alt=\"ImagePicker\" width=\"169\" height=\"300\" \/><\/a><\/p>\n<h3>Animation Drawing &#8211; Wheel Rotates on Screen<\/h3>\n<p>The text shows how to create arbitrary animation in App Inventor apps. This wheel actually rotates as it moves across the screen.<\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/DrawAnimation1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-1440\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/DrawAnimation1-169x300.png\" alt=\"DrawAnimation1\" width=\"169\" height=\"300\" \/><\/a><\/p>\n<h3>Draw Column Charts<\/h3>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/ColumnChart1.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1435 size-medium\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/07\/ColumnChart1-169x300.gif\" alt=\"ColumnChart1\" width=\"169\" height=\"300\" \/><\/a><\/p>\n<h2>Table of Contents<\/h2>\n<p>ABOUT THIS BOOK<br \/>\nWeb<br \/>\nUpdates and Errata For this Book<br \/>\nDownload Source Code for this Book<br \/>\nDisclaimer<br \/>\nAbout the Sample Apps and Blocks Code<br \/>\nTip \u2013 Prevent the screen from rotating<br \/>\nDownload Source Code<br \/>\nVideo Tutorials<br \/>\nConventions<br \/>\nINTRODUCTION TO GRAPHICS AND ANIMATED GAMES<br \/>\nIn This Chapter<br \/>\nVideo Tutorials for this Chapter<br \/>\nBouncing Ball Animation-Ball1<br \/>\nCoordinate System<br \/>\nSelecting a Directional Heading<br \/>\nCoordinate System and Heading Summary<br \/>\nBall1 &#8211; The User Interface<br \/>\nSource Code File<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nBall2 \u2013 Using Sliders for Speed and Heading<br \/>\nSource Code<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nBall3 \u2013 Adding a 2nd Ball<br \/>\nSource Code<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nBall4 \u2013 Detecting Collisions<br \/>\nSource Code<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nBall5 \u2013 Adding a Finger Touch Response<br \/>\nSource Code<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nIMAGE SPRITES<br \/>\nIn This Chapter<br \/>\nVideo Tutorials for this Chapter<br \/>\nThe User Interface<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nRemove the Original Ball1 Object<br \/>\nFull Blocks Code<br \/>\nWhere does the name \u201cSprite\u201d come from?<br \/>\nUsing Finger Touch to Control the Sprite Movement<br \/>\nSource Code<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nORIENTATOIN SENSOR<br \/>\nIn This Chapter<br \/>\nVideo Tutorials for this Chapter<br \/>\nWhat the Sample Program Does<br \/>\nTip: Turn off Auto-Rotate on your phone<br \/>\nSource Code<br \/>\nDesigner View<br \/>\nIntroduction to the Orientation Sensor<br \/>\nBlocks Code for Using the Orientation Sensor<br \/>\nHow the Orient Button Works<br \/>\nFull Blocks Code<br \/>\nTHE CANVAS<br \/>\nIn This Chapter<br \/>\nVideo Tutorials for this Chapter<br \/>\nSource Code<br \/>\nIntroduction to the Canvas<br \/>\nUser Interface<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nPicking and Saving Images<br \/>\nFlip: Multiple Canvases<br \/>\nANIMATION METHODS<br \/>\nIn This Chapter<br \/>\nVideo Tutorials for this Chapter<br \/>\nOr scan this QR code<br \/>\nAnimating Images<br \/>\nSource Code<br \/>\nUser Interface<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nUsing Multiple Images to Create Animated Subjects<br \/>\nSource Code<br \/>\nUser Interface<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nUsing a Sprite to Create an Animated Wheel That Moves<br \/>\nSource Code<br \/>\nUser Interface<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nUsing Multiple Canvas Objects for Animation<br \/>\nSource Code<br \/>\nUser Interface<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nLINE CHARTS<br \/>\nIn This Chapter<br \/>\nVideo Tutorials for this Chapter<br \/>\nSource Code<br \/>\nUser Interface<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nScaling the Data<br \/>\nLine Charts With More than One Data Series<br \/>\nGlobal Variables<br \/>\nData Initialization<br \/>\nButton Event Handlers<br \/>\nDrawEntireChart<br \/>\nRemaining Procedures are Unchanged<br \/>\nCOLUMN CHARTS<br \/>\nIn This Chapter<br \/>\nVideo Tutorials for this Chapter<br \/>\nSource Code<br \/>\nUser Interface<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nInitialization<br \/>\nButton Event Handlers<br \/>\nChart Drawing<br \/>\nScale Data<br \/>\nDraw X, Y Axis and Chart Title<br \/>\nDrawBox and DrawSolidBox Support Procedures<br \/>\nUsing DrawLine to Draw a Rectangle<br \/>\nSCATTER PLOT CHART<br \/>\nIn this Chapter<br \/>\nVideo Tutorials for this Chapter<br \/>\nSource Code<br \/>\nUser Interface<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nInitialization<br \/>\nEvent Handlers<br \/>\nDrawing the Chart<br \/>\nScaling the Data<br \/>\nDrawBox, X and Y Axes and Title<br \/>\nSCATTER PLOT WITH REGRESSION<br \/>\nIn this Chapter<br \/>\nVideo Tutorials for this Chapter<br \/>\nSource Code<br \/>\nUser Interface<br \/>\nDesigner View<br \/>\nBlocks Code<br \/>\nInitialization<br \/>\nEvent Handlers<br \/>\nDrawing the Entire Chart<br \/>\nCalculating the Regression Equation<br \/>\nSTRIP CHART RECORDER<br \/>\nIn this Chapter<br \/>\nVideo Tutorials for this Chapter<br \/>\nSource Code<br \/>\nUser Interface<br \/>\nDesigner View<br \/>\nComponents List<br \/>\nBlocks Code<br \/>\nInitialization<br \/>\nEvent Handlers<br \/>\nData Generation<br \/>\nDrawBox, X and Y Axes and Title<br \/>\nSTRIP CHART LINE RECORDER USING CANVAS FLIPPING<br \/>\nVideo Tutorials for this Chapter<br \/>\nUser Interface<br \/>\nSource code<br \/>\nDesigner View<br \/>\nBlocks View<\/p>\n<h2>WHERE TO BUY<\/h2>\n<p>Please see the links at the top of this page.<\/p>\n<h2><\/h2>\n","protected":false},"excerpt":{"rendered":"<p>Help yourself to faster programming by\u00a0purchasing my App Inventor 2 Guides from any of the following vendors &#8211; thank you very much! Detailed descriptions of all the books are below, including Table of Contents and some sample chapters. Where to Buy App Inventor 2 Introduction (Volume 1 e-book) Step-by-step guide to easy Android programming Buy &hellip; <a href=\"https:\/\/coldstreams.com\/appinventor\/app-inventor-2-tutorial-book\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">App Inventor Books<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-33","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/pages\/33","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/comments?post=33"}],"version-history":[{"count":0,"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/pages\/33\/revisions"}],"wp:attachment":[{"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/media?parent=33"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}