1 00:00:00,000 --> 00:00:02,610 [Powered by Google Translate] [Seminar] [Android-apps kopen (Nu met Bonen van de Gelei!)] 2 00:00:02,610 --> 00:00:04,210 [Jordan Jozwiak] [Harvard University] 3 00:00:04,210 --> 00:00:06,780 [Dit is CS50.] [CS50.TV] 4 00:00:06,780 --> 00:00:11,600 >> Hello iedereen, en welkom bij de Android Apps (Nu met Bonen van de Gelei!) Seminar. 5 00:00:11,600 --> 00:00:14,530 Het wordt Nu aangeroepen met Jelly Beans, van natuurlijk, want 6 00:00:14,530 --> 00:00:17,310 de nieuwste versie van het OS wordt genoemd Jelly Bean. 7 00:00:17,310 --> 00:00:22,950 Toen ik sprak over Android vorig jaar en deed dit in principe zelfde seminar 8 00:00:22,950 --> 00:00:29,150 Ik werd het design patterns en stilistische keuzes presenteren van voor Gingerbread, 9 00:00:29,150 --> 00:00:31,250 zelfs al Ice Cream Sandwich ten het tijd was gekomen out, 10 00:00:31,250 --> 00:00:33,680 en dit is iets zullen we praten over het gaan forward een klein beetje. 11 00:00:33,680 --> 00:00:35,720 Androïde, van natuurlijk, heeft sommige kwesties met fragmentatie, 12 00:00:35,720 --> 00:00:40,240 zodat de nieuwste Google-besturingssysteem wordt meestal 13 00:00:40,240 --> 00:00:44,710 niet echt gaat om gemeengoed geworden onder de gebruikers voor potentieel tot en met een jaar, jammer genoeg. 14 00:00:44,710 --> 00:00:49,960 >> Maar zonder rekening te houden dat, zullen we praten over tal van redenen waarom 15 00:00:49,960 --> 00:00:53,000 Android is veel beter dan iOS. 16 00:00:53,000 --> 00:00:56,410 Okay, zullen we praten over Android versus iOS 17 00:00:56,410 --> 00:00:59,770 sommige ontwerp paradigma's, hoe je up zult krijg set in slechts ene dia, 18 00:00:59,770 --> 00:01:03,410 en de big verschil tussen dit en vorig jaar is ik wil gewoon om te 19 00:01:03,410 --> 00:01:06,860 zoom door middel van sommige conceptuele dingen het werken met 20 00:01:06,860 --> 00:01:09,950 het besturingssysteem en vervolgens gaan in een echt basic voorbeeld. 21 00:01:09,950 --> 00:01:13,730 In feite, net de voorbeeld die Google beschrijft voor het bouwen van uw eerste app, 22 00:01:13,730 --> 00:01:17,070 en we zullen gaan doorheen het samen en gewoon te beschrijven. 23 00:01:17,070 --> 00:01:22,100 >> Ik weet dat velen van jullie hebben alleen gecodeerd in C, dus Java wordt nu al gaat worden 24 00:01:22,100 --> 00:01:27,220 een ander perspectief, en op deze manier u zult uw voeten te krijgen nat 25 00:01:27,220 --> 00:01:31,540 en voel me een beetje meer comfortabel met het hopelijk. 26 00:01:31,540 --> 00:01:35,330 A snelle samenvatting, Android versus iOS. 27 00:01:35,330 --> 00:01:39,200 In Android is er is dit ene-keer ontwikkelaar fee van $ 25, 28 00:01:39,200 --> 00:01:42,390 niets van dit alles $ 100 per jaar ding. 29 00:01:42,390 --> 00:01:45,440 Er zijn geen beperkingen, wat betekent dat als ik wil een app in te dienen, 30 00:01:45,440 --> 00:01:51,560 Ik submit het gewoon, en er is geen proces van goedkeuring alsof er is voor iOS. 31 00:01:51,560 --> 00:01:53,890 U krijgt om te ontwikkelen met Java met behulp van Eclipse, 32 00:01:53,890 --> 00:01:57,090 welke is cross-platform, dus het maakt niet uit als u hebt een Mac, 33 00:01:57,090 --> 00:01:59,600 Vensters, of een of andere Linux-machine. 34 00:01:59,600 --> 00:02:03,730 Van Natuurlijk, met iOS je moet te XCode te gebruiken op een Mac, 35 00:02:03,730 --> 00:02:06,930 en Android wordt gebruikt door veel meer mensen, 36 00:02:06,930 --> 00:02:11,580 dus als u wilt dat uw app om een ​​of andere soort van zichtbaarheid of misschien hebben 37 00:02:11,580 --> 00:02:14,110 maken een beetje geld uit advertenties 38 00:02:14,110 --> 00:02:17,450 ben je waarschijnlijk meer kans om te baat hebben bij Android. 39 00:02:17,450 --> 00:02:20,630 >> En een ding dat altijd bekend is al hebt over Android 40 00:02:20,630 --> 00:02:25,100 is het extreme hoeveelheid maatwerk, terwijl iOS is zeer gefixeerd in hun wegen 41 00:02:25,100 --> 00:02:29,380 zodat ze kunnen veiligheid handhaven en controle over elk klein aspect 42 00:02:29,380 --> 00:02:34,180 van de ontwerp binnen hun OS en de individuele apps. 43 00:02:34,180 --> 00:02:40,180 Android is zeer vrije vorm, en er is zo veel meer mogelijkheden. 44 00:02:40,180 --> 00:02:42,530 Okay, sommige ontwerp paradigma's. 45 00:02:42,530 --> 00:02:49,600 Let hier op net als iOS heeft tabletten en iPhones en iPod-Touches 46 00:02:49,600 --> 00:02:53,840 ze moeten te te ondersteunen, zeggen, net als een dozijn apparaten als je wilt steunen 47 00:02:53,840 --> 00:02:55,450 historische dingen als goed. 48 00:02:55,450 --> 00:02:58,410 Met Android wat je hoeft te honderden apparaten, te ondersteunen 49 00:02:58,410 --> 00:03:01,240 dus er zijn sommige dingen die Google heeft geprobeerd om te implementeren 50 00:03:01,240 --> 00:03:04,970 om maken de gebruiker te ervaren een beetje meer consistente, 51 00:03:04,970 --> 00:03:08,560 maar we zult ook praten over hoe dit betekent dat er zijn vraagstukken van fragmentatie 52 00:03:08,560 --> 00:03:11,700 dat je constant hoeft te zich bewust zijn van ondersteunende. 53 00:03:11,700 --> 00:03:16,140 Fragmentatiemiddelen dat er veel verschillende besturingssystemen, 54 00:03:16,140 --> 00:03:20,330 veel verschillende telefoons met verschillende hardware draait Android allemaal op hetzelfde moment, 55 00:03:20,330 --> 00:03:29,680 dus dit graph hier gaat terug voor ongeveer 6 maanden. 56 00:03:29,680 --> 00:03:36,460 Yeah, 6 maanden, en je kunt zien hoe de donkerste band 57 00:03:36,460 --> 00:03:39,330 op de onderkant is Jelly Bean, waarvan out over de zomer kwam, 58 00:03:39,330 --> 00:03:42,970 en je kunt met de rechtermuisknop nu waarschijnlijk ongeveer 2% van de telefoons hebben het te zien. 59 00:03:42,970 --> 00:03:45,520 >> Ice Cream Sandwich kwam naar buiten meer dan een jaar geleden, 60 00:03:45,520 --> 00:03:47,770 en een kwart van de telefoons hebben het. 61 00:03:47,770 --> 00:03:53,910 Er zijn nog steeds een heleboel van telefoons die zijn met behulp OS-versie van jaren geleden. 62 00:03:53,910 --> 00:03:57,820 Een ding dat Google heeft geprobeerd om doen om de gebruiker ervaring te maken 63 00:03:57,820 --> 00:04:01,400 een veel meer consistente aan de overkant van apps wordt beginnend met Honingraat, 64 00:04:01,400 --> 00:04:04,320 dat is de tablet-versie, dan is Ice Cream Sandwich-en Jelly Bean, 65 00:04:04,320 --> 00:04:06,750 ze bent echt proberen te gebruik van dit actiebalk te benadrukken, 66 00:04:06,750 --> 00:04:10,430 die is wat je hier kunt zien bij de bovenkant, 67 00:04:10,430 --> 00:04:14,730 alles rechts hier, met inbegrip van dit knop kleine instellingen te. 68 00:04:14,730 --> 00:04:16,079 Het is het ontwerp keuze. 69 00:04:16,079 --> 00:04:18,000 Nu, wanneer u maar zie de 3 stippen het betekent klikt op deze, 70 00:04:18,000 --> 00:04:21,880 en er zullen een drop-down menu, die sommige soort van instellingen heeft te zijn. 71 00:04:21,880 --> 00:04:28,900 Dit toont alleen up, omdat ik klikte op deze knop. 72 00:04:28,900 --> 00:04:32,040 Dit is iets dat ze proberen om te gebruiken om apps te maken een beetje meer consistente 73 00:04:32,040 --> 00:04:39,210 over de hele linie en zo de gebruiker heeft een beter gevoel van uniforme ervaring. 74 00:04:39,210 --> 00:04:42,640 >> Okay, dus in het geval u dit nog niet dit al gedaan of als u bent kijken thuis 75 00:04:42,640 --> 00:04:50,210 dan u kunt volgen deze stappen om instellen van uw codering-omgeving. 76 00:04:50,210 --> 00:04:52,630 Het zal betrekken gaan naar de website te hier. 77 00:04:52,630 --> 00:04:56,260 U kunt Google het installeren van Android SDK 78 00:04:56,260 --> 00:04:59,130 en volg enkele beschrijvingen daar. 79 00:04:59,130 --> 00:05:01,310 Ze vertellen je alles. 80 00:05:01,310 --> 00:05:05,160 Ze hebben u de SDK, downloaden Eclipse Klassieke versie te installeren, 81 00:05:05,160 --> 00:05:07,450 zelfs al, van natuurlijk, bent we codering in Java. 82 00:05:07,450 --> 00:05:12,190 Zij bevelen deze ene, en dan is dit ADT, de Android Development Tools, 83 00:05:12,190 --> 00:05:17,300 is een plugin die u installeren in Eclipse waarin mogelijk maakt u om te 84 00:05:17,300 --> 00:05:20,550 hebben een veel meer gestroomlijnde ervaring met Android binnen Eclipse. 85 00:05:20,550 --> 00:05:24,070 Het zal u enkele grafische user interfaces te geven 86 00:05:24,070 --> 00:05:29,610 voor het ontwerpen van de uitzichten, en het zal u veel meer ondersteuning te geven 87 00:05:29,610 --> 00:05:34,840 en de mogelijkheid om te lanceren met de emulator en al dat soort dingen. 88 00:05:34,840 --> 00:05:36,090 Applicatie raamwerk. 89 00:05:36,090 --> 00:05:41,590 >> Ik wil om te praten over hoe de projecten binnen Android zijn gestructureerd, 90 00:05:41,590 --> 00:05:44,830 en dan we zult gaan in een snelle voorbeeld, en hopelijk 91 00:05:44,830 --> 00:05:48,820 kunt u vragen stellen op elk punt en voel comfortabel door het eind van het. 92 00:05:48,820 --> 00:05:50,090 We hebben een aantal jargon eerst. 93 00:05:50,090 --> 00:05:55,330 Een activiteit is net als de scherm te u ziet wanneer u een app te lanceren. 94 00:05:55,330 --> 00:05:57,840 Het hele ervaring is de activiteit zelf, 95 00:05:57,840 --> 00:06:00,790 zodat je kon bedenken het als een scherm of een view, 96 00:06:00,790 --> 00:06:04,540 maar het is eigenlijk de source code kant ervan. 97 00:06:04,540 --> 00:06:12,680 We noemen nog steeds het werkelijke-interface deel ervan een view. 98 00:06:12,680 --> 00:06:17,230 Het is een soort als hoe in pset 7 wij de controller en vervolgens het uitzicht gehad. 99 00:06:17,230 --> 00:06:20,690 De activiteit is min of meer de controller, 100 00:06:20,690 --> 00:06:23,360 en het uitzicht is wat we doen in termen van de XML 101 00:06:23,360 --> 00:06:25,260 die wordt geassocieerd met die activiteit. 102 00:06:25,260 --> 00:06:29,340 Fragmenten zijn iets dat's geïmplementeerd in Ice Cream Sandwich gaan vooruit. 103 00:06:29,340 --> 00:06:36,380 Het is gewoon een idee van het nemen van delen van de weergave of de activiteit 104 00:06:36,380 --> 00:06:39,990 en de ze op te delen in afzonderlijke gebieden, zodat dat we kunnen 105 00:06:39,990 --> 00:06:45,030 maken onze code meer bruikbaar voor deze vele verschillende apparaten 106 00:06:45,030 --> 00:06:51,890 dat we hebben om steunen, en het is gewoon een manier van het het proberen om 107 00:06:51,890 --> 00:06:54,290 ook factor out meer code. 108 00:06:54,290 --> 00:07:01,090 Diensten zijn achtergrond dingen zoals afspelen van muziek of navigatie richtingen potentieel. 109 00:07:01,090 --> 00:07:05,640 Content providers, dit zijn API's binnen het besturingssysteem 110 00:07:05,640 --> 00:07:09,070 die u toelaten om toegang te krijgen tot gedeelde gegevens te zoals contactinformatie informatie, 111 00:07:09,070 --> 00:07:12,790 en dan een intentie is iets wat we zullen gebruiken wanneer we willen lanceren 112 00:07:12,790 --> 00:07:17,210 een nieuwe activiteit uit onze huidige activiteit. 113 00:07:17,210 --> 00:07:20,980 >> Hello Android, dit gaat om een ​​project dat zullen we praten over te zijn. 114 00:07:20,980 --> 00:07:25,410 Ik zal eigenlijk doe het voor u, en dan zullen wij een ding te doen waar we op een knop klikt 115 00:07:25,410 --> 00:07:27,650 met enkele tekst en te lanceren een nieuwe activiteit. 116 00:07:27,650 --> 00:07:30,110 Zeer ongecompliceerd, maar ik willen gaan door 117 00:07:30,110 --> 00:07:34,480 wat er zal gaan in een project als dit. 118 00:07:34,480 --> 00:07:39,260 Wanneer u het nieuwe project te maken je zult binnen Eclipse te zien 119 00:07:39,260 --> 00:07:41,900 is er is dit project genaamd Hallo Android. 120 00:07:41,900 --> 00:07:43,470 Dan zijn er een gehele bos van mappen hier. 121 00:07:43,470 --> 00:07:46,760 De degenen je bent echt bezorgd met zijn de bronmap, 122 00:07:46,760 --> 00:07:54,540 de map resource, de res, en tot op zekere de map libs voor bibliotheken mate. 123 00:07:54,540 --> 00:08:00,070 En net dus we zijn op dezelfde pagina met dat 124 00:08:00,070 --> 00:08:03,240 als je waren om een ​​nieuw project aan te maken, 125 00:08:03,240 --> 00:08:08,270 u kunt dit recht doen hier, dus als ik wil om het HelloAndroid te bellen, 126 00:08:08,270 --> 00:08:11,100 en vervolgens het doet automatisch een gehele bos van de informatie voor ons. 127 00:08:11,100 --> 00:08:14,110 Het pakket naam is verondersteld om een ​​unieke id te zijn 128 00:08:14,110 --> 00:08:16,710 die normaal zou worden geassocieerd met de website, als je er een had. 129 00:08:16,710 --> 00:08:24,430 >> Bijvoorbeeld, zal ik dit net.cs50.helloandroid noem. 130 00:08:24,430 --> 00:08:30,070 En ik reeds heb dit project maakte ooit. 131 00:08:30,070 --> 00:08:40,059 Oke, sorry. Laten we het noemen het HelloCS50. 132 00:08:40,059 --> 00:08:42,929 En dan zal het dingen als wat voor sort van icon doen we willen ervoor te vragen. 133 00:08:42,929 --> 00:08:48,840 Dit is allemaal vanwege van de Android-Developer Tools-interface, 134 00:08:48,840 --> 00:08:53,350 de plugin die we naar Eclipse toegevoegd, zodat we kunnen kiezen dingen als 135 00:08:53,350 --> 00:08:58,320 wat pictogram we willen, en die zou verder gaan in die diepte als we willen. 136 00:08:58,320 --> 00:09:04,360 Maar in het einde, zorg enkel het-project, 137 00:09:04,360 --> 00:09:07,040 en alles toont up naar rechts hier. 138 00:09:07,040 --> 00:09:10,030 Zoals Ik toonde op het andere scherm te, 139 00:09:10,030 --> 00:09:14,070 we hebben de bronmap, en ik zal praten over wat dit alle middelen binnenkort, 140 00:09:14,070 --> 00:09:19,090 maar je kunt zien dat onmiddellijk het duurt ons mee naar de HelloCS50 scherm te. 141 00:09:19,090 --> 00:09:24,690 Er zijn een aantal knoppen meer dan hier voor het toevoegen van tekst-en tekstveld lay-outs. 142 00:09:24,690 --> 00:09:28,910 Het is een soort als XCode maar helaas niet helemaal als gestroomlijnd. 143 00:09:28,910 --> 00:09:37,790 Maar de clips zal uw vriend en ADT in het bijzonder te zijn voor dit te doen. 144 00:09:37,790 --> 00:09:40,920 >> Okay, de bronmap is de plaats waar 145 00:09:40,920 --> 00:09:43,820 de Java-bestanden worden gehouden, en dit is eigenlijk de lancering van uw programma. 146 00:09:43,820 --> 00:09:45,990 Het is in principe net als de controllers. 147 00:09:45,990 --> 00:09:49,020 De map resource of het res is de plaats waar we houden scherm te lay-outs, 148 00:09:49,020 --> 00:09:54,110 afbeeldingen, geluiden, tekst, animatie en al het andere, libs, uiteraard, bibliotheken. 149 00:09:54,110 --> 00:10:01,700 En de Manifest, het is de manier dat het Android-systeem weet 150 00:10:01,700 --> 00:10:03,130 hoe de interactie met uw app. 151 00:10:03,130 --> 00:10:07,980 Het vertelt het ongeveer permissies en wat er activiteiten daadwerkelijk zal worden in werking gesteld. 152 00:10:07,980 --> 00:10:12,350 Het is allemaal de essentiële informatie dat is nodig is om uw app draaien. 153 00:10:12,350 --> 00:10:17,990 De bron folder is-als wij uit te breiden het als u met de rechtermuisknop hier kunt zien. 154 00:10:17,990 --> 00:10:23,920 En een voorbeeld dat een code zou kijken-dit is de standaard code. 155 00:10:23,920 --> 00:10:27,930 Zoals wij noemden het, MainActivity. 156 00:10:27,930 --> 00:10:33,230 Door Standaard, krijg we onCreate, welke een functie is dat is aangeroepen wanneer deze activiteit ladingen, 157 00:10:33,230 --> 00:10:37,150 dus je wilt naar onCreate (savedInstanceState) noemen. 158 00:10:37,150 --> 00:10:40,440 Dit zal alle stukjes informatie herstellen 159 00:10:40,440 --> 00:10:44,910 in het geval de app werd gepauzeerd. 160 00:10:44,910 --> 00:10:48,790 >> Er is een hele activiteit life cycle chart waarin u kunt kijken naar 161 00:10:48,790 --> 00:10:50,380 wanneer je krijg in het een beetje meer diepgaande, 162 00:10:50,380 --> 00:10:56,210 maar de meest belangrijke regel code er is deze setContentView functie 163 00:10:56,210 --> 00:11:00,290 waarvan het resource-bestand zal te laden voor de lay-out. 164 00:11:00,290 --> 00:11:03,590 Dan wat onCreate hier is in principe doet is het wordt zeggend 165 00:11:03,590 --> 00:11:07,010 toen ik creëer deze activiteit Ik wil dit layout te laden. 166 00:11:07,010 --> 00:11:12,030 En we zullen praten over wat dat lay-out is in een tweede. 167 00:11:12,030 --> 00:11:16,230 Als we waren om te lanceren dat hier het ziet er precies als dit, 168 00:11:16,230 --> 00:11:22,880 en door standaard omdat wij hebben Eclipse dit te doen en ADT het doen van het voor ons 169 00:11:22,880 --> 00:11:28,210 dit is alles boilerplate code die is geschapen voor ons, 170 00:11:28,210 --> 00:11:34,630 en we kunnen on bewegen en dingen veranderen als we willen. 171 00:11:34,630 --> 00:11:38,190 De map resource, zoals ik al zei, dit is waar we aanhouden van alle lay-outs, 172 00:11:38,190 --> 00:11:41,150 drawables in termen van even welke soort van images- 173 00:11:41,150 --> 00:11:46,360 ze worden opgeroepen drawables-en vervolgens geluidsbestanden, menu 's. 174 00:11:46,360 --> 00:11:51,170 Het is een manier van een gehele bos van XML in een aardige naargelang mode-. 175 00:11:51,170 --> 00:11:58,030 Zoals u kunt zien, zijn er. Hdpi, LDPI, mdpi en xhdpi mappen voor de drawables. 176 00:11:58,030 --> 00:12:02,220 Dit zijn verschillende screen dichtheden, dus hoge dichtheid pixel per inch, 177 00:12:02,220 --> 00:12:05,710 lage dichtheid, medium dichtheid, extra hoge dichtheid. 178 00:12:05,710 --> 00:12:08,900 >> Dit is, wederom, zodat we kunnen al deze verschillende apparaten ondersteunen, 179 00:12:08,900 --> 00:12:15,100 -en idealiter, zult heb je verschillende beelden voor elk verschillende resolutie. 180 00:12:15,100 --> 00:12:20,740 Layouts zijn waar we omvatten alle verschillende layouts die zal worden gebruikt in verschillende activiteiten. 181 00:12:20,740 --> 00:12:24,150 Ze konden omvatten ook lay-outs voor fragmenten, 182 00:12:24,150 --> 00:12:26,670 die in feite betekent gedeeltelijke-activiteiten. 183 00:12:26,670 --> 00:12:29,610 Als je wilt om iets cools doen, zoals wanneer u maar de telefoon te roteren 184 00:12:29,610 --> 00:12:33,900 je wilt dat het een verschillend-out u kunnen layout-landschap doen zoals een andere map hebben, 185 00:12:33,900 --> 00:12:39,000 -en Android heeft automatisch een gehele bos van deze regels binnen de map resource, 186 00:12:39,000 --> 00:12:44,690 dus het zal weet om te kijken naar verschillende mappen gebaseerd op de huidige setup van de telefoon, 187 00:12:44,690 --> 00:12:46,740 wat voor soort van hardware u gebruikt. 188 00:12:46,740 --> 00:12:52,350 Evenzo, Dit waarden-v11 hier en waarden-v14 189 00:12:52,350 --> 00:12:55,460 en map de standaardwaarden dit is voor- 190 00:12:55,460 --> 00:13:01,730 goed, waarden Dit op zichzelf de standaardbinaries waarden van verschillende alle versies van het besturingssysteem. 191 00:13:01,730 --> 00:13:06,390 Anderzijds, v11 en v14 komen met het Honeycomb 192 00:13:06,390 --> 00:13:08,780 -en Ice Cream Sandwich, respectievelijk. 193 00:13:08,780 --> 00:13:12,800 Nogmaals, dit zijn manieren die-binnen deze mappen zijn verschillend strings 194 00:13:12,800 --> 00:13:17,550 en stijlen, dus je kunt het uiterlijk van uw app aan te passen 195 00:13:17,550 --> 00:13:22,660 of potentieel zelfs zijn functionaliteit, hoewel dat waarschijnlijk een slecht idee zou zijn, 196 00:13:22,660 --> 00:13:25,890 basis van de versie van het besturingssysteem. 197 00:13:25,890 --> 00:13:28,760 >> En ik sprak over dit alles hier. 198 00:13:28,760 --> 00:13:35,870 Nogmaals, betekenbare, rauwe, lay-out, waarden. 199 00:13:35,870 --> 00:13:41,380 De defaults, als we verder gaan in Hallo Android-of Hallo CS50 rechts nu 200 00:13:41,380 --> 00:13:43,310 het eruit zal zien net als dit. 201 00:13:43,310 --> 00:13:45,800 Het zal hello hele wereld zeggen. 202 00:13:45,800 --> 00:13:58,430 Zoals u juiste hier kunnen zien met de Android tekst 203 00:13:58,430 --> 00:14:04,420 de tekst voor deze tekst beschikbaar view, die in feite is gewoon een label, 204 00:14:04,420 --> 00:14:06,900 is wat wij het in iOS zou noemen. 205 00:14:06,900 --> 00:14:11,580 Het heeft deze grappige notatie @ string / hello_world. 206 00:14:11,580 --> 00:14:16,200 Dit is zo we can-we proberen om alle van de snaren extraheren, 207 00:14:16,200 --> 00:14:19,740 alle van de harde-coded strings in Android in een aparte map te, 208 00:14:19,740 --> 00:14:23,610 die toevallig te zijn in values.strings. 209 00:14:23,610 --> 00:14:29,300 Als we hier kijken, kunnen we zien dat we hebben een harde-coded tekenreeks hier gered 210 00:14:29,300 --> 00:14:33,910 voor hello wereld, en het heet hello wereld, en dit is soort van een 211 00:14:33,910 --> 00:14:39,230 gemeenschappelijke ontwerpbeslissing aan de overkant van velen platforms die u wilt- 212 00:14:39,230 --> 00:14:41,780 snaren zijn de soort van dingen die we willen om potentieel in staat zijn om te veranderen. 213 00:14:41,780 --> 00:14:48,050 We willen niet tot F in onze source code-bestand beheersen in onze XML. 214 00:14:48,050 --> 00:14:50,760 We willen in staat zijn om dit veranderen wanneer we de kans krijgen. 215 00:14:50,760 --> 00:14:53,640 >> Dit XML-bestand, strings.xml, is een manier van het extraheren van 216 00:14:53,640 --> 00:14:56,710 harde-coded strings die anders zouden zijn in onze lay-out hulpbronnen 217 00:14:56,710 --> 00:15:03,530 of in onze source code. 218 00:15:03,530 --> 00:15:08,190 Het Manifest is waar we deze essentiële informatie over de toepassing te houden. 219 00:15:08,190 --> 00:15:11,050 Het omvat de naam-pakket. Dat heeft om een ​​unieke identifier te zijn. 220 00:15:11,050 --> 00:15:16,020 In tegenstelling tot de App Store voor iOS de namen van de applicaties 221 00:15:16,020 --> 00:15:19,980 hoeven niet te uniek te zijn, en je kunt in feite veranderen de naam van uw toepassing 222 00:15:19,980 --> 00:15:23,570 nadat je het in te dienen, dus als ik begin out met Angry Birds, 223 00:15:23,570 --> 00:15:26,840 en dan maak ik een update, en ik wil niet om een ​​nieuwe versie vrij te geven 224 00:15:26,840 --> 00:15:34,230 Ik denk dat ik het kon Angry Birds noem 2 terwijl Ik ben op de dezelfde release-cyclus. 225 00:15:34,230 --> 00:15:36,780 Het zou gewoon opdagen als een update. 226 00:15:36,780 --> 00:15:39,790 Het enige ding dat heeft te te zijn uniek maakt is dit pakket naam, 227 00:15:39,790 --> 00:15:41,280 die niet veel mensen zullen zien. 228 00:15:41,280 --> 00:15:44,680 Nou, je zou alleen zien als u naar op zoek waren bij de bron code is of wanneer er is een of andere soort van error. 229 00:15:44,680 --> 00:15:47,580 De componenten omvatten-activiteiten, dus we moeten te verklaren 230 00:15:47,580 --> 00:15:49,070 even welke soort van activiteit die we gebruiken. 231 00:15:49,070 --> 00:15:53,430 Dit is een toestemming soort ding. 232 00:15:53,460 --> 00:15:58,150 >> Omdat Android beschikt niet over deze rigoureuze toepassing proces hebben 233 00:15:58,150 --> 00:16:02,210 voor het indienen van apps in plaats daarvan ze gewoon niet alles wat gebaseerd off van permissies 234 00:16:02,210 --> 00:16:04,300 en het verklaren van dingen in de Manifest. 235 00:16:04,300 --> 00:16:06,380 De SDK versie is ook belangrijk. 236 00:16:06,380 --> 00:16:10,330 We kunnen gebruik ingesteld als SDK minimale versie iets. 237 00:16:10,330 --> 00:16:16,010 Uiteraard, u wilt code te creëren 238 00:16:16,010 --> 00:16:18,570 en ontwerp voor de nieuwere besturingssystemen. 239 00:16:18,570 --> 00:16:20,840 Misschien wel niet de nieuwste, misschien ook niet Jelly Bean. 240 00:16:20,840 --> 00:16:23,610 Misschien heb je wilt ontwerpen de eerste plaats voor Ice Cream Sandwich, 241 00:16:23,610 --> 00:16:27,120 hoewel ze zijn vrij veel het zelfde in termen van design beslissingen 242 00:16:27,120 --> 00:16:30,550 en de feitelijke bibliotheken en APIs. 243 00:16:30,550 --> 00:16:36,250 Maar eerder dan hebben mensen 244 00:16:36,250 --> 00:16:40,050 van de oorspronkelijke Android-versie-achtige Donut weg terug wanneer- 245 00:16:40,050 --> 00:16:43,420 die nog steeds toevallig worden met behulp die proberen om uw toepassing te downloaden en dan zeggen 246 00:16:43,420 --> 00:16:46,160 het werkt niet op mijn telefoon kunt u de minimale-versie ingesteld 247 00:16:46,160 --> 00:16:48,620 en hebben het zijn Gingerbread of Ice Cream Sandwich 248 00:16:48,620 --> 00:16:53,300 of wat dan ook u voelt comfortabel indienen. 249 00:16:53,300 --> 00:16:57,170 En dit is een voorbeeld van de Manifest. We kunt kijken naar de werkelijke een in een beetje. 250 00:16:57,170 --> 00:17:00,900 >> Okay, we zullen gewoon vooruit te gaan met de demo nu. 251 00:17:00,900 --> 00:17:08,900 Dit is de demo als u Google Android te bouwen uw eerste app of iets dergelijks. 252 00:17:08,900 --> 00:17:12,089 We zullen gaan door middel van alles wat er er gaande is in daar, 253 00:17:12,089 --> 00:17:17,690 en sorry, alleen voor een referentie-wie hier weet Java in enige mate te? 254 00:17:17,690 --> 00:17:28,310 Oke, dus Java is nieuwe codering taal voor de meeste mensen coming out van CS50. 255 00:17:28,310 --> 00:17:31,850 Kort op, om te opnieuw te meer dan te gaan wat hier staat, 256 00:17:31,850 --> 00:17:35,580 wat we willen doen is eerder dan aan te passen dit hello wereld applicatie 257 00:17:35,580 --> 00:17:38,620 dat alle het doet is het lanceert en het zegt hello wereld 258 00:17:38,620 --> 00:17:43,580 en het zegt hallo CS50 aan de top want dat is de naam-activiteit 259 00:17:43,580 --> 00:17:47,190 we gaan om proberen om een ​​tekstveld en een knop te maken 260 00:17:47,190 --> 00:17:50,680 zodat wanneer we op deze knop drukt het zal de tekst te nemen 261 00:17:50,680 --> 00:17:53,660 uit het veld tekst en te lanceren een nieuwe activiteit, en het zal zeggen: 262 00:17:53,660 --> 00:17:58,380 ongeacht die tekst zei in de activiteit, en dit is relatief eenvoudig. 263 00:17:58,380 --> 00:18:00,650 Het is niet erg interessant. Je zou niet willen om eventuele app zoals dit vrij te geven. 264 00:18:00,650 --> 00:18:03,880 Maar het demonstreert enkele belangrijke ontwerp dingen. 265 00:18:03,880 --> 00:18:07,030 >> We zult moeten om te interageren met de Manifest, met de lay-out bestanden, 266 00:18:07,030 --> 00:18:12,440 met de source code, en je kunt zien hoe je de ene activiteit te lanceren vanaf een andere. 267 00:18:19,740 --> 00:18:23,060 We zal beginnen met de lay-out voor onze eerste activiteit, 268 00:18:23,060 --> 00:18:27,320 waarvan ik weet dat het soort van kleine, 269 00:18:27,320 --> 00:18:32,660 maar zoals je kunt juiste nu zien, alles wat het is is het heeft onze logo dat wij geschapen, 270 00:18:32,660 --> 00:18:36,310 de naam-activiteit, en het zegt hello wereld in het centrum. 271 00:18:36,310 --> 00:18:40,400 In plaats daarvan, ben BESCHIKBARE ik voor het eerst ga dit te maken in een lineaire lay-out, 272 00:18:40,400 --> 00:18:42,350 een relatieve lay-out, en deze zijn alle dingen 273 00:18:42,350 --> 00:18:45,870 je zou kunnen kijken omhoog en zijn het waard gaan over op een bepaald punt in termen van de lay-outs. 274 00:18:45,870 --> 00:18:47,310 Het is een partij zoals HTML-. 275 00:18:47,310 --> 00:18:52,640 We zeiden het is niet echt moeite waard te weten in termen van een programmatische sense, 276 00:18:52,640 --> 00:18:55,840 maar er zijn zo veel verschillende layouts die u kunt bedienen, 277 00:18:55,840 --> 00:18:57,970 en het is net als CSS in termen van stijlen. 278 00:18:57,970 --> 00:19:01,590 >> Er is veel gaande on alleen in termen van de esthetiek hier, 279 00:19:01,590 --> 00:19:08,930 en ja, het is moeite waard te leren, maar het is de soort ding je moet zoeken up 280 00:19:08,930 --> 00:19:11,810 als je gaat en je voelt alsof je iets nieuw nodig hebt. 281 00:19:11,810 --> 00:19:17,030 Ik kan profiteren van een aantal van de ADT gereedschappen hier op zijn minst om te off te beginnen met. 282 00:19:17,030 --> 00:19:21,930 Ik zal een tekstveld te maken, en ik zal een knop te maken. 283 00:19:21,930 --> 00:19:24,100 Zet ze recht naast elkaar. 284 00:19:24,100 --> 00:19:28,200 Ze reeds passende wijze vergroten of verkleinen. 285 00:19:28,200 --> 00:19:31,320 Sorry, nogmaals, terug naar het verschil tussen lineaire layout en relatieve layout, 286 00:19:31,320 --> 00:19:34,830 a lineaire lay-out geeft een beetje meer functionaliteit 287 00:19:34,830 --> 00:19:38,720 in termen van het vullen ruimte en het maken van zorgen dat 288 00:19:38,720 --> 00:19:42,790 we positie dingen horizontaal of verticaal. 289 00:19:42,790 --> 00:19:46,130 Het grote verschil tussen een lineaire lay-out en een relatieve lay-out 290 00:19:46,130 --> 00:19:50,250 is de relatieve lay-out posities alles wat ten opzichte van andere weergaven, 291 00:19:50,250 --> 00:19:52,630 en de goede ding over het is dat het duurt minder tijd om te tekenen 292 00:19:52,630 --> 00:19:56,120 omdat het besturingssysteem kijkt naar al de code-en zegt dit gaat 293 00:19:56,120 --> 00:19:58,270 opzichte deze hier, here. 294 00:19:58,270 --> 00:20:03,170 Het betekent het maakt er minder metingen dan een gehele bos van geneste lineaire lay-outs, 295 00:20:03,170 --> 00:20:06,840 die ik zou moeten doen als ik wilde dingen om te hier verticaal te te gaan. 296 00:20:06,840 --> 00:20:10,510 >> Ik reeds heb sommige dingen horizontaal gaande, dus ik zou een verschillend lineaire lay-out nodig hebt 297 00:20:10,510 --> 00:20:14,560 om verticaal nest hen te, maar als ik aan het doen waren a relatieve layout ik kon zeggen 298 00:20:14,560 --> 00:20:18,140 houd dit naar links, dit naar rechts en deze dingen hieronder. 299 00:20:18,140 --> 00:20:21,850 Maar omdat ik wil dat ze naar rechts nu vullen Ik ga een lineaire lay-out te gebruiken, 300 00:20:21,850 --> 00:20:24,510 en je kunt zien het nu al doet veel van deze dingen voor ons. 301 00:20:24,510 --> 00:20:28,890 Alle keer bekeken nodig hebt om een ​​eigenschap van breedte en hoogte hebben, 302 00:20:28,890 --> 00:20:33,410 en Komt een naar gewicht van 1 hebben, en dit heeft een gewicht van 1 303 00:20:33,410 --> 00:20:36,050 zodat het vult het gehele ruimte. 304 00:20:36,050 --> 00:20:38,460 Maar de width en hoogte zijn belangrijkste. 305 00:20:38,460 --> 00:20:45,880 Dit ID veld recht hier is niet belangrijk is binnen het feitelijke lay-out 306 00:20:45,880 --> 00:20:49,060 tenzij we bent hand van een relatieve lay-out en zeggend we kunnen refereren 307 00:20:49,060 --> 00:20:52,990 ene view positie in verwijzing naar een ander. 308 00:20:52,990 --> 00:20:56,170 Als we hadden een relatieve lay-out konden we positie zeggen dat dit hieronder dit ene 309 00:20:56,170 --> 00:20:59,390 of boven deze ID, maar dit ID zal belangrijk zijn 310 00:20:59,390 --> 00:21:01,660 wanneer wij hem gebruikt in onze code, omdat we kunnen refereren 311 00:21:01,660 --> 00:21:05,610 deze individuele uitzichten in deze manier. 312 00:21:05,610 --> 00:21:10,350 >> En dan kunt u de tag requestFocus, dat is iets wat je waarschijnlijk zag in pset 7 te zien. 313 00:21:10,350 --> 00:21:15,370 Er was een autofocus-tag of iets volgens die lijnen voor een van de velden. 314 00:21:15,370 --> 00:21:22,100 En een ding, van natuurlijk, we kunnen doen net als in HTML-, 315 00:21:22,100 --> 00:21:25,660 en een opzegtermijn van een van de aardige dingen over ADT is dat het hier autocompletes. 316 00:21:25,660 --> 00:21:29,930 Misschien niet zo mooi als zij heeft gedaan in XCode, maar het doet desalniettemin, 317 00:21:29,930 --> 00:21:32,860 en we konden hint zeggen en vervolgens geef het een of andere soort van de string 318 00:21:32,860 --> 00:21:37,070 graag schrijf een-bericht, 319 00:21:37,070 --> 00:21:41,300 en als ik geef het een moment, ook merken dat ik krijg een beetje error hier 320 00:21:41,300 --> 00:21:44,610 zeggend dat we een string hulpbron zou moeten gebruiken voor dit, 321 00:21:44,610 --> 00:21:48,820 dus als ik laat het doe sommige van het harde werk voor mij 322 00:21:48,820 --> 00:21:57,320 Ik kan deze string selecteren, doe refractor Android-en extract Android string. 323 00:21:57,320 --> 00:22:00,570 Ik kan het dat naam te geven, schrijf een boodschap, 324 00:22:00,570 --> 00:22:04,180 en wat het deed nu is laten vervangen dat hard-coded tekenreeks 325 00:22:04,180 --> 00:22:07,980 met een verwijzing naar de tekenreeks in. xml-bestand de snaar's, 326 00:22:07,980 --> 00:22:10,200 die nu betekent dit is hier. 327 00:22:10,200 --> 00:22:15,560 >> En ik weet dat een beetje triviale en net als extra werk op dit punt lijkt, 328 00:22:15,560 --> 00:22:17,840 maar wanneer je hebt een gehele bos van dingen, een gehele bos van strings, 329 00:22:17,840 --> 00:22:20,750 dat is echt belangrijk is, en het bijzonder voor lokalisatie 330 00:22:20,750 --> 00:22:26,920 want zoals ik al eerder zei, Android is een zeer wereldwijd gebruikt besturingssysteem 331 00:22:26,920 --> 00:22:35,950 dat je gewoon kunt doen waarden-nl of waarden-sp 332 00:22:35,950 --> 00:22:44,320 of iets voor Engels of Spaans of andere talen. 333 00:22:44,320 --> 00:22:50,210 En dan heeft u waarschijnlijk hebt niet deze ervaring nog gehad 334 00:22:50,210 --> 00:22:53,030 aangezien we veel JavaScript niet deed doen in termen van web programmeren, 335 00:22:53,030 --> 00:22:56,850 maar we kunnen ook dit veld genaamd onClick te doen voor de knop, 336 00:22:56,850 --> 00:23:02,350 en dit is een manier van het referencement binnen ons lay-out 337 00:23:02,350 --> 00:23:06,570 dat we willen een bepaalde functie te worden aangeroepen in onze source code. 338 00:23:06,570 --> 00:23:09,420 Ik ga dit sendMessage te bellen, 339 00:23:09,420 --> 00:23:13,390 en om dit werk maken dat betekent hier tot de hoofdactiviteit 340 00:23:13,390 --> 00:23:19,180 Ik zal heb naar een functie die is openbare te creëren 341 00:23:19,180 --> 00:23:22,250 zodat het kan worden benaderd door de layout. 342 00:23:22,250 --> 00:23:25,930 Het is leegte omdat je gewoon niet willen het naar terugkeert niets. 343 00:23:25,930 --> 00:23:37,760 We zullen het sendMessage noemen, en het duurt een view, 344 00:23:37,760 --> 00:23:43,690 die is een soort context dat we deze methode kunnen verankeren 345 00:23:43,690 --> 00:23:47,160 om te dat individuele view wanneer wij bent het runnen van het. 346 00:23:47,160 --> 00:23:50,090 >> En Ik weet niet als u opgevallen-goed, u zou niet hebt opgevallen, 347 00:23:50,090 --> 00:24:02,370 maar op dit punt rechts hier 348 00:24:02,370 --> 00:24:06,930 dit view is een type die nog niet heeft opgenomen, 349 00:24:06,930 --> 00:24:10,630 en natuurlijk, jullie allemaal kennen van CS50 over het niet met inbegrip types. 350 00:24:10,630 --> 00:24:13,120 Het aardige ding over IDE's achtige Eclipse is dat 351 00:24:13,120 --> 00:24:17,520 als je vergeet om een ​​type omvatten was zou het onderstrepen met een beetje rode squiggly 352 00:24:17,520 --> 00:24:19,680 en geven u vervolgens de optie om het uitzicht te importeren. 353 00:24:19,680 --> 00:24:23,130 Een snelle manier van het doen van dat is-controle shift O, en het zal importeert 354 00:24:23,130 --> 00:24:27,070 alle bestanden die het nodig heeft om. 355 00:24:27,070 --> 00:24:33,670 Nu dat we hebben deze functie sendMessage, 356 00:24:33,670 --> 00:24:46,560 die gaat om bericht te sturen uit de MainActivity tot een nieuwe activiteit, 357 00:24:46,560 --> 00:24:55,230 we gaan te hebben te een intentie om de nieuwe activiteit te lanceren uit deze ene te gebruiken, 358 00:24:55,230 --> 00:25:02,240 dus we zult waarschijnlijk willen een globale constante of ook in het bijzonder een publieke constante te creëren 359 00:25:02,240 --> 00:25:06,240 dat zal helpen ons weten hoe we gaan om te verwijzen de string 360 00:25:06,240 --> 00:25:09,090 omdat wanneer we creëren een intent hebben we het niet alleen maar bellen een nieuwe activiteit, 361 00:25:09,090 --> 00:25:11,520 maar we kunnen ook geef het een bundel van informatie. 362 00:25:11,520 --> 00:25:14,720 Een bundel is eigenlijk de term die Android gebruik maakt van, 363 00:25:14,720 --> 00:25:21,470 en het is een manier om te zeggen geef het extra data, waarvan het niet kan zijn van een zeer gesofisticeerde data type, 364 00:25:21,470 --> 00:25:24,510 maar we kan zeker omvatten booleans of strings of ints. 365 00:25:24,510 --> 00:25:29,750 Dat soort dingen. 366 00:25:29,750 --> 00:25:34,230 >> Voel je vrij om vragen over eventuele van deze kwalificatietoernooien hier, 367 00:25:34,230 --> 00:25:36,900 openbare, final, statische. 368 00:25:36,900 --> 00:25:38,610 Publieke is het belangrijk ene. 369 00:25:38,610 --> 00:25:47,090 Het betekent dat we hebt toegang tot deze variabele uit andere source code-bestanden 370 00:25:47,090 --> 00:25:49,590 zoals wanneer we creëren een nieuwe activiteit. 371 00:25:49,590 --> 00:25:52,190 We kunnen de string binnen deze file refereren. 372 00:25:52,190 --> 00:25:57,160 Indien het is private, het betekent het is beperkt tot deze persoon bestand te hier. 373 00:25:57,160 --> 00:26:02,430 Maar we zullen dit iets als extra-bericht bellen. 374 00:26:16,260 --> 00:26:23,300 Nu hebben we deze functie gemaakt, en als we klik op de knop, zal deze functie worden opgeroepen. 375 00:26:23,300 --> 00:26:27,970 Maar wij heb niets gedaan, uiteraard, met de-functie. 376 00:26:27,970 --> 00:26:33,130 Wat we willen nu doen is het creëren een nieuwe activiteit, 377 00:26:33,130 --> 00:26:35,350 de activiteit die zal daadwerkelijk worden gelanceerd. 378 00:26:35,350 --> 00:26:44,330 In Eclipse kunnen we nieuwe, Android-activiteit, blanco-activiteit zeggen. 379 00:26:44,330 --> 00:26:46,530 We kunnen het een naam geven. 380 00:26:46,530 --> 00:26:57,050 Laten we noemen het als onze resultaat-activiteit. 381 00:26:57,050 --> 00:27:04,430 En dan is deze hiërarchische bovenliggende veld is een manier van het specificeren van 382 00:27:04,430 --> 00:27:08,180 hoe de werkzaamheden worden aan elkaar gerelateerd. 383 00:27:08,180 --> 00:27:11,020 Omdat dit ene zal worden gelanceerd vanaf de andere activiteit 384 00:27:11,020 --> 00:27:27,520 we dient te vermelden dat het heeft de bovenliggende hoofdactiviteit. 385 00:27:27,520 --> 00:27:31,220 >> En ik kon hebt geklikt op de volgende veld daar, die ons zou vertelde hebben 386 00:27:31,220 --> 00:27:33,830 sommige optionele velden dat het ook was inbegrip, 387 00:27:33,830 --> 00:27:38,800 maar de aardige ding over ADT, nogmaals, is dat als ik scroll naar beneden hier 388 00:27:38,800 --> 00:27:45,740 in de Manifest herinneren dat alle van dit echt werd opgenomen door verstek 389 00:27:45,740 --> 00:27:48,930 toen we oorspronkelijk geschapen het-project, 390 00:27:48,930 --> 00:27:53,090 en nu, omdat we gebruikten dit maak een nieuwe activiteit eerder dan enkel 391 00:27:53,090 --> 00:27:58,610 het toevoegen van onze eigen klasse bestand, omdat we gingen door middel van hun GUI voor dit te doen 392 00:27:58,610 --> 00:28:01,930 het al toegevoegd allemaal van deze aan de Manifest voor ons, 393 00:28:01,930 --> 00:28:06,020 die net betekent dat nu het besturingssysteem niet zal klagen 394 00:28:06,020 --> 00:28:09,400 wanneer we proberen om deze activiteit te lanceren. 395 00:28:09,400 --> 00:28:14,620 En het ook, natuurlijk, gaf het een label, dat ook blijkt uit up in strings. 396 00:28:14,620 --> 00:28:17,340 Het doet een heleboel dingen op de rug end voor ons. 397 00:28:17,340 --> 00:28:20,140 Hoe dan ook, nu dat we hebben dit resultaat activiteit als goed, 398 00:28:20,140 --> 00:28:23,810 de eigenlijke source code bestand in de map bron, 399 00:28:23,810 --> 00:28:33,540 en je kunt zien-om kort in on deze-aanraakt 400 00:28:33,540 --> 00:28:37,790 omdat we verteld het over dit hiërarchische bovenliggende 401 00:28:37,790 --> 00:28:46,640 het gaf dit veld android.r.ide.home in deze onOption geselecteerde ding. 402 00:28:46,640 --> 00:28:49,020 >> Wat dit wordt fundamenteel zeggend is er is een menu--knop nu 403 00:28:49,020 --> 00:28:53,110 dat in de linker bovenkant bovenhoek van het scherm 404 00:28:53,110 --> 00:29:02,220 als ik ga terug naar de PowerPoint-waar we voor het eerst gesproken over actiebalk 405 00:29:02,220 --> 00:29:05,380 vanwege van de hiërarchische bovenliggende nu is er een kleine pijl back hier 406 00:29:05,380 --> 00:29:10,610 en dit is aanklikbaar dus we moeten in staat zijn om-nadat wij eigenlijk dit run app- 407 00:29:10,610 --> 00:29:15,360 ga terug, en het is een manier van bespaart ons een klein beetje van code daar. 408 00:29:26,220 --> 00:29:40,180 Nu binnen deze-well, het lijkt te worden klagen over, dat voor een moment. 409 00:29:40,180 --> 00:29:43,910 Laten we eens becommentariëren dat out. 410 00:29:43,910 --> 00:29:48,260 Nu, om daadwerkelijk de interactie met deze 2 activiteiten, 411 00:29:48,260 --> 00:29:55,020 we moeten een intentie waarop al deze gegevens omvat creëren. 412 00:29:55,020 --> 00:29:58,950 In sendMessage nu ga ik om cruise door middel van sommige stukjes code 413 00:29:58,950 --> 00:30:00,700 en leg uit dat als ik ga. 414 00:30:00,700 --> 00:30:06,280 Een intentie, zoals ik al zei, is een manier om de ene activiteit te lanceren vanaf een andere. 415 00:30:06,280 --> 00:30:10,000 Intent is het type. We zijn het creëren van een variabele myIntent. 416 00:30:10,000 --> 00:30:13,980 >> En dit is eigenlijk een object, die is waarom we hebben om nieuwe te bellen. 417 00:30:13,980 --> 00:30:18,500 Het is gemeenschappelijke Java verbruik er, die een beetje beetje wennen om zou kunnen nemen. 418 00:30:18,500 --> 00:30:23,900 Dit betekent dat we met behulp van de activiteit zijn of de klasse MainActivity, 419 00:30:23,900 --> 00:30:28,630 en intentie op die manier neemt de activiteit het gaat uit 420 00:30:28,630 --> 00:30:36,060 en de activiteit het gaat om te, die wij ResultActivity noemen, 421 00:30:36,060 --> 00:30:38,170 en dat is zijn eigen klasse. 422 00:30:38,170 --> 00:30:41,720 Omvatten dat. 423 00:30:41,720 --> 00:30:47,370 En vervolgens als ik eerder al noemde, gaven we dat ID om de bewerkingsmodus tekst veld 424 00:30:47,370 --> 00:30:53,710 en de tekst uitzicht, dus met het oog te programmatisch vast te leggen 425 00:30:53,710 --> 00:31:01,860 de tekst die verschijnt in de EditText bestaat 426 00:31:01,860 --> 00:31:06,710 we deze functie genaamd findViewById, gebruik maken 427 00:31:06,710 --> 00:31:13,660 die vergelijkbaar is met iets dat je zult gebruiken wanneer het proberen om velden te krijgen van de DOM. 428 00:31:13,660 --> 00:31:17,560 Misschien wel David praat over dit in collegezalen. 429 00:31:17,560 --> 00:31:26,600 Maar het is gewoon een manier van het het krijgen van die-dat is waarom we taggen deze dingen met die velden. 430 00:31:26,600 --> 00:31:31,110 Id.editText1. 431 00:31:31,110 --> 00:31:35,220 Het is al autocompleting voor mij daar. 432 00:31:35,220 --> 00:31:42,010 >> En dan gaan we omvatten ook-dit EditText nu dat we hebben het veld 433 00:31:42,010 --> 00:31:47,640 binnen ons programma, allemaal dat findViewById leverde was in wezen 434 00:31:47,640 --> 00:31:50,870 je kon bedenken het als geven ons een verwijzing naar die EditText. 435 00:31:50,870 --> 00:31:54,570 Nu willen we om de string of de boodschap te krijgen 436 00:31:54,570 --> 00:32:00,670 binnen die EditText waarin we kunt doen door behulp van de- 437 00:32:00,670 --> 00:32:03,360 je kon bedenken EditText als een struct- 438 00:32:03,360 --> 00:32:07,600 we noemen het een object in Java-met een hele bos van verschillende methoden 439 00:32:07,600 --> 00:32:10,650 -of velden en attributen gehecht om het te. 440 00:32:10,650 --> 00:32:15,510 Toen ik zeg EditText. het geeft me de kans om te toegang te krijgen 441 00:32:15,510 --> 00:32:19,770 a methode, zoals getText, waarin de huidige tekst zal krijgen 442 00:32:19,770 --> 00:32:23,990 in die EditText en vervolgens converteren dat expliciet 443 00:32:23,990 --> 00:32:26,520 naar een string, en we hebben de boodschap opgeslagen. 444 00:32:26,520 --> 00:32:32,730 Nu we eigenlijk willen iets doen met die intentie we zojuist ogenblikken geleden aangemaakt. 445 00:32:32,730 --> 00:32:40,250 Ik zal extra zet zoals dat heet in de intent, 446 00:32:40,250 --> 00:32:43,330 die, nogmaals, net als ik al eerder zei, dit is een manier van het het creëren van de bundel 447 00:32:43,330 --> 00:32:45,980 met een gehele bos van data. 448 00:32:45,980 --> 00:32:50,920 Extra bericht is onze tag, zodat we weten wat we het opslaan van dit onder, 449 00:32:50,920 --> 00:32:56,700 en dan ben ik met inbegrip de boodschap. 450 00:32:56,700 --> 00:33:04,870 >> En dan we kunnen eigenlijk de-activiteit te starten door het te geven de parameter myIntent. 451 00:33:04,870 --> 00:33:10,630 En dit zal de daadwerkelijke lancering de activiteit, dus nu sinds ik opgewaardeerd naar Windows 8 452 00:33:10,630 --> 00:33:15,870 er misschien een aantal fouten die up te tonen kortstondig, maar probeer om ze te negeren. 453 00:33:28,010 --> 00:33:30,310 En dit is de Android emulator. 454 00:33:30,310 --> 00:33:33,540 Hopelijk de code zal daadwerkelijk pop-up in een ogenblik. 455 00:33:33,540 --> 00:33:36,680 Nogmaals, het negeren van al die kleine dingen. 456 00:33:36,680 --> 00:33:42,290 Maar de Android--emulator u kunt elk versie van het besturingssysteem emuleren 457 00:33:42,290 --> 00:33:45,180 uit de vroegste degenen, Donut, Gingerbread. 458 00:33:45,180 --> 00:33:49,640 Dit is Jelly Bean 4.1. 459 00:33:49,640 --> 00:33:53,150 Maar zoals je kunt juiste nu zien, dit is iets wat we maakten. 460 00:33:53,150 --> 00:33:55,780 Dit heeft het MainActivity, de EditText, de knop. 461 00:33:55,780 --> 00:34:01,550 Ik kan iets hier typen, maar wat zijn we missen op dit punt? 462 00:34:01,550 --> 00:34:05,190 We maakten het veld in de MainActivity dat gaat om de bericht te verzenden 463 00:34:05,190 --> 00:34:08,570 aan de andere activiteit, maar op dit punt 464 00:34:08,570 --> 00:34:12,330 we heb niets gedaan in de andere activiteit, dus het is niet plan om iets te te ontvangen. 465 00:34:12,330 --> 00:34:18,800 Laten we eindigen up dat deel voordat we verder gaan. 466 00:34:18,800 --> 00:34:25,760 >> Dit resultaat activiteit, wat we zult moeten doen is we zult moeten doen is we nodig zult hebben om te- 467 00:34:25,760 --> 00:34:30,070 kunnen we ook refereren de intentie binnen deze activiteit, 468 00:34:30,070 --> 00:34:33,580 dus we moeten om de intentie, dat is echt simpel vast te leggen. 469 00:34:33,580 --> 00:34:40,780 Het is een functie begrepen in de activiteitsklasse, 470 00:34:40,780 --> 00:34:47,610 dus we kunnen gewoon zeggen "Verkrijg de boodschap uit de intentie." 471 00:34:47,610 --> 00:34:56,260 "Intent myIntent = getIntent." 472 00:34:56,260 --> 00:35:00,030 En dit zal ons-nu te geven myIntent is een object, 473 00:35:00,030 --> 00:35:05,380 wat een verwijzing daarom opdat ons geleid tot deze activiteit. 474 00:35:05,380 --> 00:35:10,130 MainActivity roept en geeft extra informatie aan-activiteit resulteren. 475 00:35:10,130 --> 00:35:14,070 Resultaat-activiteit ziet er nu bij het intentie dat het leidde hier, 476 00:35:14,070 --> 00:35:23,540 en we kunnen de boodschap dat we geschapen in de andere ene toegang te krijgen, 477 00:35:23,540 --> 00:35:26,370 getStringExtra, en dit zal autocomplete voor mij. 478 00:35:26,370 --> 00:35:31,190 En dan vergeet niet, de manier waarop we voorzien van tag dat bit van de gegevens 479 00:35:31,190 --> 00:35:38,400 was door het geven van het op deze veld recht hier, dit public string, 480 00:35:38,400 --> 00:35:42,080 dat is de-tag voor de string we eigenlijk inbegrepen. 481 00:35:42,080 --> 00:35:48,450 >> Als ik zeg MainActivity.Extra_Message 482 00:35:48,450 --> 00:35:52,200 het is recht er, en dit is soort van net als de naam parameter 483 00:35:52,200 --> 00:35:55,330 toen we gepasseerd code van de controller naar de sjabloon, 484 00:35:55,330 --> 00:35:57,680 toen we zou zeggen dat titel pijl iets. 485 00:35:57,680 --> 00:36:01,140 Het is hetzelfde soort van idee daar. 486 00:36:01,140 --> 00:36:07,130 Nu, onthoud dit. 487 00:36:07,130 --> 00:36:12,230 We hadden ook deze automatische aangemaakt of auto gegenereerde-code 488 00:36:12,230 --> 00:36:16,410 voor resultaat activiteit, die de tekst uitzicht in het midden omvat 489 00:36:16,410 --> 00:36:19,690 dat hello wereld zegt. 490 00:36:19,690 --> 00:36:27,510 We kon potentieel maken dat groter. 491 00:36:27,510 --> 00:36:33,980 Laten we dat doen eerst. 492 00:36:33,980 --> 00:36:39,550 We konden maken het 40 density onafhankelijke pixels. 493 00:36:39,550 --> 00:36:42,670 Laten we eens kijken, dat is super enorme. Dat zal zijn okay. 494 00:36:42,670 --> 00:36:48,180 En dan bedoeling om te refereren deze persoon tekst view binnen ons code 495 00:36:48,180 --> 00:36:53,890 we zult moeten om het te geven een ID, 496 00:36:53,890 --> 00:36:58,350 en met het oog te doen dat we zeggen @ + id, wat betekent dat we ID wijst u deze toe. 497 00:36:58,350 --> 00:37:02,480 Als we net hebben gezegd @ id dat het zou veronderstellen we zijn referencement een ID die al bestaat, 498 00:37:02,480 --> 00:37:07,760 -en laten we noemen dit onze resultTextView. 499 00:37:07,760 --> 00:37:10,570 En merken dat in XML er is geen noodzaak voor puntkomma's of om het even wat. 500 00:37:10,570 --> 00:37:12,380 Alles is binnen deze tags. 501 00:37:12,380 --> 00:37:15,530 Het is zeer vergelijkbaar met HTML in een heleboel zintuigen. 502 00:37:15,530 --> 00:37:22,760 >> Het duurt een klein beetje van wennen, maar uiteindelijk je zult voel me vrij comfortabel met het. 503 00:37:22,760 --> 00:37:31,320 Laten we actualiseren van de tekst voor onze resultaat tekst view, 504 00:37:31,320 --> 00:37:35,650 en zoals we deden toen we werden het krijgen van die tekst bewerken veld in onze andere activiteit 505 00:37:35,650 --> 00:37:46,630 in MainActivity hier zullen we ook likewise- 506 00:37:46,630 --> 00:37:54,890 wij doen de uitzicht door de ID vinden. 507 00:37:54,890 --> 00:37:59,640 -En R, voor het geval ik wist niet dit al eerder vermelden, is de verwijzing naar onze map te hulpbronnen, 508 00:37:59,640 --> 00:38:05,350 en dan ID is een verwijzing om alles te in de map middelen, alle de id's, 509 00:38:05,350 --> 00:38:10,060 en resultTextView. 510 00:38:10,060 --> 00:38:13,010 En net als voorheen, resultTextView is een object, 511 00:38:13,010 --> 00:38:15,780 wat betekent het heeft alle deze eigenschappen die ermee verbonden zijn. 512 00:38:15,780 --> 00:38:20,610 Toen we gebruiken getText voor het bewerkingsmenu tekst voor deze tekst beschikbaar veld of de tekst view 513 00:38:20,610 --> 00:38:23,980 we daadwerkelijk kunnen gebruiken setText, 514 00:38:23,980 --> 00:38:26,960 en vervolgens we al de boodschap gevonden van de intentie, 515 00:38:26,960 --> 00:38:35,760 dus ik kan zeggen boodschap, en dit zal eigenlijk de bericht wilt instellen. 516 00:38:35,760 --> 00:38:41,820 >> Het neem een ​​moment om te lanceren, en dan kunnen we zien of of niet het crasht, 517 00:38:41,820 --> 00:38:48,670 maar even welke vragen over dat proces recht daar, dat soort van interactie? 518 00:38:48,670 --> 00:38:51,490 In veel opzichten het is ongecompliceerd. 519 00:38:51,490 --> 00:38:53,960 De reden dat Ik ga door iets relatief eenvoudige 520 00:38:53,960 --> 00:38:57,330 is, nogmaals, want je krijg om de interactie tussen de lay-out te zien, 521 00:38:57,330 --> 00:38:59,520 de source code, hoe u referentie dingen 522 00:38:59,520 --> 00:39:07,680 en misschien krijg een weinig blootstelling om te hoe Java-daar werkt. 523 00:39:07,680 --> 00:39:16,500 Als ik eigenlijk iets typt u in hier, zoals ohai, en vervolgens ik klik op de knop, 524 00:39:16,500 --> 00:39:22,260 het lanceert een nieuwe activiteit, en die tekst uitzicht zegt ohai. 525 00:39:22,260 --> 00:39:27,640 Dat is heel simpel, maar hopelijk daarna dat voorbeeld 526 00:39:27,640 --> 00:39:32,310 je soort van zien hoe dit interactie werkt, en nu dat puinhoop van bestanden 527 00:39:32,310 --> 00:39:36,870 aan de linker kant voor al deze project mappen te, hopelijk weet u waar om te nu kijken. 528 00:39:36,870 --> 00:39:38,700 Dit is uw broncode gebied. 529 00:39:38,700 --> 00:39:41,760 >> Lay-out is echt de enige ding je zult gaan met totdat u afbeeldingen omvatten 530 00:39:41,760 --> 00:39:46,370 en de drawables of wat dan ook, en waarden, dat zal omvatten strings, 531 00:39:46,370 --> 00:39:51,960 zoals we genoemd, en dan is stijlen is iets dat is een soort als CSS. 532 00:39:51,960 --> 00:39:56,410 Adresseer het wanneer je wilt, maar totdat u vertrouwd bent met het toevoegen van extra flair te voelen 533 00:39:56,410 --> 00:40:02,520 aan uw toepassing is er geen behoefte te maken over het het te veel. 534 00:40:02,520 --> 00:40:07,410 Gewoon om wrap up ene andere ding zult u zeker wilt naar omvatten- 535 00:40:07,410 --> 00:40:13,010 ervan uitgaande dat u wilt coole functies integreren en te bespaar jezelf wat extra codage- 536 00:40:13,010 --> 00:40:16,460 zou zijn om te party libraries 3rd omvatten. 537 00:40:16,460 --> 00:40:19,840 Hier is de kleine Android kerel met de Sherlock Holmes hoed. 538 00:40:19,840 --> 00:40:23,040 Dit is een actie bar Sherlock library, 539 00:40:23,040 --> 00:40:25,390 die in feite betekent dat action bar eerder je zag, 540 00:40:25,390 --> 00:40:29,590 die nu is standaard in Ice Cream Sandwich-en Jelly Bean, 541 00:40:29,590 --> 00:40:33,100 als je wilt om dat soort user experience op oudere versies naar gebruikers te brengen 542 00:40:33,100 --> 00:40:39,290 en bespaar jezelf vanaf zorgen te maken over hoe de gebruiker wordt gaat om te navigeren 543 00:40:39,290 --> 00:40:42,490 op oudere versies wanneer dat ding is er niet u kunt collectie van deze bibliotheek omvatten 544 00:40:42,490 --> 00:40:46,770 en dan hoef je alleen om te referentie--eerder dan de standaardwaarde Android- 545 00:40:46,770 --> 00:40:50,250 bibliotheken voor de actie bar, u dit support bibliotheek refereren. 546 00:40:50,250 --> 00:40:53,090 >> Dingen zoals Scoreloop, het is geweldig als je gaat om een ​​spel omvatten. 547 00:40:53,090 --> 00:40:57,280 Het laat u leader boards en verwezenlijkingen toe te voegen aan spelletjes. 548 00:40:57,280 --> 00:41:00,900 Admob is een manier van het zetten advertenties in uw toepassingen 549 00:41:00,900 --> 00:41:02,900 in het het geval u wilt een klein beetje van geld off van het te maken. 550 00:41:02,900 --> 00:41:05,730 Van Natuurlijk, er is Facebook en Twitter voor daar het integreren van 551 00:41:05,730 --> 00:41:08,170 als je wilt om dingen te gemakkelijk te delen, et cetera. 552 00:41:08,170 --> 00:41:15,120 Dropbox, evenzo, en Google Analytics is, dat chart op zoek ene daar. 553 00:41:15,120 --> 00:41:19,070 Dat zal zeer belangrijk zijn als je daadwerkelijk wilt zien wie wordt interactie 554 00:41:19,070 --> 00:41:25,800 met uw app of wie het is, hoe ze op elkaar inwerken, et cetera. 555 00:41:25,800 --> 00:41:30,650 Google, door standaard, vertelt u een heleboel statistieken over wie je app heeft geïnstalleerd is 556 00:41:30,650 --> 00:41:35,020 en wat telefoons ze hebben, welk besturingssysteem versies hebben ze. 557 00:41:35,020 --> 00:41:38,080 Maar als je wilt om te zien wie is met behulp van het op een dagelijkse basis en hoe ze het gebruiken 558 00:41:38,080 --> 00:41:42,860 dan zul je wilt wat soort van tracking systeem als dat omvatten. 559 00:41:42,860 --> 00:41:44,990 >> Wanneer u klaar bent om uw app distribueren bent 560 00:41:44,990 --> 00:41:46,930 Ik hoef niet in die om te gaan in te veel diepgang. 561 00:41:46,930 --> 00:41:49,090 Klikt u op de link hier, Google Play. 562 00:41:49,090 --> 00:41:51,080 Het gebruikt om de Android-markt te te zijn. 563 00:41:51,080 --> 00:41:53,470 Ze rebranded alles wat met Google Play, 564 00:41:53,470 --> 00:41:55,230 dus nu u indient om te dat. 565 00:41:55,230 --> 00:41:57,140 Het is heel ongecompliceerd. 566 00:41:57,140 --> 00:42:01,070 Je moet een beschrijving, enkele screenshots omvatten. 567 00:42:01,070 --> 00:42:05,660 Zoals ik al zei, er is geen proces van goedkeuring achtige iOS. 568 00:42:05,660 --> 00:42:07,270 En waar te gaan vanaf hier? 569 00:42:07,270 --> 00:42:09,450 Ik toonde je een heel eenvoudige voorbeeld. 570 00:42:09,450 --> 00:42:13,270 Hopelijk als het lijkt vreselijk simpel 571 00:42:13,270 --> 00:42:15,740 dan is dat is waarschijnlijk een goed teken. 572 00:42:15,740 --> 00:42:20,080 Als je bij allen voelde een klein beetje verwarde of onzeker over precies wat ik was het typen 573 00:42:20,080 --> 00:42:26,160 dat is ook prima, maar van hier ga naar Google-gidsen. 574 00:42:26,160 --> 00:42:28,330 Dit is een geweldige plek om te beginnen. 575 00:42:28,330 --> 00:42:31,460 Het zal je praat door middel van wat ze verwachten in termen van de applicatie ontwerp, 576 00:42:31,460 --> 00:42:33,380 hoe de gebruikers normaal gesproken interageren met het. 577 00:42:33,380 --> 00:42:36,450 Het is veel meer vrije vorm dan iOS, zou ik zeggen, 578 00:42:36,450 --> 00:42:41,330 waarin het lijkt alsof keer bekeken table zijn-Ik weet het niet, dat is hun brood en boter. 579 00:42:41,330 --> 00:42:44,690 Alles is een tabelweergave glijden omhoog en omlaag. 580 00:42:44,690 --> 00:42:48,160 Met Android ze zeker mensen aanmoedigen om ernaar te kijken vanaf 581 00:42:48,160 --> 00:42:51,720 een gehele bos van verschillende perspectieven. 582 00:42:51,720 --> 00:42:56,000 >> Wanneer u omvatten de software-development kit in dit ADT 583 00:42:56,000 --> 00:43:03,010 door standaard je hebt een gehele bos van steekproef projecten in Android. 584 00:43:03,010 --> 00:43:05,470 Right hier, Android, Android Sample Project. 585 00:43:05,470 --> 00:43:11,870 Als ik klik on dat, dan is ik kan een versie voor welke van de steekproef projecten toe te passen te kiezen. 586 00:43:11,870 --> 00:43:13,300 Er is een hele bos van verschillende dingen hier. 587 00:43:13,300 --> 00:43:16,690 Het begint off met actie bar-compatibiliteit, 588 00:43:16,690 --> 00:43:24,610 accelerometer toneelstuk, backup en restore, Bluetooth, gebaar builder. 589 00:43:24,610 --> 00:43:28,930 Jetboy is een voorbeeld spel zij geven u, zoals is LunarLander. 590 00:43:28,930 --> 00:43:31,250 Er zijn een gehele bos van steekproef-toepassingen hier, 591 00:43:31,250 --> 00:43:35,290 en ze zijn allemaal gericht op verschillende aspecten van Android's API, 592 00:43:35,290 --> 00:43:41,520 en het idee is dat aangezien u uw toepassing te maken 593 00:43:41,520 --> 00:43:44,110 je hoeft niet hoeft te alles over Android leren om een ​​Android app te maken. 594 00:43:44,110 --> 00:43:47,300 Je moet alleen maar om te leren over de onderdelen dat je eigenlijk gaat gebruiken. 595 00:43:47,300 --> 00:43:49,340 Kijken naar deze sample bibliotheken. 596 00:43:49,340 --> 00:43:51,510 Voel je vrij om de code kopiëren en te plakken en opnieuw toe te passen het. 597 00:43:51,510 --> 00:43:53,850 Het is een geweldige ding om te kijken naar meer moeilijker-code 598 00:43:53,850 --> 00:43:57,060 en probeer het te te begrijpen, dat is van uiteraard de reden waarom in CS50 599 00:43:57,060 --> 00:44:01,510 geven wij je vaak grote hoeveelheden van source code. 600 00:44:01,510 --> 00:44:04,620 Kijken naar enkele van deze als je gaat om soortgelijke libraries te gebruiken 601 00:44:04,620 --> 00:44:08,630 en vervolgens toepassen het aan uw eigen code. 602 00:44:08,630 --> 00:44:10,430 En natuurlijk, zijn er tutorials. 603 00:44:10,430 --> 00:44:12,690 Zoeken voor tutorials. 604 00:44:12,690 --> 00:44:17,020 Ik een veel van de goede degenen online die u kunt op snelheid te brengen gevonden 605 00:44:17,020 --> 00:44:20,080 zijn met wat fragmenten werkelijk zijn en hoe u ze kunt gebruiken. 606 00:44:20,080 --> 00:44:22,240 >> Sommige van deze nieuwe ontwerp dingen, net als fragmenten, 607 00:44:22,240 --> 00:44:26,840 je echt niet hoeft te worden ongerust over, tenzij je bent het maken van een 608 00:44:26,840 --> 00:44:30,560 pretty grote in scope-project. 609 00:44:30,560 --> 00:44:32,510 Ze zijn dingen die Google wordt probeert naar fase inch 610 00:44:32,510 --> 00:44:35,570 Stackoverflow is van natuurlijk je vriend. 611 00:44:35,570 --> 00:44:37,930 Hopelijk Ik verkocht je een beetje op Android, 612 00:44:37,930 --> 00:44:41,640 te beseffen het is veel meer makkelijk om te benaderen in termen van net de codering taal. 613 00:44:41,640 --> 00:44:45,970 Java is Ik zou veel gemakkelijker te begrijpen dan Objective-C zeggen. 614 00:44:45,970 --> 00:44:50,780 Android wordt groeit Ik denk dat veel meer dan iOS. 615 00:44:50,780 --> 00:44:54,890 Ik bedoel, het data is er ook, afgezien van wat ik denk. 616 00:44:54,890 --> 00:44:56,920 Het gaat om rond te zijn voor een tijdje, 617 00:44:56,920 --> 00:45:00,880 en ze zijn een paar jaren achter op in termen van hun ontwerp cycli, 618 00:45:00,880 --> 00:45:04,690 dus het is soort van begrijpelijk dat ze nog steeds het werken door een aantal van deze 619 00:45:04,690 --> 00:45:09,080 consistentie vragen, net als deze actie bar is een nieuw ding voor hen nog steeds, 620 00:45:09,080 --> 00:45:16,010 soort van het creëren van gelijkaardige user experience aan de overkant van al hun apps. 621 00:45:16,010 --> 00:45:20,650 Hopelijk kunt kan naar voren nu gaan en open te up Eclipse 622 00:45:20,650 --> 00:45:22,870 en maak je eigen Android apps. 623 00:45:22,870 --> 00:45:30,240 >> Heeft iemand enig vragen voordat we wrap up over iets? 624 00:45:30,240 --> 00:45:34,410 Ik kan u vertellen het antwoord is 42. 625 00:45:34,410 --> 00:45:41,990 Nou ja, happy codering iedereen, en veel geluk. 626 00:45:41,990 --> 00:45:44,990 [CS50.TV]