1 00:00:00,000 --> 00:00:02,610 [Powered by Google Translate] [Seminar] [Android Apps (Nu med Jelly Beans!)] 2 00:00:02,610 --> 00:00:04,210 [Jordan Jozwiak] [Harvard University] 3 00:00:04,210 --> 00:00:06,780 [Dette er CS50.] [CS50.TV] 4 00:00:06,780 --> 00:00:11,600 >> Hej alle, og velkommen til Android Apps (Nu med Jelly Beans!) Seminar. 5 00:00:11,600 --> 00:00:14,530 Det hedder Nu med Jelly Beans, selvfølgelig, fordi 6 00:00:14,530 --> 00:00:17,310 den nyeste version af OS kaldes Jelly Bean. 7 00:00:17,310 --> 00:00:22,950 Da jeg talte om Android sidste år og gjorde det stort set samme seminar 8 00:00:22,950 --> 00:00:29,150 Jeg præsentere design mønstre og stilistiske valg for Gingerbread, 9 00:00:29,150 --> 00:00:31,250 selvom Ice Cream Sandwich var kommet ud på det tidspunkt, 10 00:00:31,250 --> 00:00:33,680 og det er noget, vi vil tale om fremadrettet en lille smule. 11 00:00:33,680 --> 00:00:35,720 Android, selvfølgelig, har nogle problemer med fragmentering, 12 00:00:35,720 --> 00:00:40,240 så det nyeste Google-operativsystem er normalt 13 00:00:40,240 --> 00:00:44,710 ikke rigtig kommer til at blive udbredt blandt brugerne for potentielt op til et år, desværre. 14 00:00:44,710 --> 00:00:49,960 >> Men se bort fra, vi taler om masser af grunde 15 00:00:49,960 --> 00:00:53,000 Android er meget bedre end iOS. 16 00:00:53,000 --> 00:00:56,410 Okay, vi taler om Android versus iOS, 17 00:00:56,410 --> 00:00:59,770 nogle design paradigmer, hvordan du får sat op på bare ét dias, 18 00:00:59,770 --> 00:01:03,410 og den store forskel mellem denne og sidste år er, at jeg ønsker blot at 19 00:01:03,410 --> 00:01:06,860 zoom gennem nogle konceptuelle ting der arbejder med 20 00:01:06,860 --> 00:01:09,950 operativsystemet og derefter gå ind i en virkelig grundlæggende eksempel. 21 00:01:09,950 --> 00:01:13,730 I virkeligheden, bare det eksempel, at Google beskriver for at bygge din første app 22 00:01:13,730 --> 00:01:17,070 og vi vil gå igennem det sammen og bare beskrive. 23 00:01:17,070 --> 00:01:22,100 >> Jeg kender mange af jer har kun kodet i C, så Java allerede vil være 24 00:01:22,100 --> 00:01:27,220 et andet perspektiv, og på denne måde kan du få dine fødder våde 25 00:01:27,220 --> 00:01:31,540 og føle sig lidt mere fortrolig med det forhåbentlig. 26 00:01:31,540 --> 00:01:35,330 En hurtig oversigt, Android versus iOS. 27 00:01:35,330 --> 00:01:39,200 I Android er der denne ene gang udvikler gebyr på $ 25, 28 00:01:39,200 --> 00:01:42,390 ingen af ​​denne $ 100 om året ting. 29 00:01:42,390 --> 00:01:45,440 Der er ingen begrænsninger, hvilket betyder, at hvis jeg ønsker at indgive en app, 30 00:01:45,440 --> 00:01:51,560 Jeg bare sende det, og der er ingen godkendelsesproces, som om der er for iOS. 31 00:01:51,560 --> 00:01:53,890 Du kommer til at udvikle sig med Java ved hjælp af Eclipse, 32 00:01:53,890 --> 00:01:57,090 som er cross-platform, så det gør ikke noget, hvis du har en Mac, 33 00:01:57,090 --> 00:01:59,600 Windows eller nogle Linux maskine. 34 00:01:59,600 --> 00:02:03,730 Selvfølgelig, med iOS nødt til at bruge XCode på en Mac 35 00:02:03,730 --> 00:02:06,930 og Android bliver brugt af mange flere mennesker, 36 00:02:06,930 --> 00:02:11,580 så hvis du vil have din app til at have en form for synlighed eller måske 37 00:02:11,580 --> 00:02:14,110 tjene lidt penge fra reklamer 38 00:02:14,110 --> 00:02:17,450 du sandsynligvis mere tilbøjelige til at drage fordel af Android. 39 00:02:17,450 --> 00:02:20,630 >> Og én ting, der altid været kendt Android 40 00:02:20,630 --> 00:02:25,100 er den ekstreme mængde af tilpasning, mens iOS er meget fast i deres måder 41 00:02:25,100 --> 00:02:29,380 så de kan opretholde sikkerheden og kontrol over hver eneste lille aspekt 42 00:02:29,380 --> 00:02:34,180 af designet inden for deres OS og de enkelte apps. 43 00:02:34,180 --> 00:02:40,180 Android er meget fri form, og der er så mange flere muligheder. 44 00:02:40,180 --> 00:02:42,530 Okay, nogle design paradigmer. 45 00:02:42,530 --> 00:02:49,600 Bemærk her ligesom iOS har tablets og iPhones og iPod Touches 46 00:02:49,600 --> 00:02:53,840 de er nødt til at støtte, siger, ligesom et dusin enheder, hvis du ønsker at støtte 47 00:02:53,840 --> 00:02:55,450 historiske ting også. 48 00:02:55,450 --> 00:02:58,410 Med Android du nødt til at støtte hundredvis af enheder, 49 00:02:58,410 --> 00:03:01,240 så der er nogle ting, som Google har forsøgt at implementere 50 00:03:01,240 --> 00:03:04,970 at gøre brugeren opleve en lidt mere konsekvent, 51 00:03:04,970 --> 00:03:08,560 men vi vil også tale om, hvordan det betyder, at der er spørgsmål af fragmentering 52 00:03:08,560 --> 00:03:11,700 at du hele tiden er nødt til at være opmærksomme på at støtte. 53 00:03:11,700 --> 00:03:16,140 Fragmentering betyder, at der er mange forskellige operativsystemer, 54 00:03:16,140 --> 00:03:20,330 mange forskellige telefoner med forskellige hardware kører Android alle på samme tid, 55 00:03:20,330 --> 00:03:29,680 så denne graf her går tilbage til omkring 6 måneder. 56 00:03:29,680 --> 00:03:36,460 Ja, 6 måneder og du kan se, hvordan den mørkeste band 57 00:03:36,460 --> 00:03:39,330 på bunden er Jelly Bean, som kom ud i løbet af sommeren, 58 00:03:39,330 --> 00:03:42,970 og du kan se lige nu formentlig omkring 2% af de telefoner har det. 59 00:03:42,970 --> 00:03:45,520 >> Ice Cream Sandwich kom ud over et år siden, 60 00:03:45,520 --> 00:03:47,770 og en fjerdedel af de telefoner har det. 61 00:03:47,770 --> 00:03:53,910 Der er stadig en masse af telefoner, der bruger OS-version fra år siden. 62 00:03:53,910 --> 00:03:57,820 En ting, som Google har forsøgt at gøre for at gøre brugeroplevelsen 63 00:03:57,820 --> 00:04:01,400 en meget mere konsistent på tværs apps starter med Honeycomb, 64 00:04:01,400 --> 00:04:04,320 som er den tablet-version, så Ice Cream Sandwich og Jelly Bean, 65 00:04:04,320 --> 00:04:06,750 de er virkelig forsøger at understrege brugen af ​​denne aktion bar, 66 00:04:06,750 --> 00:04:10,430 hvilket er, hvad du kan se øverst her 67 00:04:10,430 --> 00:04:14,730 alt lige her, herunder denne lille knappen Indstillinger. 68 00:04:14,730 --> 00:04:16,079 Det er det design valg. 69 00:04:16,079 --> 00:04:18,000 Nu, når du ser de 3 prikker betyder det klikke på dette, 70 00:04:18,000 --> 00:04:21,880 og der vil være en drop-down menu, som har en slags indstillinger. 71 00:04:21,880 --> 00:04:28,900 Dette viser kun op, fordi jeg klikkede på denne knap. 72 00:04:28,900 --> 00:04:32,040 Det er noget, de prøver at bruge til at lave apps lidt mere konsistent 73 00:04:32,040 --> 00:04:39,210 over hele linjen, og så brugeren har en bedre fornemmelse af ensartet oplevelse. 74 00:04:39,210 --> 00:04:42,640 >> Okay, så hvis du ikke har gjort dette allerede, eller hvis du ser derhjemme 75 00:04:42,640 --> 00:04:50,210 så kan du følge disse trin for at oprette din kodning miljø. 76 00:04:50,210 --> 00:04:52,630 Det vil indebære at gå til hjemmesiden her. 77 00:04:52,630 --> 00:04:56,260 Du kan Google installere Android SDK 78 00:04:56,260 --> 00:04:59,130 og følger nogle beskrivelser der. 79 00:04:59,130 --> 00:05:01,310 De fortæller dig alt. 80 00:05:01,310 --> 00:05:05,160 De har du installerer SDK, hent Eclipse Classic versionen, 81 00:05:05,160 --> 00:05:07,450 selvom selvfølgelig, vi kodning i Java. 82 00:05:07,450 --> 00:05:12,190 De anbefale denne ene, og så er denne ADT, Android Development Tools, 83 00:05:12,190 --> 00:05:17,300 er et plugin, som du installerer i Eclipse som tillader dig at 84 00:05:17,300 --> 00:05:20,550 have en langt mere strømlinet erfaring med Android i Eclipse. 85 00:05:20,550 --> 00:05:24,070 Det vil give dig nogle grafiske brugergrænseflader 86 00:05:24,070 --> 00:05:29,610 for udformningen af ​​synspunkter, og det vil give dig meget mere støtte 87 00:05:29,610 --> 00:05:34,840 og evnen til at lancere med emulator og alt den slags ting. 88 00:05:34,840 --> 00:05:36,090 Ansøgning rammer. 89 00:05:36,090 --> 00:05:41,590 >> Jeg ønsker at tale om, hvordan projekterne inden Android er struktureret, 90 00:05:41,590 --> 00:05:44,830 og så vil vi gå ind i et hurtigt eksempel, og forhåbentlig 91 00:05:44,830 --> 00:05:48,820 kan du stille spørgsmål på noget tidspunkt, og føle sig godt tilpas i slutningen af ​​det. 92 00:05:48,820 --> 00:05:50,090 Vi har nogle jargon først. 93 00:05:50,090 --> 00:05:55,330 En aktivitet er som den skærm, du ser, når du starter en app. 94 00:05:55,330 --> 00:05:57,840 Hele oplevelsen er selve aktiviteten, 95 00:05:57,840 --> 00:06:00,790 så du kunne tænke på det som en skærm eller en visning, 96 00:06:00,790 --> 00:06:04,540 men det er faktisk kildekoden side af det. 97 00:06:04,540 --> 00:06:12,680 Vi har stadig kalder den faktiske grænseflade del af det en visning. 98 00:06:12,680 --> 00:06:17,230 Det er lidt ligesom, hvordan i Pset 7 havde vi controlleren og derefter visningen. 99 00:06:17,230 --> 00:06:20,690 Aktiviteten er mere eller mindre controlleren, 100 00:06:20,690 --> 00:06:23,360 og udsigten er, hvad vi laver i form af XML 101 00:06:23,360 --> 00:06:25,260 der er forbundet med denne aktivitet. 102 00:06:25,260 --> 00:06:29,340 Fragmenter er noget, der er implementeret i Ice Cream Sandwich fremadrettet. 103 00:06:29,340 --> 00:06:36,380 Det er bare en idé om at tage dele af visningen eller aktiviteten 104 00:06:36,380 --> 00:06:39,990 og opdele dem i separate områder, så vi kan 105 00:06:39,990 --> 00:06:45,030 gøre vores kode mere anvendelige for disse mange forskellige enheder 106 00:06:45,030 --> 00:06:51,890 at vi er nødt til at støtte, og det er bare en måde at forsøge at 107 00:06:51,890 --> 00:06:54,290 også faktor mere kode. 108 00:06:54,290 --> 00:07:01,090 Services er baggrunden ting som spiller musik eller vejvisningsinformationer potentielt. 109 00:07:01,090 --> 00:07:05,640 Indholdsleverandører, disse er API'er inden operativsystemet 110 00:07:05,640 --> 00:07:09,070 der tillader dig at få adgang til delte data såsom kontaktoplysninger, 111 00:07:09,070 --> 00:07:12,790 og derefter en hensigtserklæring er noget, vi vil bruge, når vi ønsker at starte 112 00:07:12,790 --> 00:07:17,210 en ny aktivitet fra vores aktuelle aktivitet. 113 00:07:17,210 --> 00:07:20,980 >> Hej Android, vil dette være et projekt, som vi vil tale om. 114 00:07:20,980 --> 00:07:25,410 Jeg vil faktisk gøre det for dig, og så vil vi gøre en ting, hvor vi klikker på en knap 115 00:07:25,410 --> 00:07:27,650 med noget tekst og lancere en ny aktivitet. 116 00:07:27,650 --> 00:07:30,110 Meget ligetil, men jeg ønsker at gå igennem 117 00:07:30,110 --> 00:07:34,480 hvad der vil gå ind i et projekt som dette. 118 00:07:34,480 --> 00:07:39,260 Når du laver det nye projekt, du vil se inden for Eclipse 119 00:07:39,260 --> 00:07:41,900 der er denne projekt kaldet Hello Android. 120 00:07:41,900 --> 00:07:43,470 Så er der en hel masse mapper her. 121 00:07:43,470 --> 00:07:46,760 Dem, du er virkelig beskæftiger sig med er kilden mappen 122 00:07:46,760 --> 00:07:54,540 ressource mappe RES, og til en vis grad libs mappe til biblioteker. 123 00:07:54,540 --> 00:08:00,070 Og bare så vi er på samme side med at 124 00:08:00,070 --> 00:08:03,240 hvis du skulle oprette et nyt projekt, 125 00:08:03,240 --> 00:08:08,270 du kan gøre dette her, så hvis jeg vil kalde det HelloAndroid, 126 00:08:08,270 --> 00:08:11,100 og så er det automatisk gør en hel masse af oplysningerne til os. 127 00:08:11,100 --> 00:08:14,110 Pakken Navnet formodes at være en entydig identifikator 128 00:08:14,110 --> 00:08:16,710 , der normalt ville være forbundet med hjemmesiden, hvis du havde en. 129 00:08:16,710 --> 00:08:24,430 >> For eksempel vil jeg kalde denne net.cs50.helloandroid. 130 00:08:24,430 --> 00:08:30,070 Og jeg har allerede gjort dette projekt en gang. 131 00:08:30,070 --> 00:08:40,059 Okay, undskyld. Lad os kalde det HelloCS50. 132 00:08:40,059 --> 00:08:42,929 Og så vil det bede ting som hvilken slags ikon vi ønsker at gøre. 133 00:08:42,929 --> 00:08:48,840 Det er alt sammen på grund af Android Developer Tools interface, 134 00:08:48,840 --> 00:08:53,350 plugin, som vi føjet til Eclipse, så vi kan vælge ting som 135 00:08:53,350 --> 00:08:58,320 hvilken ikon, vi ønsker, og det ville gå ind i denne dybde, hvis vi vil. 136 00:08:58,320 --> 00:09:04,360 Men i sidste ende, gør bare projektet 137 00:09:04,360 --> 00:09:07,040 og alt viser sig lige her. 138 00:09:07,040 --> 00:09:10,030 Da jeg viste på den anden skærm, 139 00:09:10,030 --> 00:09:14,070 vi har kilden mappe, og jeg vil tale om, hvad alt dette betyder snart, 140 00:09:14,070 --> 00:09:19,090 men du kan se, at det samme, det tager os til HelloCS50 skærm. 141 00:09:19,090 --> 00:09:24,690 Der er nogle knapper herovre til at tilføje tekst og tekst-felt layouts. 142 00:09:24,690 --> 00:09:28,910 Det er lidt ligesom XCode, men desværre ikke helt så strømlinet. 143 00:09:28,910 --> 00:09:37,790 Men klippene vil være din ven og ADT især for at gøre dette. 144 00:09:37,790 --> 00:09:40,920 >> Okay, kilden mappen er hvor 145 00:09:40,920 --> 00:09:43,820 Java filer tilbageholdes, og det er faktisk lanceringen af ​​dit program. 146 00:09:43,820 --> 00:09:45,990 Det er dybest set ligesom controllere. 147 00:09:45,990 --> 00:09:49,020 Den ressource mappe eller RES er, hvor vi vil holde skærmlayouts, 148 00:09:49,020 --> 00:09:54,110 billeder, lyd, tekst, animation og alt andet, libs, naturligvis, biblioteker. 149 00:09:54,110 --> 00:10:01,700 Og Manifest, det er den måde, at Android-systemet kender 150 00:10:01,700 --> 00:10:03,130 hvordan man interagerer med din app. 151 00:10:03,130 --> 00:10:07,980 Det fortæller det om tilladelser, og hvilke aktiviteter der rent faktisk vil blive kørt. 152 00:10:07,980 --> 00:10:12,350 Det er alle de væsentlige oplysninger, der er nødvendige for at køre din app. 153 00:10:12,350 --> 00:10:17,990 Kilden mappe-Hvis vi udvider det, som du kan se lige her. 154 00:10:17,990 --> 00:10:23,920 Og et eksempel på, at en kode ville se-dette er standard kode. 155 00:10:23,920 --> 00:10:27,930 Som vi kaldte det, MainActivity. 156 00:10:27,930 --> 00:10:33,230 Som standard får vi onCreate, som er en funktion, der hedder, når denne aktivitet belastninger, 157 00:10:33,230 --> 00:10:37,150 så du ønsker at kalde onCreate (savedInstanceState). 158 00:10:37,150 --> 00:10:40,440 Dette vil gendanne eventuelle stumper af information 159 00:10:40,440 --> 00:10:44,910 i tilfælde af app blev sat på pause. 160 00:10:44,910 --> 00:10:48,790 >> Der er en hel aktivitet livscyklus diagram, som du kan se på 161 00:10:48,790 --> 00:10:50,380 når du får lidt mere i dybden i det, 162 00:10:50,380 --> 00:10:56,210 men det vigtigste linje kode der er denne setContentView funktion 163 00:10:56,210 --> 00:11:00,290 hvilket vil indlæse ressource-filen for layout. 164 00:11:00,290 --> 00:11:03,590 Så hvad onCreate her er dybest set gør, er det siger 165 00:11:03,590 --> 00:11:07,010 når jeg opretter denne aktivitet vil jeg indlæse denne layout. 166 00:11:07,010 --> 00:11:12,030 Og vi vil tale om, hvad dette layout er i en anden. 167 00:11:12,030 --> 00:11:16,230 Hvis vi skulle starte, at det her ser ud præcis som dette, 168 00:11:16,230 --> 00:11:22,880 og som standard, fordi vi har Eclipse gør dette, og ADT gør det for os 169 00:11:22,880 --> 00:11:28,210 det er alt standardtekst kode, der er skabt for os, 170 00:11:28,210 --> 00:11:34,630 og vi kan komme videre og ændre tingene, som vi kan lide. 171 00:11:34,630 --> 00:11:38,190 Den ressource mappe som jeg sagde, det er her vi holder alle layout, 172 00:11:38,190 --> 00:11:41,150 drawables i form af enhver slags billeder- 173 00:11:41,150 --> 00:11:46,360 de kaldes drawables-og derefter lydfiler, menuer. 174 00:11:46,360 --> 00:11:51,170 Det er en måde en hel bunke af XML i et dejligt sorteres mode. 175 00:11:51,170 --> 00:11:58,030 Som du kan se, er der. Hdpi, ldpi, mdpi og xhdpi mapper med drawables. 176 00:11:58,030 --> 00:12:02,220 Disse er forskellige skærm tætheder, så høj tæthed pixel per inch, 177 00:12:02,220 --> 00:12:05,710 lav densitet, medium densitet, ekstra høj densitet. 178 00:12:05,710 --> 00:12:08,900 >> Dette er igen, så vi kan støtte alle disse forskellige enheder, 179 00:12:08,900 --> 00:12:15,100 og ideelt set, vil du have forskellige billeder for hver anden opløsning. 180 00:12:15,100 --> 00:12:20,740 Layout er, hvor vi inkluderer alle de forskellige layouts, der vil blive anvendt i forskellige aktiviteter. 181 00:12:20,740 --> 00:12:24,150 De kunne også omfatte layouts til fragmenter, 182 00:12:24,150 --> 00:12:26,670 hvilket betyder delvise aktiviteter dybest set. 183 00:12:26,670 --> 00:12:29,610 Hvis du ønsker at gøre noget cool som når du roterer telefonen 184 00:12:29,610 --> 00:12:33,900 du vil have det til at have et andet layout, du kan gøre layout-landskabet som en anden mappe, 185 00:12:33,900 --> 00:12:39,000 og Android automatisk har en hel flok af disse regler inden den ressource mappen 186 00:12:39,000 --> 00:12:44,690 så det vil vide at se på forskellige mapper baseret på den aktuelle opsætning af telefonen, 187 00:12:44,690 --> 00:12:46,740 hvad slags hardware du bruger. 188 00:12:46,740 --> 00:12:52,350 Ligeledes denne værdibaserede v11 her og værdibaseret V14 189 00:12:52,350 --> 00:12:55,460 og standardværdierne mappen det er for- 190 00:12:55,460 --> 00:13:01,730 godt, værdier af sig selv, vil dette være standard værdier på tværs af alle versioner af styresystemet. 191 00:13:01,730 --> 00:13:06,390 På den anden side svarer v11 og v14 med Honeycomb 192 00:13:06,390 --> 00:13:08,780 og Ice Cream Sandwich, hhv. 193 00:13:08,780 --> 00:13:12,800 Igen, disse er måder,-inden for disse mapper er forskellige strenge 194 00:13:12,800 --> 00:13:17,550 og stilarter, så du kan tilpasse udseendet af din app 195 00:13:17,550 --> 00:13:22,660 eller potentielt endda sin funktionalitet, selvom det nok ville være en dårlig idé, 196 00:13:22,660 --> 00:13:25,890 baseret på den version af operativsystemet. 197 00:13:25,890 --> 00:13:28,760 >> Og jeg talte om alt dette her. 198 00:13:28,760 --> 00:13:35,870 Igen, trækbare, rå, layout, værdier. 199 00:13:35,870 --> 00:13:41,380 Standardindstillingerne, hvis vi går ind i Hello Android eller Hello CS50 lige nu 200 00:13:41,380 --> 00:13:43,310 det vil se lige sådan ud. 201 00:13:43,310 --> 00:13:45,800 Det vil sige hej verden. 202 00:13:45,800 --> 00:13:58,430 Som du kan se lige her med Android tekst 203 00:13:58,430 --> 00:14:04,420 tekst til denne tekst synspunkt, som er dybest set bare en etiket, 204 00:14:04,420 --> 00:14:06,900 er, hvad vi vil kalde det i iOS. 205 00:14:06,900 --> 00:14:11,580 Det har denne sjove notation @ string / hello_world. 206 00:14:11,580 --> 00:14:16,200 Det er så vi kan-vi forsøger at udtrække alle strengene, 207 00:14:16,200 --> 00:14:19,740 alle de fastkodede strenge i Android i en separat mappe, 208 00:14:19,740 --> 00:14:23,610 hvilket sker for at være i values.strings. 209 00:14:23,610 --> 00:14:29,300 Hvis vi ser her, kan vi se, at vi har en hård-kodet streng gemt her 210 00:14:29,300 --> 00:14:33,910 for hello world, og det hedder hello verden, og det er en slags 211 00:14:33,910 --> 00:14:39,230 fælles design beslutning på tværs af mange platforme, som du vil til- 212 00:14:39,230 --> 00:14:41,780 strenge er den slags ting, som vi ønsker at potentielt kunne ændre. 213 00:14:41,780 --> 00:14:48,050 Vi ønsker ikke at styre F i vores kildekode fil i vores XML. 214 00:14:48,050 --> 00:14:50,760 Vi ønsker at være i stand til at ændre dette, når vi får chancen. 215 00:14:50,760 --> 00:14:53,640 >> Denne XML-fil, strings.xml, er en måde at udvinde 216 00:14:53,640 --> 00:14:56,710 fastkodede strenge, der ellers ville være i vores layout ressourcer 217 00:14:56,710 --> 00:15:03,530 eller i vores kildekode. 218 00:15:03,530 --> 00:15:08,190 Manifestet er, hvor vi holder dette væsentlige oplysninger om programmet. 219 00:15:08,190 --> 00:15:11,050 Det omfatter pakken navn. Det må være en entydig identifikator. 220 00:15:11,050 --> 00:15:16,020 I modsætning til App Store til iOS navnene på de programmer 221 00:15:16,020 --> 00:15:19,980 behøver ikke at være unikke, og du kan faktisk ændre navnet på din ansøgning 222 00:15:19,980 --> 00:15:23,570 efter at du sender den, så hvis jeg starter ud med Angry Birds, 223 00:15:23,570 --> 00:15:26,840 og så vil jeg gøre en opdatering, og jeg ønsker ikke at frigive en ny version 224 00:15:26,840 --> 00:15:34,230 Jeg gætte, jeg kunne kalde det Angry Birds 2, mens jeg er på samme release cyklus. 225 00:15:34,230 --> 00:15:36,780 Det ville bare vise sig som en opdatering. 226 00:15:36,780 --> 00:15:39,790 Det eneste, der skal være unikke er denne pakke navn, 227 00:15:39,790 --> 00:15:41,280 som ikke mange mennesker vil se. 228 00:15:41,280 --> 00:15:44,680 Nå, ville du kun se, hvis du var på udkig på kildekoden, eller hvis der er en slags fejl. 229 00:15:44,680 --> 00:15:47,580 Komponenterne omfatter aktiviteter, så vi er nødt til at erklære 230 00:15:47,580 --> 00:15:49,070 enhver form for aktivitet, som vi bruger. 231 00:15:49,070 --> 00:15:53,430 Dette er en tilladelse slags ting. 232 00:15:53,460 --> 00:15:58,150 >> Fordi Android ikke har denne streng ansøgningsproces 233 00:15:58,150 --> 00:16:02,210 for indsendelse af apps i stedet de bare alt baseret ud af tilladelser 234 00:16:02,210 --> 00:16:04,300 og erklære ting i manifestet. 235 00:16:04,300 --> 00:16:06,380 SDK version er også vigtigt. 236 00:16:06,380 --> 00:16:10,330 Vi kan sætte brug som SDK minimumsversion noget. 237 00:16:10,330 --> 00:16:16,010 Det er klart, du ønsker at oprette kode 238 00:16:16,010 --> 00:16:18,570 og design for de nyere operativsystemer. 239 00:16:18,570 --> 00:16:20,840 Måske ikke den nyeste, måske ikke Jelly Bean. 240 00:16:20,840 --> 00:16:23,610 Måske du ønsker at designe primært til Ice Cream Sandwich, 241 00:16:23,610 --> 00:16:27,120 selv om de er temmelig ens i form af design beslutninger 242 00:16:27,120 --> 00:16:30,550 og de faktiske biblioteker og API'er. 243 00:16:30,550 --> 00:16:36,250 Men snarere end at have folk 244 00:16:36,250 --> 00:16:40,050 af den oprindelige Android version-lignende Donut vej tilbage, når- 245 00:16:40,050 --> 00:16:43,420 som stadig tilfældigvis bruger, der forsøger at hente din ansøgning og derefter sige 246 00:16:43,420 --> 00:16:46,160 det virker ikke på min telefon, kan du indstille den mindste udgave 247 00:16:46,160 --> 00:16:48,620 , og har være Gingerbread eller Ice Cream Sandwich 248 00:16:48,620 --> 00:16:53,300 eller hvad du føler dig tryg indsendelse. 249 00:16:53,300 --> 00:16:57,170 Og dette er et eksempel på manifest. Vi kan se på de faktiske én i en bit. 250 00:16:57,170 --> 00:17:00,900 >> Okay, vi bare gå videre med demoen nu. 251 00:17:00,900 --> 00:17:08,900 Det er den demo, hvis du Google Android bygge din første app eller noget lignende. 252 00:17:08,900 --> 00:17:12,089 Vi vil gå gennem alt, hvad der foregår derinde, 253 00:17:12,089 --> 00:17:17,690 og undskyld, bare for en reference, der her kender Java på nogen måde? 254 00:17:17,690 --> 00:17:28,310 Okay, så Java er nyt kodesprog for de fleste mennesker, der kommer ud af CS50. 255 00:17:28,310 --> 00:17:31,850 Kort fortalt at gå over igen, hvad der står her, 256 00:17:31,850 --> 00:17:35,580 hvad vi ønsker at gøre, er i stedet justere denne hello world program 257 00:17:35,580 --> 00:17:38,620 at alt det gør, er det lancerer, og det siger hej verden 258 00:17:38,620 --> 00:17:43,580 og det siger goddag CS50 foroven, fordi det er den aktivitet, navn 259 00:17:43,580 --> 00:17:47,190 vi kommer til at forsøge at lave et tekstfelt og en knap 260 00:17:47,190 --> 00:17:50,680 så når vi trykker på denne knap, det vil tage teksten 261 00:17:50,680 --> 00:17:53,660 fra tekstfeltet og starte en ny aktivitet, og det vil sige 262 00:17:53,660 --> 00:17:58,380 uanset hvad denne tekst siger i aktiviteten, og det er forholdsvis enkel. 263 00:17:58,380 --> 00:18:00,650 Det er ikke meget interessant. Du ville ikke ønsker at frigive enhver app som dette. 264 00:18:00,650 --> 00:18:03,880 Men det viser nogle vigtige design ting. 265 00:18:03,880 --> 00:18:07,030 >> Vi bliver nødt til at interagere med Manifest, med layoutfiler, 266 00:18:07,030 --> 00:18:12,440 med kildekoden, og du kan se, hvordan at lancere én aktivitet fra en anden. 267 00:18:19,740 --> 00:18:23,060 Vi begynder med layout til vores første aktivitet 268 00:18:23,060 --> 00:18:27,320 som jeg ved, det er slags små, 269 00:18:27,320 --> 00:18:32,660 men som du kan se lige nu, er alt det er det har vores logo, som vi skabte, 270 00:18:32,660 --> 00:18:36,310 aktiviteten navn, og det siger hej verden i midten. 271 00:18:36,310 --> 00:18:40,400 I stedet, jeg først kommer til at gøre dette til en lineær layout, 272 00:18:40,400 --> 00:18:42,350 en relativ layout, og disse er alle ting 273 00:18:42,350 --> 00:18:45,870 du kunne se op og er værd at gå over på et tidspunkt i forhold til de layouts. 274 00:18:45,870 --> 00:18:47,310 Det er meget ligesom HTML. 275 00:18:47,310 --> 00:18:52,640 Vi sagde det er ikke rigtig værd at vide i form af en programmatisk forstand, 276 00:18:52,640 --> 00:18:55,840 men der er så mange forskellige layouts du kan kontrollere, 277 00:18:55,840 --> 00:18:57,970 og det er ligesom CSS i form af stilarter. 278 00:18:57,970 --> 00:19:01,590 >> Der er en masse i gang bare i form af æstetik her, 279 00:19:01,590 --> 00:19:08,930 og ja, det er værd at lære, men det er den slags ting, du bør kigge op 280 00:19:08,930 --> 00:19:11,810 som du går, og du føler at du har brug for noget nyt. 281 00:19:11,810 --> 00:19:17,030 Jeg kan drage fordel af nogle af de ADT værktøjer her mindst til at starte med. 282 00:19:17,030 --> 00:19:21,930 Jeg vil gøre et tekstfelt, og jeg vil gøre en knap. 283 00:19:21,930 --> 00:19:24,100 Sæt dem lige ved siden af ​​hinanden. 284 00:19:24,100 --> 00:19:28,200 De har allerede resize korrekt. 285 00:19:28,200 --> 00:19:31,320 Desværre, igen kommer tilbage til forskellen mellem lineære layout og relativ layout, 286 00:19:31,320 --> 00:19:34,830 en lineær layout giver lidt mere funktionalitet 287 00:19:34,830 --> 00:19:38,720 i form af indvendig plads og sikre 288 00:19:38,720 --> 00:19:42,790 vi stilling tingene vandret eller lodret. 289 00:19:42,790 --> 00:19:46,130 Den store forskel mellem en lineær layout og en relativ layout 290 00:19:46,130 --> 00:19:50,250 er den relative layout positioner alt i forhold til andre synspunkter, 291 00:19:50,250 --> 00:19:52,630 og det gode ved det er, at det tager mindre tid til at tegne 292 00:19:52,630 --> 00:19:56,120 fordi operativsystemet ser på al koden og siger det går 293 00:19:56,120 --> 00:19:58,270 relativt til denne her, her. 294 00:19:58,270 --> 00:20:03,170 Det betyder, at det gør færre målinger end en hel masse af indlejrede lineære layouts, 295 00:20:03,170 --> 00:20:06,840 som jeg ville have til at gøre, hvis jeg ønskede ting til at gå lodret her. 296 00:20:06,840 --> 00:20:10,510 >> Jeg allerede har nogle ting går vandret, så jeg ville have en anden lineær layout 297 00:20:10,510 --> 00:20:14,560 at reden dem lodret, men hvis jeg gjorde en relativ layout jeg kunne sige 298 00:20:14,560 --> 00:20:18,140 holde dette til venstre, dette til højre og disse ting nedenfor. 299 00:20:18,140 --> 00:20:21,850 Men fordi jeg vil have dem til at fylde lige nu er jeg kommer til at bruge en lineær layout, 300 00:20:21,850 --> 00:20:24,510 og du kan se det allerede gør en masse af disse ting for os. 301 00:20:24,510 --> 00:20:28,890 Alle synspunkter skal have en egenskab af bredde og højde, 302 00:20:28,890 --> 00:20:33,410 og dette sker for at have en vægt på 1, og dette har en vægt på 1 303 00:20:33,410 --> 00:20:36,050 så det fylder hele rummet. 304 00:20:36,050 --> 00:20:38,460 Men bredden og højden er vigtigst. 305 00:20:38,460 --> 00:20:45,880 Dette ID-felt lige her er ikke vigtigt inden den faktiske layout 306 00:20:45,880 --> 00:20:49,060 medmindre vi bruger en relativ layout og siger, at vi kan referere 307 00:20:49,060 --> 00:20:52,990 én visning position i forhold til en anden. 308 00:20:52,990 --> 00:20:56,170 Hvis vi havde en relativ layout vi kunne sige position dette nedenfor denne ene 309 00:20:56,170 --> 00:20:59,390 eller over denne id, men dette id vil være vigtigt 310 00:20:59,390 --> 00:21:01,660 når vi bruger det i vores kode, fordi vi kan referere 311 00:21:01,660 --> 00:21:05,610 disse individuelle synspunkter på denne måde. 312 00:21:05,610 --> 00:21:10,350 >> Og så kan du se koden requestFocus, hvilket er noget du sikkert har set i Pset 7.. 313 00:21:10,350 --> 00:21:15,370 Der var en autofokus tag eller noget langs disse linjer for et af felterne. 314 00:21:15,370 --> 00:21:22,100 Og én ting, selvfølgelig, vi kan gøre ligesom i HTML, 315 00:21:22,100 --> 00:21:25,660 og bemærk en af ​​de gode ting ved ADT er, at det autocompletes her. 316 00:21:25,660 --> 00:21:29,930 Måske ikke så pænt som den gjorde i XCode, men det gør ikke desto mindre, 317 00:21:29,930 --> 00:21:32,860 og vi kunne sige vink og derefter give det en slags snor 318 00:21:32,860 --> 00:21:37,070 gerne skrive en besked, 319 00:21:37,070 --> 00:21:41,300 og hvis jeg giver det et øjeblik, også bemærke, at jeg får en lille fejl her 320 00:21:41,300 --> 00:21:44,610 siger, at vi skal bruge en streng ressource for dette, 321 00:21:44,610 --> 00:21:48,820 så hvis jeg lod det gøre noget af det hårde arbejde for mig 322 00:21:48,820 --> 00:21:57,320 Jeg kan vælge denne streng, gør refractor Android og ekstrakt Android streng. 323 00:21:57,320 --> 00:22:00,570 Jeg kan give det, at navn, skrive en besked, 324 00:22:00,570 --> 00:22:04,180 og hvad det gjorde nu det erstattet, at hårdt-kodet streng 325 00:22:04,180 --> 00:22:07,980 med en henvisning til strengen i strengen. xml, 326 00:22:07,980 --> 00:22:10,200 hvilket betyder nu er her. 327 00:22:10,200 --> 00:22:15,560 >> Og jeg ved, at virker lidt triviel og ligesom ekstra arbejde på dette punkt, 328 00:22:15,560 --> 00:22:17,840 men når du har en hel masse ting, en hel flok af strygere, 329 00:22:17,840 --> 00:22:20,750 det er virkelig vigtigt, og især for lokalisering 330 00:22:20,750 --> 00:22:26,920 fordi som jeg nævnte tidligere, Android er et meget globalt brugt operativsystem 331 00:22:26,920 --> 00:22:35,950 at du blot kan gøre værdier-en eller værdier-sp 332 00:22:35,950 --> 00:22:44,320 eller noget til engelsk eller spansk eller andre sprog. 333 00:22:44,320 --> 00:22:50,210 Og så har du sandsynligvis ikke har haft denne oplevelse endnu 334 00:22:50,210 --> 00:22:53,030 da vi ikke gøre meget JavaScript i form af web-programmering, 335 00:22:53,030 --> 00:22:56,850 men vi kan også gøre dette felt kaldet onClick til den knap, 336 00:22:56,850 --> 00:23:02,350 og dette er en måde at henvisninger i vores layout 337 00:23:02,350 --> 00:23:06,570 at vi ønsker en bestemt funktion til at blive kaldt i vores kildekode. 338 00:23:06,570 --> 00:23:09,420 Jeg har tænkt mig at kalde denne SendMessage, 339 00:23:09,420 --> 00:23:13,390 og for at gøre dette arbejde, der betyder i den vigtigste aktivitet her 340 00:23:13,390 --> 00:23:19,180 Jeg bliver nødt til at oprette en funktion, der er offentlig 341 00:23:19,180 --> 00:23:22,250 så det kan tilgås af layoutet. 342 00:23:22,250 --> 00:23:25,930 Det er ugyldig, fordi du bare ikke ønsker det at vende noget. 343 00:23:25,930 --> 00:23:37,760 Vi kalder det SendMessage, og det tager en visning, 344 00:23:37,760 --> 00:23:43,690 som er en slags sammenhæng, vi kan forankre denne metode 345 00:23:43,690 --> 00:23:47,160 til, at de enkelte visning, når vi kører det. 346 00:23:47,160 --> 00:23:50,090 >> Og jeg ved ikke, om du har bemærket, godt, ville du ikke har bemærket, 347 00:23:50,090 --> 00:24:02,370 men på dette tidspunkt lige her 348 00:24:02,370 --> 00:24:06,930 dette synspunkt er en type, der endnu ikke er blevet medtaget, 349 00:24:06,930 --> 00:24:10,630 og selvfølgelig, alt hvad du kender fra CS50 om ikke herunder typer. 350 00:24:10,630 --> 00:24:13,120 Det gode ved IDE er ligesom Eclipse er, at 351 00:24:13,120 --> 00:24:17,520 hvis du glemmer at medtage en type det vil understrege med en lille rød bølget 352 00:24:17,520 --> 00:24:19,680 og derefter give dig mulighed for at importere visningen. 353 00:24:19,680 --> 00:24:23,130 En hurtig måde at gøre det er kontrol skift O, og det vil importere 354 00:24:23,130 --> 00:24:27,070 alle de filer, den har brug for. 355 00:24:27,070 --> 00:24:33,670 Nu hvor vi har denne funktion SendMessage, 356 00:24:33,670 --> 00:24:46,560 som kommer til at sende besked fra MainActivity til en ny aktivitet, 357 00:24:46,560 --> 00:24:55,230 Vi bliver nødt til at bruge en hensigt om at lancere den nye aktivitet fra denne ene, 358 00:24:55,230 --> 00:25:02,240 så vi vil sikkert gerne skabe en global konstant eller også særligt en offentlig konstant 359 00:25:02,240 --> 00:25:06,240 som vil hjælpe os vide, hvordan vi kommer til at referere strengen 360 00:25:06,240 --> 00:25:09,090 fordi når vi skaber en hensigt vi ikke bare kalde en ny aktivitet, 361 00:25:09,090 --> 00:25:11,520 men vi kan også give det et bundt af oplysninger. 362 00:25:11,520 --> 00:25:14,720 Et bundt er faktisk det udtryk, Android bruger, 363 00:25:14,720 --> 00:25:21,470 og det er en måde at sige give det ekstra data, som den ikke kan være af en meget sofistikeret datatype, 364 00:25:21,470 --> 00:25:24,510 men vi kan helt sikkert indeholde Booleans eller strenge eller Ints. 365 00:25:24,510 --> 00:25:29,750 Den slags ting. 366 00:25:29,750 --> 00:25:34,230 >> Du er velkommen til at spørge om nogen af ​​disse kvalifikationskampe her, 367 00:25:34,230 --> 00:25:36,900 offentligheden, endelig, statisk. 368 00:25:36,900 --> 00:25:38,610 Offentligheden er den vigtigste. 369 00:25:38,610 --> 00:25:47,090 Det betyder, at vi kan få adgang til denne variabel fra andre kildekode filer 370 00:25:47,090 --> 00:25:49,590 såsom når vi opretter en ny aktivitet. 371 00:25:49,590 --> 00:25:52,190 Vi kan henvise til strengen inden for denne fil. 372 00:25:52,190 --> 00:25:57,160 Hvis det er privat, det betyder det er begrænset til denne person filen her. 373 00:25:57,160 --> 00:26:02,430 Men vi vil kalde det noget som ekstra budskab. 374 00:26:16,260 --> 00:26:23,300 Nu har vi lavet denne funktion, og hvis vi klikker på knappen, vil denne funktion blive kaldt. 375 00:26:23,300 --> 00:26:27,970 Men vi har ikke gjort noget, naturligvis, med den funktion. 376 00:26:27,970 --> 00:26:33,130 Hvad vi ønsker at gøre nu, er at oprette en ny aktivitet, 377 00:26:33,130 --> 00:26:35,350 den aktivitet, der rent faktisk vil blive lanceret. 378 00:26:35,350 --> 00:26:44,330 I Eclipse kan vi sige nye, Android aktivitet blank aktivitet. 379 00:26:44,330 --> 00:26:46,530 Vi kan give den et navn. 380 00:26:46,530 --> 00:26:57,050 Lad os kalde det vores resultat aktivitet. 381 00:26:57,050 --> 00:27:04,430 Og så er denne hierarkiske overordnede felt er en måde at angive 382 00:27:04,430 --> 00:27:08,180 hvordan aktiviteterne er relateret til hinanden. 383 00:27:08,180 --> 00:27:11,020 Fordi dette vil blive lanceret fra den anden aktivitet 384 00:27:11,020 --> 00:27:27,520 Vi bør præcisere, at det har den forælder hovedaktivitet. 385 00:27:27,520 --> 00:27:31,220 >> Og jeg kunne have klikket på det næste felt der, som ville have fortalt os 386 00:27:31,220 --> 00:27:33,830 nogle valgfrie felter også at det er inklusive, 387 00:27:33,830 --> 00:27:38,800 men nice ting om ADT, igen, er, at hvis jeg rulle ned her 388 00:27:38,800 --> 00:27:45,740 i Manifest huske, at alt dette virkelig var medtaget som standard 389 00:27:45,740 --> 00:27:48,930 når vi oprindeligt skabt projektet 390 00:27:48,930 --> 00:27:53,090 og nu, fordi vi brugte det skabe en ny aktivitet snarere end blot 391 00:27:53,090 --> 00:27:58,610 at tilføje vores egen klasse fil, fordi vi gik gennem deres GUI til at gøre dette 392 00:27:58,610 --> 00:28:01,930 det allerede tilføjet alt dette til Manifest for os, 393 00:28:01,930 --> 00:28:06,020 hvilket netop betyder, at nu at operativsystemet ikke vil klage 394 00:28:06,020 --> 00:28:09,400 når vi forsøger at starte denne aktivitet. 395 00:28:09,400 --> 00:28:14,620 Og det naturligvis også, gav det en etiket, som også viser sig i strenge. 396 00:28:14,620 --> 00:28:17,340 Det gør en masse ting på bagsiden ende for os. 397 00:28:17,340 --> 00:28:20,140 Anyway, nu hvor vi har dette resultat aktivitet så godt, 398 00:28:20,140 --> 00:28:23,810 selve kildekoden fil i source mappen 399 00:28:23,810 --> 00:28:33,540 og du kan se til kort berøre dette- 400 00:28:33,540 --> 00:28:37,790 fordi vi fortalte det om denne hierarkiske forælder 401 00:28:37,790 --> 00:28:46,640 det gav dette felt android.r.ide.home i denne onOption valgte ting. 402 00:28:46,640 --> 00:28:49,020 >> Hvad det er dybest set siger, er at der er en menu-knap nu 403 00:28:49,020 --> 00:28:53,110 at i det øverste venstre hjørne af skærmen 404 00:28:53,110 --> 00:29:02,220 hvis jeg går tilbage til PowerPoint, hvor vi først talte om handling bar 405 00:29:02,220 --> 00:29:05,380 på grund af den hierarkiske forælder nu er der en lille pil tilbage her 406 00:29:05,380 --> 00:29:10,610 og dette er klikbare, så vi bør være i stand til-efter vi faktisk køre denne app- 407 00:29:10,610 --> 00:29:15,360 gå tilbage, og det er en måde at spare os en lille smule kode der. 408 00:29:26,220 --> 00:29:40,180 Nu inden for denne-godt, synes det at være at klage over, at der for et øjeblik. 409 00:29:40,180 --> 00:29:43,910 Lad os kommentere, at ud. 410 00:29:43,910 --> 00:29:48,260 Nu, med henblik på faktisk interagerer med disse 2 aktiviteter 411 00:29:48,260 --> 00:29:55,020 vi er nødt til at oprette en hensigt, som omfatter alle disse data. 412 00:29:55,020 --> 00:29:58,950 I SendMessage nu vil jeg til at cruise gennem nogle stumper af kode 413 00:29:58,950 --> 00:30:00,700 og forklare, at da jeg går. 414 00:30:00,700 --> 00:30:06,280 Et forsæt, som jeg sagde, er en måde at starte en aktivitet fra en anden. 415 00:30:06,280 --> 00:30:10,000 Intent er den type. Vi skaber en variabel myIntent. 416 00:30:10,000 --> 00:30:13,980 >> Og det er faktisk en genstand, hvilket er hvorfor vi er nødt til at kalde nye. 417 00:30:13,980 --> 00:30:18,500 Det er almindeligt Java skik der, som kan tage en lille smule af at vænne sig til. 418 00:30:18,500 --> 00:30:23,900 Det betyder, at vi bruger den aktivitet eller klassen MainActivity, 419 00:30:23,900 --> 00:30:28,630 og hensigten på denne måde tager den aktivitet, det går fra 420 00:30:28,630 --> 00:30:36,060 og aktiviteten det kommer til, som vi kalder ResultActivity, 421 00:30:36,060 --> 00:30:38,170 og det er sin egen klasse. 422 00:30:38,170 --> 00:30:41,720 Medtag det. 423 00:30:41,720 --> 00:30:47,370 Og derefter som jeg nævnte før, gav vi dette ID til Rediger tekstfelt 424 00:30:47,370 --> 00:30:53,710 og teksten visning, så for at programmeringsmæssigt fange 425 00:30:53,710 --> 00:31:01,860 den tekst, der findes i RedigérTekst 426 00:31:01,860 --> 00:31:06,710 Vi bruger denne funktion kaldes findViewByID, 427 00:31:06,710 --> 00:31:13,660 som ligner noget, som du skal bruge, når de forsøger at få felter fra DOM. 428 00:31:13,660 --> 00:31:17,560 Måske David taler om dette i foredraget. 429 00:31:17,560 --> 00:31:26,600 Men det er bare en måde at få dem-det er derfor vi tagge disse ting med disse områder. 430 00:31:26,600 --> 00:31:31,110 Id.editText1. 431 00:31:31,110 --> 00:31:35,220 Det er allerede autocompleting for mig der. 432 00:31:35,220 --> 00:31:42,010 >> Og så vil vi også-denne RedigérTekst nu hvor vi har feltet 433 00:31:42,010 --> 00:31:47,640 inden for vores program, gjorde alt, findViewByID var dybest set 434 00:31:47,640 --> 00:31:50,870 du kunne tænke på det som giver os en reference til denne RedigérTekst. 435 00:31:50,870 --> 00:31:54,570 Nu ønsker vi at få strengen, eller meddelelsen 436 00:31:54,570 --> 00:32:00,670 inden for denne RedigérTekst, som vi kan gøre ved at bruge- 437 00:32:00,670 --> 00:32:03,360 du kunne tænke på RedigérTekst som en struct- 438 00:32:03,360 --> 00:32:07,600 vi kalder det et objekt i Java-med en hel masse forskellige metoder 439 00:32:07,600 --> 00:32:10,650 eller marker og attributter knyttet til den. 440 00:32:10,650 --> 00:32:15,510 Når jeg siger RedigérTekst. det giver mig mulighed for at få adgang til 441 00:32:15,510 --> 00:32:19,770 en metode som getText, som vil få den aktuelle tekst 442 00:32:19,770 --> 00:32:23,990 i dette RedigérTekst og derefter konvertere, der udtrykkeligt 443 00:32:23,990 --> 00:32:26,520 til en streng, og vi har gemt beskeden. 444 00:32:26,520 --> 00:32:32,730 Nu skal vi rent faktisk ønsker at gøre noget med det forsæt vi skabt bare øjeblikke siden. 445 00:32:32,730 --> 00:32:40,250 Jeg vil sætte ekstra som det hedder i den hensigt, 446 00:32:40,250 --> 00:32:43,330 der igen, ligesom jeg sagde før, er det en måde at skabe det bundt 447 00:32:43,330 --> 00:32:45,980 med en hel masse data. 448 00:32:45,980 --> 00:32:50,920 Ekstra budskab er vores tag, så vi ved, hvad vi gemmer dette under, 449 00:32:50,920 --> 00:32:56,700 og så er jeg også meddelelsen. 450 00:32:56,700 --> 00:33:04,870 >> Og så kan vi faktisk begynde aktiviteten ved at give det parameter myIntent. 451 00:33:04,870 --> 00:33:10,630 Og det rent faktisk vil starte aktiviteten, så nu da jeg opgraderede til Windows 8 452 00:33:10,630 --> 00:33:15,870 der kan være nogle fejl, der dukker op kortvarigt, men prøv at ignorere dem. 453 00:33:28,010 --> 00:33:30,310 Og dette er den Android emulator. 454 00:33:30,310 --> 00:33:33,540 Forhåbentlig koden rent faktisk vil poppe op i et øjeblik. 455 00:33:33,540 --> 00:33:36,680 Igen, ignorerer alle de små ting. 456 00:33:36,680 --> 00:33:42,290 Men Android emulator du kan emulere en version af operativsystemet 457 00:33:42,290 --> 00:33:45,180 fra de tidligste dem. Donut, Gingerbread 458 00:33:45,180 --> 00:33:49,640 Dette er Jelly Bean 4.1. 459 00:33:49,640 --> 00:33:53,150 Men som du kan se lige nu, er det noget, vi gjort. 460 00:33:53,150 --> 00:33:55,780 Dette har MainActivity den RedigérTekst, knappen. 461 00:33:55,780 --> 00:34:01,550 Jeg kan skrive noget her, men hvad mangler vi på dette punkt? 462 00:34:01,550 --> 00:34:05,190 Vi har lavet feltet i MainActivity der kommer til at sende beskeden 463 00:34:05,190 --> 00:34:08,570 den anden aktivitet, men på dette tidspunkt 464 00:34:08,570 --> 00:34:12,330 Vi har ikke gjort noget i den anden aktivitet, så det kommer ikke til at modtage noget. 465 00:34:12,330 --> 00:34:18,800 Lad os slutte op den del, før vi går videre. 466 00:34:18,800 --> 00:34:25,760 >> Dette resultat aktivitet, vi bliver nødt til at gøre, er, at vi bliver nødt til at gøre, er, at vi bliver nødt til at- 467 00:34:25,760 --> 00:34:30,070 kan vi også henvise til hensigt inden for denne aktivitet, 468 00:34:30,070 --> 00:34:33,580 så vi er nødt til at fange den hensigt, som er virkelig simpelt. 469 00:34:33,580 --> 00:34:40,780 Det er en funktion indgår i aktiviteten klassen, 470 00:34:40,780 --> 00:34:47,610 så vi kan bare sige "Få besked fra hensigt." 471 00:34:47,610 --> 00:34:56,260 "Intent myIntent = getIntent." 472 00:34:56,260 --> 00:35:00,030 Og det vil give os-nu myIntent er et objekt, 473 00:35:00,030 --> 00:35:05,380 som er en henvisning til den hensigt, der førte os til denne aktivitet. 474 00:35:05,380 --> 00:35:10,130 MainActivity opkald og giver ekstra information at resultere aktivitet. 475 00:35:10,130 --> 00:35:14,070 Resultat aktivitet nu ser på den hensigt, der førte det her, 476 00:35:14,070 --> 00:35:23,540 og vi kan få adgang til budskab, at vi oprettede i den anden, 477 00:35:23,540 --> 00:35:26,370 getStringExtra, og det vil autocomplete for mig. 478 00:35:26,370 --> 00:35:31,190 Og så husk, den måde, vi mærkede, at bit af data 479 00:35:31,190 --> 00:35:38,400 var ved at give det dette felt lige her, denne offentlige streng, 480 00:35:38,400 --> 00:35:42,080 der er mærket efter strengen vi faktisk inkluderet. 481 00:35:42,080 --> 00:35:48,450 >> Hvis jeg siger MainActivity.Extra_Message 482 00:35:48,450 --> 00:35:52,200 det er lige der, og det er lidt ligesom parameternavnet 483 00:35:52,200 --> 00:35:55,330 når vi passerede koden fra controlleren til skabelonen, 484 00:35:55,330 --> 00:35:57,680 når vi ville sige titel pil noget. 485 00:35:57,680 --> 00:36:01,140 Det er den samme slags idé der. 486 00:36:01,140 --> 00:36:07,130 Husk nu dette. 487 00:36:07,130 --> 00:36:12,230 Vi havde også denne auto skabt eller auto genererede kode 488 00:36:12,230 --> 00:36:16,410 for resultat aktivitet omfatter som tekstvisning i midten 489 00:36:16,410 --> 00:36:19,690 der siger hej verden. 490 00:36:19,690 --> 00:36:27,510 Vi kunne potentielt gøre det større. 491 00:36:27,510 --> 00:36:33,980 Lad os gøre det først. 492 00:36:33,980 --> 00:36:39,550 Vi kunne gøre det 40 tæthed uafhængige pixels. 493 00:36:39,550 --> 00:36:42,670 Lad os se, det er super enorm. Det vil være okay. 494 00:36:42,670 --> 00:36:48,180 Og så for at referere denne person tekstvisning inden for vores kode 495 00:36:48,180 --> 00:36:53,890 Vi bliver nødt til at give det et ID, 496 00:36:53,890 --> 00:36:58,350 og for at gøre det vi siger @ + id, hvilket betyder, at vi tildeler den id. 497 00:36:58,350 --> 00:37:02,480 Hvis vi bare sagde @ id det ville antage, vi refererer et ID, der allerede eksisterer, 498 00:37:02,480 --> 00:37:07,760 og lad os kalde dette vores resultTextView. 499 00:37:07,760 --> 00:37:10,570 Og bemærk, at der i XML er der ikke behov for semikolon eller noget. 500 00:37:10,570 --> 00:37:12,380 Alt er inden for disse tags. 501 00:37:12,380 --> 00:37:15,530 Det er meget lig HTML i en masse sanser. 502 00:37:15,530 --> 00:37:22,760 >> Det tager en lille smule af at vænne sig til, men til sidst vil du føle sig temmelig godt med det. 503 00:37:22,760 --> 00:37:31,320 Lad os opdatere teksten til vores resultat tekstvisning, 504 00:37:31,320 --> 00:37:35,650 og som vi gjorde, da vi fik at redigere tekstfeltet i vores anden aktivitet 505 00:37:35,650 --> 00:37:46,630 i MainActivity her vil vi også ligeledes- 506 00:37:46,630 --> 00:37:54,890 finder vi den opfattelse via id. 507 00:37:54,890 --> 00:37:59,640 Og R, i tilfælde af jeg ikke nævne det før, er henvisningen til vores ressourcer mappe 508 00:37:59,640 --> 00:38:05,350 og derefter ID er en reference til alt i ressourcer mappen, alle id'er, 509 00:38:05,350 --> 00:38:10,060 og resultTextView. 510 00:38:10,060 --> 00:38:13,010 Og lige som før, resultTextView er et objekt, 511 00:38:13,010 --> 00:38:15,780 hvilket betyder, at det har alle disse egenskaber, der er forbundet med det. 512 00:38:15,780 --> 00:38:20,610 Når vi bruger getText for edit tekst til dette tekstfelt eller tekstvisning 513 00:38:20,610 --> 00:38:23,980 Vi kan faktisk bruge setText, 514 00:38:23,980 --> 00:38:26,960 og så har vi allerede fundet budskabet fra den hensigt, 515 00:38:26,960 --> 00:38:35,760 så jeg kan sige besked, og det vil faktisk sætte beskeden. 516 00:38:35,760 --> 00:38:41,820 >> Det tager et øjeblik at starte, og så kan vi se, om ikke det går ned, 517 00:38:41,820 --> 00:38:48,670 men spørgsmål om denne proces lige der, den slags interaktion? 518 00:38:48,670 --> 00:38:51,490 På mange måder er det ligetil. 519 00:38:51,490 --> 00:38:53,960 Grunden til jeg går igennem noget relativt simpelt 520 00:38:53,960 --> 00:38:57,330 er, igen, fordi du får at se samspillet mellem layout, 521 00:38:57,330 --> 00:38:59,520 kildekoden, hvordan du referencepunkter ting 522 00:38:59,520 --> 00:39:07,680 og måske få en lille udsættelse for hvordan Java arbejder der. 523 00:39:07,680 --> 00:39:16,500 Hvis jeg rent faktisk skriver noget her, ligesom ohai, og så vil jeg klikke på knappen, 524 00:39:16,500 --> 00:39:22,260 det lancerer en ny aktivitet, og at tekstvisning siger ohai. 525 00:39:22,260 --> 00:39:27,640 Det er meget simpelt, men forhåbentlig efter det eksempel 526 00:39:27,640 --> 00:39:32,310 du slags se, hvordan dette samspil fungerer, og nu rod af filer 527 00:39:32,310 --> 00:39:36,870 på venstre side for alle disse projekter mapper, du forhåbentlig ved, hvor man skal lede nu. 528 00:39:36,870 --> 00:39:38,700 Dette er din kildekode område. 529 00:39:38,700 --> 00:39:41,760 >> Layout er virkelig det eneste, du vil beskæftige sig med, indtil du medtage billeder 530 00:39:41,760 --> 00:39:46,370 og drawables eller hvad, og værdier, der vil omfatte strenge, 531 00:39:46,370 --> 00:39:51,960 som vi nævnte, og derefter stilarter er noget, der er lidt ligesom CSS. 532 00:39:51,960 --> 00:39:56,410 Løse det, når du vil, men indtil du føler dig tryg med at tilføje ekstra flair 533 00:39:56,410 --> 00:40:02,520 på din ansøgning er der ingen grund til at bekymre sig om det for meget. 534 00:40:02,520 --> 00:40:07,410 Bare for at ombryde op en anden ting du vil helt sikkert ønsker at medtage, 535 00:40:07,410 --> 00:40:13,010 antager du vil integrere smarte funktioner og spare nogle ekstra kodning- 536 00:40:13,010 --> 00:40:16,460 ville være at inkludere 3. parts biblioteker. 537 00:40:16,460 --> 00:40:19,840 Her er den lille Android fyr med Sherlock Holmes hat. 538 00:40:19,840 --> 00:40:23,040 Dette er en handling bar Sherlock bibliotek, 539 00:40:23,040 --> 00:40:25,390 som dybest set betyder, at indsatsen bar du så tidligere, 540 00:40:25,390 --> 00:40:29,590 som nu er standard i Ice Cream Sandwich og Jelly Bean, 541 00:40:29,590 --> 00:40:33,100 Hvis du ønsker at bringe den slags brugeroplevelse til brugere på ældre versioner 542 00:40:33,100 --> 00:40:39,290 og spare dig selv fra at bekymre sig om, hvordan brugeren kommer til at navigere 543 00:40:39,290 --> 00:40:42,490 på ældre versioner, når den ting ikke er der du kan medtage dette bibliotek 544 00:40:42,490 --> 00:40:46,770 og så skal du bare nødt til at henvisningen-snarere end standard Android 545 00:40:46,770 --> 00:40:50,250 biblioteker for handlingen bar, du henvise til denne support-bibliotek. 546 00:40:50,250 --> 00:40:53,090 >> Ting som Scoreloop, det er fantastisk, hvis du kommer til at omfatte et spil. 547 00:40:53,090 --> 00:40:57,280 Det lader dig tilføje pointtavler og resultater til spil. 548 00:40:57,280 --> 00:41:00,900 AdMob er en måde at sætte annoncer i dine programmer 549 00:41:00,900 --> 00:41:02,900 hvis du ønsker at gøre en lille smule penge ud af det. 550 00:41:02,900 --> 00:41:05,730 Selvfølgelig er der Facebook og Twitter til at integrere der 551 00:41:05,730 --> 00:41:08,170 hvis du ønsker at dele tingene let, et cetera. 552 00:41:08,170 --> 00:41:15,120 Dropbox ligeledes, og Google Analytics er, at diagrammet ser en der. 553 00:41:15,120 --> 00:41:19,070 Det vil være meget vigtigt, hvis du rent faktisk ønsker at se, hvem der interagerer 554 00:41:19,070 --> 00:41:25,800 med din app eller hvem det er, hvordan de interagerer, et cetera. 555 00:41:25,800 --> 00:41:30,650 Google som standard fortæller dig en masse statistik om, hvem der har installeret din app 556 00:41:30,650 --> 00:41:35,020 og hvilke telefoner, de har, hvilken versioner af operativsystemer, de har. 557 00:41:35,020 --> 00:41:38,080 Men hvis du ønsker at se, hvem der bruger det på daglig basis, og hvordan de bruger det 558 00:41:38,080 --> 00:41:42,860 så vil du ønsker at inkludere en form for tracking system som. 559 00:41:42,860 --> 00:41:44,990 >> Når du er klar til at distribuere din app 560 00:41:44,990 --> 00:41:46,930 Jeg behøver ikke at gå ind i, at der i alt for meget dybde. 561 00:41:46,930 --> 00:41:49,090 Klik på linket her, Google Play. 562 00:41:49,090 --> 00:41:51,080 Det plejede at være Android Market. 563 00:41:51,080 --> 00:41:53,470 De rebranded alt med Google Play, 564 00:41:53,470 --> 00:41:55,230 så nu du indsender til det. 565 00:41:55,230 --> 00:41:57,140 Det er meget ligetil. 566 00:41:57,140 --> 00:42:01,070 Du er nødt til at indeholde en beskrivelse, nogle screenshots. 567 00:42:01,070 --> 00:42:05,660 Som jeg sagde, er der ingen godkendelsesproces som iOS. 568 00:42:05,660 --> 00:42:07,270 Og hvor man kan gå herfra? 569 00:42:07,270 --> 00:42:09,450 Jeg viste dig en rigtig simpelt eksempel. 570 00:42:09,450 --> 00:42:13,270 Forhåbentlig hvis det synes frygtelig simpelt 571 00:42:13,270 --> 00:42:15,740 så det er nok et godt tegn. 572 00:42:15,740 --> 00:42:20,080 Hvis du overhovedet følte en smule forvirret eller usikker på præcis, hvad jeg skriver 573 00:42:20,080 --> 00:42:26,160 Det er også fint, men herfra går til Google Guides. 574 00:42:26,160 --> 00:42:28,330 Dette er et godt sted at starte. 575 00:42:28,330 --> 00:42:31,460 Det vil tale dig igennem, hvad de forventer i forhold til anvendelsen design, 576 00:42:31,460 --> 00:42:33,380 hvordan brugerne normalt interagerer med det. 577 00:42:33,380 --> 00:42:36,450 Det er meget mere fri form end iOS, jeg ville sige, 578 00:42:36,450 --> 00:42:41,330 som det ser ud som tabelvisninger er-Det ved jeg ikke, det er deres brød og smør. 579 00:42:41,330 --> 00:42:44,690 Alt er en tabel udsigt glider op og ned. 580 00:42:44,690 --> 00:42:48,160 Med Android de helt tilskynde folk til at se på det fra 581 00:42:48,160 --> 00:42:51,720 en hel masse forskellige perspektiver. 582 00:42:51,720 --> 00:42:56,000 >> Når du inkluderer software development kit i denne ADT 583 00:42:56,000 --> 00:43:03,010 som standard har du en hel masse prøve projekter i Android. 584 00:43:03,010 --> 00:43:05,470 Lige her, Android, Android Sample Project. 585 00:43:05,470 --> 00:43:11,870 Hvis jeg klikker på det, så jeg kan vælge en version, som af prøven projekter gælder. 586 00:43:11,870 --> 00:43:13,300 Der er en hel masse forskellige ting her. 587 00:43:13,300 --> 00:43:16,690 Det starter med handling bar kompatibilitet, 588 00:43:16,690 --> 00:43:24,610 accelerometer play, backup og gendannelse, Bluetooth, gestus builder. 589 00:43:24,610 --> 00:43:28,930 Jetboy er et udsnit spil, de giver dig, som er LunarLander. 590 00:43:28,930 --> 00:43:31,250 Der er en hel masse prøve applikationer her 591 00:43:31,250 --> 00:43:35,290 og de er alle rettet mod forskellige aspekter af Android API, 592 00:43:35,290 --> 00:43:41,520 og tanken er, at du laver din ansøgning 593 00:43:41,520 --> 00:43:44,110 du behøver ikke at lære alt om Android at gøre en Android app. 594 00:43:44,110 --> 00:43:47,300 Du behøver kun at lære om de dele, som du rent faktisk vil bruge. 595 00:43:47,300 --> 00:43:49,340 Kig på disse prøve biblioteker. 596 00:43:49,340 --> 00:43:51,510 Du er velkommen til at kopiere og indsætte koden og genanvende det. 597 00:43:51,510 --> 00:43:53,850 Det er en stor ting at se på sværere kode 598 00:43:53,850 --> 00:43:57,060 og forsøge at forstå det, hvilket naturligvis er hvorfor i CS50 599 00:43:57,060 --> 00:44:01,510 vi ofte give dig store mængder af kildekoden. 600 00:44:01,510 --> 00:44:04,620 Se på nogle af disse, hvis du kommer til at bruge lignende biblioteker 601 00:44:04,620 --> 00:44:08,630 og derefter anvende den til din egen kode. 602 00:44:08,630 --> 00:44:10,430 Og selvfølgelig er der tutorials. 603 00:44:10,430 --> 00:44:12,690 Søg efter tutorials. 604 00:44:12,690 --> 00:44:17,020 Jeg fandt en masse gode online, som kan bringe dig op i fart 605 00:44:17,020 --> 00:44:20,080 med, hvad fragmenter egentlig er, og hvordan du kan bruge dem. 606 00:44:20,080 --> 00:44:22,240 >> Nogle af disse nye design ting, som fragmenter, 607 00:44:22,240 --> 00:44:26,840 du virkelig behøver ikke at være bekymret over, medmindre du laver en 608 00:44:26,840 --> 00:44:30,560 temmelig store i omfang projektet. 609 00:44:30,560 --> 00:44:32,510 De er ting, som Google forsøger at udfase i. 610 00:44:32,510 --> 00:44:35,570 Stackoverflow er naturligvis din ven. 611 00:44:35,570 --> 00:44:37,930 Forhåbentlig solgte jeg dig lidt på Android, 612 00:44:37,930 --> 00:44:41,640 realisere det er meget nemmere at nærme sig i form af netop den kodesprog. 613 00:44:41,640 --> 00:44:45,970 Java er Jeg vil sige meget lettere at forstå end Objective-C. 614 00:44:45,970 --> 00:44:50,780 Android vokser tror jeg meget mere end iOS. 615 00:44:50,780 --> 00:44:54,890 Jeg mener, at data er der også, bortset fra hvad jeg tror. 616 00:44:54,890 --> 00:44:56,920 Det kommer til at være omkring et stykke tid, 617 00:44:56,920 --> 00:45:00,880 og de er et par år bagud i forhold til deres design cykler, 618 00:45:00,880 --> 00:45:04,690 så det er slags forståeligt, at de stadig arbejder gennem nogle af disse 619 00:45:04,690 --> 00:45:09,080 konsistens spørgsmål som denne handling bar er en ny ting for dem stadig, 620 00:45:09,080 --> 00:45:16,010 slags skabe lignende brugeroplevelse på tværs af alle deres apps. 621 00:45:16,010 --> 00:45:20,650 Forhåbentlig kan du gå fremad nu, og åbne op Eclipse 622 00:45:20,650 --> 00:45:22,870 og lave dine egne Android apps. 623 00:45:22,870 --> 00:45:30,240 >> Er der nogen der har nogen spørgsmål, før vi wrap op om noget? 624 00:45:30,240 --> 00:45:34,410 Jeg kan fortælle dig, at svaret er 42.. 625 00:45:34,410 --> 00:45:41,990 Nå, glad kodning alle, og held og lykke. 626 00:45:41,990 --> 00:45:44,990 [CS50.TV]