1 00:00:00,000 --> 00:00:02,610 [Powered by Google Translate] [Seminar] [Android Apps (Nå med Jelly Beans!)] 2 00:00:02,610 --> 00:00:04,210 [Jordan Jóźwiak] [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 >> Hei alle sammen, og velkommen til Android-apper (Nå med Jelly Beans!) Seminar. 5 00:00:11,600 --> 00:00:14,530 Det kalles nå med Jelly Beans, selvfølgelig, fordi 6 00:00:14,530 --> 00:00:17,310 den nyeste versjonen av operativsystemet kalles Jelly Bean. 7 00:00:17,310 --> 00:00:22,950 Når jeg snakket om Android i fjor og gjorde dette i utgangspunktet samme seminar 8 00:00:22,950 --> 00:00:29,150 Jeg var å presentere design patterns og stilistiske valg for Gingerbread, 9 00:00:29,150 --> 00:00:31,250 selv om Ice Cream Sandwich hadde kommet ut på det tidspunktet, 10 00:00:31,250 --> 00:00:33,680 og dette er noe vi skal snakke om å gå litt forover. 11 00:00:33,680 --> 00:00:35,720 Android, selvfølgelig, har noen problemer med fragmentering, 12 00:00:35,720 --> 00:00:40,240 så den nyeste Google-operativsystemet er vanligvis 13 00:00:40,240 --> 00:00:44,710 egentlig ikke kommer til å bli vanlig blant brukerne for potensielt opp til et år, dessverre. 14 00:00:44,710 --> 00:00:49,960 >> Men ser bort fra det, vil vi snakke om mange grunner til at 15 00:00:49,960 --> 00:00:53,000 Android er mye bedre enn iOS. 16 00:00:53,000 --> 00:00:56,410 Ok, vi snakker om Android kontra iOS, 17 00:00:56,410 --> 00:00:59,770 noen design paradigmer, hvor du vil bli satt opp på bare ett lysbilde, 18 00:00:59,770 --> 00:01:03,410 og den store forskjellen mellom denne og i fjor er at jeg bare vil 19 00:01:03,410 --> 00:01:06,860 zoom gjennom noen konseptuelle ting å jobbe med 20 00:01:06,860 --> 00:01:09,950 operativsystemet og deretter gå inn i en virkelig grunnleggende eksempel. 21 00:01:09,950 --> 00:01:13,730 Faktisk bare et eksempel på at Google beskriver for å bygge din første app, 22 00:01:13,730 --> 00:01:17,070 og vi vil gå gjennom det sammen og bare beskrive. 23 00:01:17,070 --> 00:01:22,100 >> Jeg vet at mange av dere bare kodet i C, så Java er allerede kommer til å være 24 00:01:22,100 --> 00:01:27,220 et annet perspektiv, og på denne måten vil du få føttene våt 25 00:01:27,220 --> 00:01:31,540 og føler meg litt mer komfortabel med det forhåpentligvis. 26 00:01:31,540 --> 00:01:35,330 En rask oppsummering, Android versus iOS. 27 00:01:35,330 --> 00:01:39,200 I Android er det denne engangs utvikler avgift på $ 25, 28 00:01:39,200 --> 00:01:42,390 ingenting av dette $ 100 per år ting. 29 00:01:42,390 --> 00:01:45,440 Det er ingen restriksjoner, noe som betyr at hvis jeg ønsker å sende inn en app, 30 00:01:45,440 --> 00:01:51,560 Jeg bare sende det, og det er ingen godkjenningsprosess som det er for iOS. 31 00:01:51,560 --> 00:01:53,890 Du kommer til å utvikle seg med Java ved hjelp av Eclipse, 32 00:01:53,890 --> 00:01:57,090 som er cross platform, så det spiller ingen rolle om du har en Mac, 33 00:01:57,090 --> 00:01:59,600 Windows, eller noen Linux-maskin. 34 00:01:59,600 --> 00:02:03,730 Of course, med iOS må du bruke XCode på en Mac, 35 00:02:03,730 --> 00:02:06,930 og Android brukes av mange flere mennesker, 36 00:02:06,930 --> 00:02:11,580 så hvis du vil at app å ha noen form for synlighet eller kanskje 37 00:02:11,580 --> 00:02:14,110 gjøre litt penger fra annonser 38 00:02:14,110 --> 00:02:17,450 du er nok mer sannsynlig å dra nytte av Android. 39 00:02:17,450 --> 00:02:20,630 >> Og en ting som alltid har vært kjent om Android 40 00:02:20,630 --> 00:02:25,100 er den ekstreme mengden av tilpasning, mens iOS er svært fast i sine måter 41 00:02:25,100 --> 00:02:29,380 slik at de kan opprettholde sikkerhet og kontroll over hver lille aspekt 42 00:02:29,380 --> 00:02:34,180 av design innenfor deres OS og de enkelte apps. 43 00:02:34,180 --> 00:02:40,180 Android er veldig fri form, og det er så mange flere muligheter. 44 00:02:40,180 --> 00:02:42,530 Ok, noen design paradigmer. 45 00:02:42,530 --> 00:02:49,600 Legg merke til her akkurat som iOS har tabletter og iPhone og iPod rører 46 00:02:49,600 --> 00:02:53,840 de har til å støtte, sier, i likhet med et dusin enheter hvis du ønsker å støtte 47 00:02:53,840 --> 00:02:55,450 historiske ting i tillegg. 48 00:02:55,450 --> 00:02:58,410 Med Android har å støtte hundrevis av enheter, 49 00:02:58,410 --> 00:03:01,240 så er det noen ting som Google har prøvd å implementere 50 00:03:01,240 --> 00:03:04,970 å gjøre brukeren oppleve litt mer konsistent, 51 00:03:04,970 --> 00:03:08,560 men vi vil også snakke om hvordan dette betyr at det er problemer med fragmentering 52 00:03:08,560 --> 00:03:11,700 at du hele tiden må være klar til å støtte. 53 00:03:11,700 --> 00:03:16,140 Fragmentering betyr at det er mange forskjellige operativsystemer, 54 00:03:16,140 --> 00:03:20,330 mange ulike telefoner med forskjellig hardware som kjører Android alt på samme tid, 55 00:03:20,330 --> 00:03:29,680 så denne grafen går her tilbake i ca 6 måneder. 56 00:03:29,680 --> 00:03:36,460 Ja, seks måneder, og du kan se hvordan den mørkeste bandet 57 00:03:36,460 --> 00:03:39,330 på bunnen er Jelly Bean, som kom ut i løpet av sommeren, 58 00:03:39,330 --> 00:03:42,970 og du kan se akkurat nå trolig om lag 2% av telefonene har det. 59 00:03:42,970 --> 00:03:45,520 >> Ice Cream Sandwich kom ut over et år siden, 60 00:03:45,520 --> 00:03:47,770 og en fjerdedel av telefonene har det. 61 00:03:47,770 --> 00:03:53,910 Det er fortsatt mange telefoner som bruker OS-versjon fra år siden. 62 00:03:53,910 --> 00:03:57,820 En ting som Google har forsøkt å gjøre for å gjøre brukeropplevelsen 63 00:03:57,820 --> 00:04:01,400 mye mer konsekvent på tvers av apps er i ferd med Honeycomb, 64 00:04:01,400 --> 00:04:04,320 som er tabletten versjonen, deretter Ice Cream Sandwich og Jelly Bean, 65 00:04:04,320 --> 00:04:06,750 de egentlig prøver å understreke bruken av denne handlingen bar, 66 00:04:06,750 --> 00:04:10,430 som er det du kan se på toppen her, 67 00:04:10,430 --> 00:04:14,730 alt rett her, inkludert denne lille knappen Innstillinger. 68 00:04:14,730 --> 00:04:16,079 Det er design valg. 69 00:04:16,079 --> 00:04:18,000 Nå, når du ser de tre prikkene betyr det klikker på denne, 70 00:04:18,000 --> 00:04:21,880 og det vil være en drop-down menyen, som har en slags innstillinger. 71 00:04:21,880 --> 00:04:28,900 Dette viser bare opp fordi jeg klikket på denne knappen. 72 00:04:28,900 --> 00:04:32,040 Dette er noe som de prøver å bruke for å lage apps litt mer konsekvent 73 00:04:32,040 --> 00:04:39,210 over hele linja, og slik at brukeren har en bedre følelse av uniform opplevelse. 74 00:04:39,210 --> 00:04:42,640 >> Ok, så i tilfelle du ikke har gjort dette allerede, eller hvis du ser hjemme 75 00:04:42,640 --> 00:04:50,210 kan du følge disse trinnene for å konfigurere koding miljø. 76 00:04:50,210 --> 00:04:52,630 Det vil innebære å gå til nettsiden 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ølge noen beskrivelser der. 79 00:04:59,130 --> 00:05:01,310 De forteller deg alt. 80 00:05:01,310 --> 00:05:05,160 De har du installere SDK, laste ned Eclipse Classic-versjonen, 81 00:05:05,160 --> 00:05:07,450 selv om, selvfølgelig, vi koding i Java. 82 00:05:07,450 --> 00:05:12,190 De anbefaler denne, og da denne ADT, Android Development Tools, 83 00:05:12,190 --> 00:05:17,300 er en plugin som du installerer i Eclipse som lar deg 84 00:05:17,300 --> 00:05:20,550 har en mye mer strømlinjeformet opplevelse med Android innen Eclipse. 85 00:05:20,550 --> 00:05:24,070 Det vil gi deg noen grafiske brukergrensesnitt 86 00:05:24,070 --> 00:05:29,610 for å utforme utsikten, og det vil gi deg mye mer støtte 87 00:05:29,610 --> 00:05:34,840 og muligheten til å starte med emulator og all den slags ting. 88 00:05:34,840 --> 00:05:36,090 Søknad rammeverk. 89 00:05:36,090 --> 00:05:41,590 >> Jeg vil snakke om hvordan prosjektene innenfor Android er strukturert, 90 00:05:41,590 --> 00:05:44,830 og så får vi gå inn i en rask eksempel, og forhåpentligvis 91 00:05:44,830 --> 00:05:48,820 du kan stille spørsmål når som helst og føler deg komfortabel ved slutten av det. 92 00:05:48,820 --> 00:05:50,090 Vi har noen sjargong først. 93 00:05:50,090 --> 00:05:55,330 En aktivitet er som skjermbildet du ser når du starter en app. 94 00:05:55,330 --> 00:05:57,840 Hele opplevelsen er selve aktiviteten, 95 00:05:57,840 --> 00:06:00,790 slik at du kan tenke på det som en skjerm eller en visning, 96 00:06:00,790 --> 00:06:04,540 men det er faktisk kildekoden side av det. 97 00:06:04,540 --> 00:06:12,680 Vi fortsatt kaller selve grensesnittet del av det en visning. 98 00:06:12,680 --> 00:06:17,230 Det er liksom som hvordan i PSett 7 hadde vi kontrolleren og deretter visningen. 99 00:06:17,230 --> 00:06:20,690 Aktiviteten er mer eller mindre kontrolleren, 100 00:06:20,690 --> 00:06:23,360 og utsikten er hva vi gjør i forhold til XML 101 00:06:23,360 --> 00:06:25,260 som er forbundet med den aktiviteten. 102 00:06:25,260 --> 00:06:29,340 Fragmenter er noe som er implementert i Ice Cream Sandwich fremover. 103 00:06:29,340 --> 00:06:36,380 Det er bare en idé om å ta deler av visningen eller aktiviteten 104 00:06:36,380 --> 00:06:39,990 og dele dem opp i separate områder, slik at vi kan 105 00:06:39,990 --> 00:06:45,030 gjøre våre koden mer brukbare for disse mange forskjellige enheter 106 00:06:45,030 --> 00:06:51,890 at vi må støtte, og det er bare en måte å forsøke å 107 00:06:51,890 --> 00:06:54,290 også faktor ut mer kode. 108 00:06:54,290 --> 00:07:01,090 Tjenestene er bakgrunnen ting som spiller musikk eller navigasjon retninger potensielt. 109 00:07:01,090 --> 00:07:05,640 Innholdsleverandører, disse er APIer i operativsystemet 110 00:07:05,640 --> 00:07:09,070 som lar deg få tilgang til felles data som for eksempel kontaktinformasjon, 111 00:07:09,070 --> 00:07:12,790 og deretter en hensikt er noe vi skal bruke når vi ønsker å lansere 112 00:07:12,790 --> 00:07:17,210 en ny aktivitet fra vår nåværende aktivitet. 113 00:07:17,210 --> 00:07:20,980 >> Hei Android, dette kommer til å bli et prosjekt som vi skal snakke om. 114 00:07:20,980 --> 00:07:25,410 Jeg skal faktisk gjøre det for deg, og så får vi gjøre en ting hvor vi klikker på en knapp 115 00:07:25,410 --> 00:07:27,650 med litt tekst og lansere en ny aktivitet. 116 00:07:27,650 --> 00:07:30,110 Veldig grei, men jeg ønsker å gå gjennom 117 00:07:30,110 --> 00:07:34,480 hva som vil gå inn i et prosjekt som dette. 118 00:07:34,480 --> 00:07:39,260 Når du gjør det nye prosjektet du vil se i løpet av Eclipse 119 00:07:39,260 --> 00:07:41,900 det er dette prosjektet som heter Hei Android. 120 00:07:41,900 --> 00:07:43,470 Så er det en hel haug med mapper her. 121 00:07:43,470 --> 00:07:46,760 De du virkelig er opptatt av er kilden mappen, 122 00:07:46,760 --> 00:07:54,540 ressursen mappen, res, og til en viss grad libs mappen for bibliotekene. 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 lage et nytt prosjekt, 125 00:08:03,240 --> 00:08:08,270 du kan gjøre dette her, så hvis jeg vil kalle det HelloAndroid, 126 00:08:08,270 --> 00:08:11,100 og da hjelper det automatisk en hel haug av informasjon for oss. 127 00:08:11,100 --> 00:08:14,110 Pakken navnet er ment å være en unik identifikator 128 00:08:14,110 --> 00:08:16,710 som normalt vil være knyttet til nettstedet, hvis du hadde en. 129 00:08:16,710 --> 00:08:24,430 >> For eksempel vil jeg kalle dette net.cs50.helloandroid. 130 00:08:24,430 --> 00:08:30,070 Og jeg allerede har gjort dette prosjektet en gang. 131 00:08:30,070 --> 00:08:40,059 Ok, beklager. La oss kalle det HelloCS50. 132 00:08:40,059 --> 00:08:42,929 Og så vil det spørre ting som hva slags ikon vi ønsker å gjøre. 133 00:08:42,929 --> 00:08:48,840 Det er all grunn av Android Developer Tools grensesnitt, 134 00:08:48,840 --> 00:08:53,350 plugin som vi har lagt til Eclipse, så vi kan velge ting som 135 00:08:53,350 --> 00:08:58,320 hvilke ikoner som vi ønsker, og som ville gå inn i den dybde hvis vi vil. 136 00:08:58,320 --> 00:09:04,360 Men til slutt, bare sørg for prosjektet, 137 00:09:04,360 --> 00:09:07,040 og alt dukker opp her. 138 00:09:07,040 --> 00:09:10,030 Som jeg viste på den andre skjermen, 139 00:09:10,030 --> 00:09:14,070 vi har kilden mappen, og jeg vil snakke om hva alt dette betyr snart, 140 00:09:14,070 --> 00:09:19,090 men du kan se at straks det tar oss til HelloCS50 skjermen. 141 00:09:19,090 --> 00:09:24,690 Det er noen knapper over her for å legge til tekst og tekst-feltet oppsett. 142 00:09:24,690 --> 00:09:28,910 Det er liksom som Xcode, men dessverre ikke fullt så strømlinjeformet. 143 00:09:28,910 --> 00:09:37,790 Men klippene vil være din venn og ADT spesielt for å gjøre dette. 144 00:09:37,790 --> 00:09:40,920 >> Ok, er kilden mappen der 145 00:09:40,920 --> 00:09:43,820 Java-filene blir holdt, og dette er faktisk lanseringen av programmet. 146 00:09:43,820 --> 00:09:45,990 Det er i utgangspunktet som kontrollerne. 147 00:09:45,990 --> 00:09:49,020 Ressursen mappen eller res er der vi vil holde skjerm oppsett, 148 00:09:49,020 --> 00:09:54,110 bilder, lyd, tekst, animasjon og alt annet, libs, selvsagt, biblioteker. 149 00:09:54,110 --> 00:10:01,700 Og Manifest, er det slik at Android-systemet vet 150 00:10:01,700 --> 00:10:03,130 hvordan de skal samhandle med programmet ditt. 151 00:10:03,130 --> 00:10:07,980 Det forteller det om tillatelser og hvilke aktiviteter faktisk blir drevet. 152 00:10:07,980 --> 00:10:12,350 Det er all vesentlig informasjon som er nødvendig for å kjøre programmet. 153 00:10:12,350 --> 00:10:17,990 Kilden mappen er-hvis vi utvider det som du kan se her. 154 00:10:17,990 --> 00:10:23,920 Og et eksempel på at en kode ville se-dette er standard koden. 155 00:10:23,920 --> 00:10:27,930 Som vi kalte det, MainActivity. 156 00:10:27,930 --> 00:10:33,230 Som standard får vi onCreate, som er en funksjon som kalles når denne aktiviteten laster, 157 00:10:33,230 --> 00:10:37,150 slik at du ønsker å ringe onCreate (savedInstanceState). 158 00:10:37,150 --> 00:10:40,440 Dette vil gjenopprette noen biter av informasjon 159 00:10:40,440 --> 00:10:44,910 i tilfelle programmet ble satt på pause. 160 00:10:44,910 --> 00:10:48,790 >> Det er en hel aktivitet livssyklus diagram som du kan se på 161 00:10:48,790 --> 00:10:50,380 når du får litt mer i dybden i det, 162 00:10:50,380 --> 00:10:56,210 men det viktigste linje med kode det er denne setContentView funksjon 163 00:10:56,210 --> 00:11:00,290 som vil laste den ressursen filen for layout. 164 00:11:00,290 --> 00:11:03,590 Så hva onCreate her er i utgangspunktet gjør er det å si 165 00:11:03,590 --> 00:11:07,010 når jeg oppretter denne aktiviteten jeg ønsker å laste dette oppsettet. 166 00:11:07,010 --> 00:11:12,030 Og vi skal snakke om hva som oppsettet er i et sekund. 167 00:11:12,030 --> 00:11:16,230 Hvis vi skulle lansere det her det ser ut som dette, 168 00:11:16,230 --> 00:11:22,880 og som standard fordi vi har Eclipse gjør dette og ADT gjør det for oss 169 00:11:22,880 --> 00:11:28,210 dette er alt standardtekst kode som er skapt for oss, 170 00:11:28,210 --> 00:11:34,630 og vi kan gå videre og endre ting som vi liker. 171 00:11:34,630 --> 00:11:38,190 Ressursen mappe, som jeg sa, dette er hvor vi holder alle layouter, 172 00:11:38,190 --> 00:11:41,150 drawables i form av noe slag av bilder- 173 00:11:41,150 --> 00:11:46,360 de kalles drawables-og deretter lydfiler, menyer. 174 00:11:46,360 --> 00:11:51,170 Det er en måte en hel haug med XML i et fint sortert mote. 175 00:11:51,170 --> 00:11:58,030 Som du kan se, er det. HDPI, ldpi, mdpi og xhdpi mapper for drawables. 176 00:11:58,030 --> 00:12:02,220 Disse er forskjellige skjermstørrelser tettheter, så høy tetthet pixel per inch, 177 00:12:02,220 --> 00:12:05,710 lav tetthet, middels tetthet, ekstra høy tetthet. 178 00:12:05,710 --> 00:12:08,900 >> Dette er, igjen, så vi kan støtte alle disse forskjellige enheter, 179 00:12:08,900 --> 00:12:15,100 og ideelt sett, vil du ha forskjellige bilder for hver annen oppløsning. 180 00:12:15,100 --> 00:12:20,740 Oppsett er der vi inkluderer alle de forskjellige oppsett som skal brukes i ulike aktiviteter. 181 00:12:20,740 --> 00:12:24,150 De kan også omfatte oppsett for fragmenter, 182 00:12:24,150 --> 00:12:26,670 som betyr delvis aktiviteter i utgangspunktet. 183 00:12:26,670 --> 00:12:29,610 Hvis du ønsker å gjøre noe kult som når du roterer telefonen 184 00:12:29,610 --> 00:12:33,900 du vil den skal ha et annet oppsett du kan gjøre layout-landskapet som en annen mappe, 185 00:12:33,900 --> 00:12:39,000 og Android har automatisk en hel haug av disse reglene i arkivet, 186 00:12:39,000 --> 00:12:44,690 så det vil vite å se på ulike mapper basert på dagens oppsett av telefonen, 187 00:12:44,690 --> 00:12:46,740 hva slags maskinvare du bruker. 188 00:12:46,740 --> 00:12:52,350 Tilsvarende dette verdier-v11 her og verdier-v14 189 00:12:52,350 --> 00:12:55,460 og standardverdiene mappe dette er for- 190 00:12:55,460 --> 00:13:01,730 vel, verdier av seg selv, vil dette være standardverdiene på tvers av alle versjoner av operativsystemet. 191 00:13:01,730 --> 00:13:06,390 På den annen side, v11 og v14 korresponderer med Honeycomb 192 00:13:06,390 --> 00:13:08,780 og Ice Cream Sandwich, henholdsvis. 193 00:13:08,780 --> 00:13:12,800 Igjen, dette er måter som-i disse mappene er forskjellige strenger 194 00:13:12,800 --> 00:13:17,550 og stiler, slik at du kan tilpasse utseendet på programmet ditt 195 00:13:17,550 --> 00:13:22,660 eller potensielt enda sin funksjonalitet, selv om det trolig ville være en dårlig idé, 196 00:13:22,660 --> 00:13:25,890 basert på versjonen av operativsystemet. 197 00:13:25,890 --> 00:13:28,760 >> Og jeg snakket om alt dette her. 198 00:13:28,760 --> 00:13:35,870 Igjen, teikneområdet, rå, layout, verdier. 199 00:13:35,870 --> 00:13:41,380 Standardinnstillingene, hvis vi går inn Hei Android eller Hei CS50 akkurat nå 200 00:13:41,380 --> 00:13:43,310 det vil se akkurat slik ut. 201 00:13:43,310 --> 00:13:45,800 Det vil si hei verden. 202 00:13:45,800 --> 00:13:58,430 Som du kan se her med Android tekst 203 00:13:58,430 --> 00:14:04,420 teksten for denne teksten visningen, som er i utgangspunktet bare en etikett, 204 00:14:04,420 --> 00:14:06,900 er hva vi vil kalle det i iOS. 205 00:14:06,900 --> 00:14:11,580 Den har denne morsomme notasjon @ string / hello_world. 206 00:14:11,580 --> 00:14:16,200 Dette er så vi kan-vi forsøke å trekke ut alle strengene, 207 00:14:16,200 --> 00:14:19,740 alle de hardkodet strenger i Android i en egen mappe, 208 00:14:19,740 --> 00:14:23,610 som tilfeldigvis er i values.strings. 209 00:14:23,610 --> 00:14:29,300 Hvis vi ser her, kan vi se at vi har en hardkodet streng lagret her 210 00:14:29,300 --> 00:14:33,910 for hello world, og det heter hello world, og dette er liksom en 211 00:14:33,910 --> 00:14:39,230 felles design beslutning på tvers av mange plattformer som du vil- 212 00:14:39,230 --> 00:14:41,780 strenger er den slags ting som vi ønsker å potensielt kunne endre. 213 00:14:41,780 --> 00:14:48,050 Vi ønsker ikke å kontrollere F i vår kildekoden filen i XML vår. 214 00:14:48,050 --> 00:14:50,760 Vi ønsker å kunne endre dette når vi får sjansen. 215 00:14:50,760 --> 00:14:53,640 >> Denne XML-filen, strings.xml, er en måte å utvinne 216 00:14:53,640 --> 00:14:56,710 hardkodet strenger som ellers ville være i våre layout ressurser 217 00:14:56,710 --> 00:15:03,530 eller i vår kildekoden. 218 00:15:03,530 --> 00:15:08,190 Manifest er der vi holder denne viktige informasjonen om programmet. 219 00:15:08,190 --> 00:15:11,050 Det inkluderer pakken navn. Det må være en unik identifikator. 220 00:15:11,050 --> 00:15:16,020 I motsetning til App Store for iOS navnene på programmene 221 00:15:16,020 --> 00:15:19,980 trenger ikke å være unik, og du kan faktisk endre navnet på programmet 222 00:15:19,980 --> 00:15:23,570 etter at du sender den, så hvis jeg starter med Angry Birds, 223 00:15:23,570 --> 00:15:26,840 og da jeg gjør en oppdatering, og jeg ønsker ikke å lansere en ny versjon 224 00:15:26,840 --> 00:15:34,230 Jeg tror jeg kan kalle det Angry Birds 2 mens jeg er på samme versjon syklus. 225 00:15:34,230 --> 00:15:36,780 Det ville bare dukke opp som en oppdatering. 226 00:15:36,780 --> 00:15:39,790 Det eneste som må være unik er denne pakken 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 Vel, du bare se om du ser på kildekoden eller hvis det er noen form for feil. 229 00:15:44,680 --> 00:15:47,580 Komponentene inkluderer aktiviteter, så må vi erklære 230 00:15:47,580 --> 00:15:49,070 noen form for aktivitet vi bruker. 231 00:15:49,070 --> 00:15:53,430 Dette er en tillatelse slags ting. 232 00:15:53,460 --> 00:15:58,150 >> Fordi Android ikke har denne strenge søknadsprosessen 233 00:15:58,150 --> 00:16:02,210 for innsending av apps i stedet de bare gjør alt basert off av tillatelser 234 00:16:02,210 --> 00:16:04,300 og erklære ting i Manifest. 235 00:16:04,300 --> 00:16:06,380 SDK versjon er også viktig. 236 00:16:06,380 --> 00:16:10,330 Vi kan sette bruk som SDK minimum versjon noe. 237 00:16:10,330 --> 00:16:16,010 Selvfølgelig vil du lage koden 238 00:16:16,010 --> 00:16:18,570 og design for de nyere operativsystemer. 239 00:16:18,570 --> 00:16:20,840 Kanskje ikke det nyeste, kanskje ikke Jelly Bean. 240 00:16:20,840 --> 00:16:23,610 Kanskje du ønsker å designe primært for Ice Cream Sandwich, 241 00:16:23,610 --> 00:16:27,120 selv om de er ganske mye det samme i form av design beslutninger 242 00:16:27,120 --> 00:16:30,550 og de faktiske biblioteker og APIer. 243 00:16:30,550 --> 00:16:36,250 Men i stedet har folk 244 00:16:36,250 --> 00:16:40,050 av den opprinnelige Android-versjonen-lignende Donut vei tilbake da- 245 00:16:40,050 --> 00:16:43,420 som fortsatt måtte bruke som forsøker å laste ned programmet og deretter si 246 00:16:43,420 --> 00:16:46,160 det fungerer ikke på telefonen min kan du sette minimum versjon 247 00:16:46,160 --> 00:16:48,620 og har det være Gingerbread eller Ice Cream Sandwich 248 00:16:48,620 --> 00:16:53,300 eller hva du føler deg komfortabel innsending. 249 00:16:53,300 --> 00:16:57,170 Og dette er et eksempel på Manifest. Vi kan se på den faktiske en i en bit. 250 00:16:57,170 --> 00:17:00,900 >> Ok, vi bare gå videre med demoen nå. 251 00:17:00,900 --> 00:17:08,900 Dette er demoen hvis du Google Android bygge din første app eller noe sånt. 252 00:17:08,900 --> 00:17:12,089 Vi vil gå gjennom alt som skjer der inne, 253 00:17:12,089 --> 00:17:17,690 og beklager, bare for en referanse som her vet Java i noen grad? 254 00:17:17,690 --> 00:17:28,310 Ok, så Java er ny kodespråket for folk flest kommer ut av CS50. 255 00:17:28,310 --> 00:17:31,850 Kort fortalt å gå over igjen hva det står her, 256 00:17:31,850 --> 00:17:35,580 hva vi ønsker å gjøre er stedet justere denne hello world program 257 00:17:35,580 --> 00:17:38,620 at alt den gjør er det lanseres og det sier hallo verden 258 00:17:38,620 --> 00:17:43,580 og det sier Hei CS50 på toppen fordi det er den aktiviteten navn 259 00:17:43,580 --> 00:17:47,190 vi kommer til å forsøke å gjøre et tekstfelt og en knapp 260 00:17:47,190 --> 00:17:50,680 slik at når vi trykker på denne knappen vil det ta teksten 261 00:17:50,680 --> 00:17:53,660 fra tekstfeltet og lansere en ny aktivitet, og det vil si 262 00:17:53,660 --> 00:17:58,380 uansett den tekst sagt i aktivitet, og dette er relativt enkel. 263 00:17:58,380 --> 00:18:00,650 Det er ikke veldig interessant. Du ville ikke ønsker å slippe noen app som dette. 264 00:18:00,650 --> 00:18:03,880 Men det demonstrerer noen viktige design-ting. 265 00:18:03,880 --> 00:18:07,030 >> Vi må samhandle med Manifest, med layout-filer, 266 00:18:07,030 --> 00:18:12,440 med kildekoden, og du kan se hvordan du starter en aktivitet fra en annen. 267 00:18:19,740 --> 00:18:23,060 Vi begynner med oppsettet for vår første aktivitet, 268 00:18:23,060 --> 00:18:27,320 som jeg vet det er litt lite, 269 00:18:27,320 --> 00:18:32,660 men som du kan se akkurat nå, er alt det er det har vår logo som vi skapte, 270 00:18:32,660 --> 00:18:36,310 aktiviteten navn, og det sier hallo verden i sentrum. 271 00:18:36,310 --> 00:18:40,400 I stedet, jeg først kommer til å gjø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 kan slå opp og er verdt å gå over på et tidspunkt i forhold til oppsett. 274 00:18:45,870 --> 00:18:47,310 Det er mye som HTML. 275 00:18:47,310 --> 00:18:52,640 Vi sa det er egentlig ikke verdt å vite i form av en programmatisk forstand, 276 00:18:52,640 --> 00:18:55,840 men det er så mange forskjellige oppsett du kan kontrollere, 277 00:18:55,840 --> 00:18:57,970 og det er akkurat som CSS i form av stiler. 278 00:18:57,970 --> 00:19:01,590 >> Det er mye som skjer bare i form av estetikk her, 279 00:19:01,590 --> 00:19:08,930 og ja, det er verdt å lære, men det er den slags ting du bør se opp 280 00:19:08,930 --> 00:19:11,810 som du går og du føler at du trenger noe nytt. 281 00:19:11,810 --> 00:19:17,030 Jeg kan dra nytte av noen av de ADT verktøy her i hvert fall til å begynne med. 282 00:19:17,030 --> 00:19:21,930 Jeg skal lage et tekstfelt, og jeg vil gjøre en knapp. 283 00:19:21,930 --> 00:19:24,100 Legg dem rett ved siden av hverandre. 284 00:19:24,100 --> 00:19:28,200 De har allerede endre størrelsen på riktig måte. 285 00:19:28,200 --> 00:19:31,320 Sorry, igjen, kommer tilbake til forskjellen mellom lineær layout og relativ layout, 286 00:19:31,320 --> 00:19:34,830 en lineær utforming gir en litt mer funksjonalitet 287 00:19:34,830 --> 00:19:38,720 når det gjelder å fylle mellomrommet og å sørge 288 00:19:38,720 --> 00:19:42,790 Vi posisjonerer ting horisontalt eller vertikalt. 289 00:19:42,790 --> 00:19:46,130 Den store forskjellen mellom en lineær layout og en relativ layout 290 00:19:46,130 --> 00:19:50,250 er den relative layout posisjoner alt i forhold til andre visninger, 291 00:19:50,250 --> 00:19:52,630 og den gode tingen om det er at det tar kortere tid å tegne 292 00:19:52,630 --> 00:19:56,120 fordi operativsystemet ser på all koden og sier dette går 293 00:19:56,120 --> 00:19:58,270 i forhold til dette her, her. 294 00:19:58,270 --> 00:20:03,170 Det betyr at den gjør færre målinger enn en hel haug med nestede lineære oppsett, 295 00:20:03,170 --> 00:20:06,840 som jeg ville ha å gjøre hvis jeg ønsket at ting skal gå vertikalt her. 296 00:20:06,840 --> 00:20:10,510 >> Jeg har allerede noen ting går horisontalt, så jeg trenger en annen lineær layout 297 00:20:10,510 --> 00:20:14,560 å hekke dem vertikalt, men hvis jeg gjorde en relativ layout jeg kunne si 298 00:20:14,560 --> 00:20:18,140 holde dette mot venstre, dette til høyre, og dette nedenfor. 299 00:20:18,140 --> 00:20:21,850 Men fordi jeg vil at de skal fylle akkurat nå er jeg kommer til å bruke en lineær layout, 300 00:20:21,850 --> 00:20:24,510 og du kan se det allerede gjør mye av disse tingene for oss. 301 00:20:24,510 --> 00:20:28,890 Alle synspunkter må ha en eiendom av bredde og høyde, 302 00:20:28,890 --> 00:20:33,410 og dette skjer for å ha en vekt på 1, og dette har en vekt på 1 303 00:20:33,410 --> 00:20:36,050 slik at det fyller hele rommet. 304 00:20:36,050 --> 00:20:38,460 Men bredden og høyden er viktigst. 305 00:20:38,460 --> 00:20:45,880 Denne ID-feltet her er ikke viktig innenfor selve layouten 306 00:20:45,880 --> 00:20:49,060 med mindre vi bruker en relativ layout og sier vi kan referere 307 00:20:49,060 --> 00:20:52,990 en vis stilling i referanse til en annen. 308 00:20:52,990 --> 00:20:56,170 Hvis vi hadde en relativ layout vi kunne si stilling dette under denne 309 00:20:56,170 --> 00:20:59,390 eller over denne ID, men dette ID vil være viktig 310 00:20:59,390 --> 00:21:01,660 når vi bruker det i koden vår, fordi vi kan referere 311 00:21:01,660 --> 00:21:05,610 disse individuelle visninger på denne måten. 312 00:21:05,610 --> 00:21:10,350 >> Og så kan du se koden requestFocus, som er noe du sannsynligvis så i PSett 7. 313 00:21:10,350 --> 00:21:15,370 Det var en autofokus tag eller noe langs disse linjene for ett av feltene. 314 00:21:15,370 --> 00:21:22,100 Og en ting, selvfølgelig, kan vi gjøre akkurat som i HTML, 315 00:21:22,100 --> 00:21:25,660 og legg merke til en av de fine tingene med ADT er at det autocompletes her. 316 00:21:25,660 --> 00:21:29,930 Kanskje ikke så pent som det gjorde i Xcode, men det gjør likevel, 317 00:21:29,930 --> 00:21:32,860 og vi kunne si hint og deretter gi den en slags streng 318 00:21:32,860 --> 00:21:37,070 liker skrive en melding, 319 00:21:37,070 --> 00:21:41,300 og hvis jeg gir det et øyeblikk, også legge merke til at jeg blir litt feil her 320 00:21:41,300 --> 00:21:44,610 sier at vi skal bruke en streng ressurs for dette, 321 00:21:44,610 --> 00:21:48,820 så hvis jeg lar deg gjøre det noe av det harde arbeidet for meg 322 00:21:48,820 --> 00:21:57,320 Jeg kan velge denne strengen, gjør refractor Android og ekstrakt Android streng. 323 00:21:57,320 --> 00:22:00,570 Jeg kan gi den det navnet, skriver en melding, 324 00:22:00,570 --> 00:22:04,180 og hva det gjorde er nå erstattet som hardkodet streng 325 00:22:04,180 --> 00:22:07,980 med en referanse til strengen i strengen. xml fil, 326 00:22:07,980 --> 00:22:10,200 noe som betyr at nå er dette her. 327 00:22:10,200 --> 00:22:15,560 >> Og jeg vet at det virker litt triviell og som ekstra arbeid på dette punktet, 328 00:22:15,560 --> 00:22:17,840 men når du har en hel haug av ting, en hel haug med strykere, 329 00:22:17,840 --> 00:22:20,750 det er veldig viktig, og spesielt for lokalisering 330 00:22:20,750 --> 00:22:26,920 fordi som jeg nevnte tidligere, er Android en svært globalt brukte operativsystemet 331 00:22:26,920 --> 00:22:35,950 at du bare kan gjøre verdier-en eller verdier-sp 332 00:22:35,950 --> 00:22:44,320 eller noe for engelsk eller spansk eller andre språk. 333 00:22:44,320 --> 00:22:50,210 Og så har du sannsynligvis ikke har hatt denne opplevelsen ennå 334 00:22:50,210 --> 00:22:53,030 siden vi ikke gjøre mye JavaScript i form av web-programmering, 335 00:22:53,030 --> 00:22:56,850 men vi kan også gjøre dette felt kalt onClick for tasten 336 00:22:56,850 --> 00:23:02,350 og dette er en måte å referere i layouten vår 337 00:23:02,350 --> 00:23:06,570 at vi ønsker en viss funksjon for å bli kalt inn vår kildekoden. 338 00:23:06,570 --> 00:23:09,420 Jeg kommer til å kalle dette SendMessage, 339 00:23:09,420 --> 00:23:13,390 og for å gjøre dette arbeidet det betyr i hovedaktiviteten her 340 00:23:13,390 --> 00:23:19,180 Jeg blir nødt til å lage en funksjon som er offentlig 341 00:23:19,180 --> 00:23:22,250 slik at den kan nås av oppsettet. 342 00:23:22,250 --> 00:23:25,930 Det er ugyldig fordi du bare ikke vil at den skal returnere noe. 343 00:23:25,930 --> 00:23:37,760 Vi kaller det SendMessage, og det tar en visning, 344 00:23:37,760 --> 00:23:43,690 som er en slags sammenheng at vi kan forankre denne metoden 345 00:23:43,690 --> 00:23:47,160 til at individuelle syn når vi kjører den. 346 00:23:47,160 --> 00:23:50,090 >> Og jeg vet ikke om du la merke-vel, ville du ikke har lagt merke til, 347 00:23:50,090 --> 00:24:02,370 men på dette punktet her 348 00:24:02,370 --> 00:24:06,930 dette synet er en type som ennå ikke er tatt med, 349 00:24:06,930 --> 00:24:10,630 og selvfølgelig, du vet alle fra CS50 om ikke inkludert typer. 350 00:24:10,630 --> 00:24:13,120 Det fine med IDE som Eclipse er at 351 00:24:13,120 --> 00:24:17,520 hvis du glemmer å inkludere en type det vil understreke med en liten rød snirklete 352 00:24:17,520 --> 00:24:19,680 og deretter gi deg muligheten til å importere utsikten. 353 00:24:19,680 --> 00:24:23,130 En rask måte å gjøre det er kontroll skift O, og det vil importere 354 00:24:23,130 --> 00:24:27,070 alle filene som det må. 355 00:24:27,070 --> 00:24:33,670 Nå som vi har denne funksjonen SendMessage, 356 00:24:33,670 --> 00:24:46,560 som kommer til å sende melding fra MainActivity til en ny aktivitet, 357 00:24:46,560 --> 00:24:55,230 vi er nødt til å bruke en intensjon om å lansere den nye aktiviteten fra denne, 358 00:24:55,230 --> 00:25:02,240 så vi vil sannsynligvis ønske å skape en global konstant eller også spesielt en offentlig konstant 359 00:25:02,240 --> 00:25:06,240 som vil hjelpe oss å vite hvordan vi kommer til å referere til strengen 360 00:25:06,240 --> 00:25:09,090 fordi når vi skaper en intensjon om vi ikke bare kalle en ny aktivitet, 361 00:25:09,090 --> 00:25:11,520 men vi kan også gi den en bunt av informasjon. 362 00:25:11,520 --> 00:25:14,720 En bunt er faktisk det uttrykket som Android bruker, 363 00:25:14,720 --> 00:25:21,470 og det er en måte å si gi den ekstra data, som det ikke kan være av en meget sofistikert datatype, 364 00:25:21,470 --> 00:25:24,510 men vi kan definitivt ta boolske eller strenger eller ints. 365 00:25:24,510 --> 00:25:29,750 Den slags ting. 366 00:25:29,750 --> 00:25:34,230 >> Føl deg fri til å spørre om noen av disse kvalifiseringskamper her, 367 00:25:34,230 --> 00:25:36,900 offentlig, endelig, statisk. 368 00:25:36,900 --> 00:25:38,610 Publikum er det viktigste. 369 00:25:38,610 --> 00:25:47,090 Det betyr at vi kan få tilgang til denne variabelen fra andre kildekoden filer 370 00:25:47,090 --> 00:25:49,590 for eksempel når vi oppretter en ny aktivitet. 371 00:25:49,590 --> 00:25:52,190 Vi kan referere til streng i denne filen. 372 00:25:52,190 --> 00:25:57,160 Hvis det er privat, betyr det at det er begrenset til denne personen fil her. 373 00:25:57,160 --> 00:26:02,430 Men vi vil kalle dette noe sånt som ekstra meldingen. 374 00:26:16,260 --> 00:26:23,300 Nå har vi gjort denne funksjonen, og hvis vi klikker på knappen, vil denne funksjonen bli kalt. 375 00:26:23,300 --> 00:26:27,970 Men vi har ikke gjort noe, selvsagt, med funksjonen. 376 00:26:27,970 --> 00:26:33,130 Hva vi ønsker å gjøre nå er å opprette en ny aktivitet, 377 00:26:33,130 --> 00:26:35,350 den aktiviteten som faktisk vil bli lansert. 378 00:26:35,350 --> 00:26:44,330 I Eclipse kan vi si nytt, Android aktivitet, blank aktivitet. 379 00:26:44,330 --> 00:26:46,530 Vi kan gi den et navn. 380 00:26:46,530 --> 00:26:57,050 La oss kalle det vår resultat aktivitet. 381 00:26:57,050 --> 00:27:04,430 Og så dette hierarkisk overordnede feltet er mulig å angi 382 00:27:04,430 --> 00:27:08,180 Slik virksomhet knyttet til hverandre. 383 00:27:08,180 --> 00:27:11,020 Fordi dette vil bli lansert fra annen aktivitet 384 00:27:11,020 --> 00:27:27,520 vi bør spesifisere at den har det overordnede hovedaktivitet. 385 00:27:27,520 --> 00:27:31,220 >> Og jeg kunne ha klikket på neste felt der, som ville ha fortalt oss 386 00:27:31,220 --> 00:27:33,830 noen valgfrie felt som det ble også inkludert, 387 00:27:33,830 --> 00:27:38,800 men det fine med ADT, igjen, er at hvis jeg ruller ned her 388 00:27:38,800 --> 00:27:45,740 i Manifest husk at alt dette virkelig ble inkludert som standard 389 00:27:45,740 --> 00:27:48,930 når vi opprinnelig opprettet prosjektet, 390 00:27:48,930 --> 00:27:53,090 og nå fordi vi brukte dette skape en ny aktivitet i stedet for bare 391 00:27:53,090 --> 00:27:58,610 legge vår egen klasse filen fordi vi gikk gjennom GUI deres for å gjøre dette 392 00:27:58,610 --> 00:28:01,930 det allerede lagt alt dette til Manifest for oss, 393 00:28:01,930 --> 00:28:06,020 noe som betyr bare at nå operativsystemet ikke vil klage 394 00:28:06,020 --> 00:28:09,400 når vi prøver å lansere denne aktiviteten. 395 00:28:09,400 --> 00:28:14,620 Og det kan også, selvfølgelig, ga det en etikett, som også viser seg i strenger. 396 00:28:14,620 --> 00:28:17,340 Det gjør en masse ting på baksiden slutten for oss. 397 00:28:17,340 --> 00:28:20,140 Uansett, nå som vi har dette resultatet aktivitet også, 398 00:28:20,140 --> 00:28:23,810 selve kildekoden filen i kilden 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 dette hierarkiske forelder 401 00:28:37,790 --> 00:28:46,640 det ga dette feltet android.r.ide.home i denne onOption valgte tingen. 402 00:28:46,640 --> 00:28:49,020 >> Hva dette er i utgangspunktet sier er det en menyknapp nå 403 00:28:49,020 --> 00:28:53,110 at i øvre venstre hjørne av skjermen 404 00:28:53,110 --> 00:29:02,220 hvis jeg går tilbake til PowerPoint der vi først snakket om handlingen bar 405 00:29:02,220 --> 00:29:05,380 på grunn av den hierarkiske forelder nå er det en liten pil tilbake hit 406 00:29:05,380 --> 00:29:10,610 og dette er klikkbare, slik at vi skal kunne-etter at vi faktisk kjøre dette programmet- 407 00:29:10,610 --> 00:29:15,360 gå tilbake, og det er en måte å spare oss en liten bit av koden der. 408 00:29:26,220 --> 00:29:40,180 Nå innenfor denne-vel, synes det å være klager på at for et øyeblikk. 409 00:29:40,180 --> 00:29:43,910 La oss kommentere det ut. 410 00:29:43,910 --> 00:29:48,260 Nå, for å faktisk samhandle med disse to aktivitetene, 411 00:29:48,260 --> 00:29:55,020 vi må lage en intensjonsavtale som omfatter alle disse dataene. 412 00:29:55,020 --> 00:29:58,950 I SendMessage nå jeg kommer til å cruise gjennom noen biter av kode 413 00:29:58,950 --> 00:30:00,700 og forklare det som jeg går. 414 00:30:00,700 --> 00:30:06,280 En hensikt, som jeg sa, er en måte å starte en aktivitet fra en annen. 415 00:30:06,280 --> 00:30:10,000 Hensikten er den typen. Vi skaper en variabel myIntent. 416 00:30:10,000 --> 00:30:13,980 >> Og dette er faktisk et objekt, det er derfor vi må ringe nytt. 417 00:30:13,980 --> 00:30:18,500 Det er vanlig Java bruk der, som kan ta en liten bit av å bli vant til. 418 00:30:18,500 --> 00:30:23,900 Dette betyr at vi bruker aktivitet eller klassen MainActivity, 419 00:30:23,900 --> 00:30:28,630 og hensikt på den måten tar aktiviteten det kommer fra 420 00:30:28,630 --> 00:30:36,060 og aktiviteten det kommer til, som vi kaller ResultActivity, 421 00:30:36,060 --> 00:30:38,170 og som er dens egen klasse. 422 00:30:38,170 --> 00:30:41,720 Inkludere den. 423 00:30:41,720 --> 00:30:47,370 Og da som jeg nevnte tidligere, ga vi at ID til endre tekstfeltet 424 00:30:47,370 --> 00:30:53,710 og teksten utsikt, så for å programmatisk fange 425 00:30:53,710 --> 00:31:01,860 teksten som finnes i RedigerTekst 426 00:31:01,860 --> 00:31:06,710 vi bruker denne funksjonen kalles findViewByID, 427 00:31:06,710 --> 00:31:13,660 som ligner på noe som du skal bruke når du prøver å få felt fra DOM. 428 00:31:13,660 --> 00:31:17,560 Kanskje David snakker om dette i foredraget. 429 00:31:17,560 --> 00:31:26,600 Men det er bare en måte å få dem-det er derfor vi merke disse tingene med disse feltene. 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 meg der. 432 00:31:35,220 --> 00:31:42,010 >> Og så får vi også inkludere-dette RedigerTekst nå som vi har feltet 433 00:31:42,010 --> 00:31:47,640 innenfor vårt program, gjorde alt som findViewByID var i utgangspunktet 434 00:31:47,640 --> 00:31:50,870 du kan tenke på det som gir oss en referanse til at RedigerTekst. 435 00:31:50,870 --> 00:31:54,570 Nå ønsker vi å få strengen eller meldingen 436 00:31:54,570 --> 00:32:00,670 innen den RedigerTekst som vi kan gjøre ved å bruke- 437 00:32:00,670 --> 00:32:03,360 du kunne tenke på EditText som en struct- 438 00:32:03,360 --> 00:32:07,600 vi kaller det et objekt i Java-med en hel haug med forskjellige metoder 439 00:32:07,600 --> 00:32:10,650 eller felt og attributter knyttet til den. 440 00:32:10,650 --> 00:32:15,510 Når jeg sier RedigerTekst. det gir meg sjansen til å få tilgang 441 00:32:15,510 --> 00:32:19,770 en metode som gettext, som vil få dagens tekst 442 00:32:19,770 --> 00:32:23,990 i at RedigerTekst og deretter konvertere som eksplisitt 443 00:32:23,990 --> 00:32:26,520 til en streng, og vi har lagret meldingen. 444 00:32:26,520 --> 00:32:32,730 Nå er vi faktisk ønsker å gjøre noe med det forsett vi skapte bare noen øyeblikk siden. 445 00:32:32,730 --> 00:32:40,250 Jeg vil sette ekstra som det heter i den hensikt, 446 00:32:40,250 --> 00:32:43,330 som, igjen, som jeg sa før, er dette en måte å skape bunten 447 00:32:43,330 --> 00:32:45,980 med en hel haug av data. 448 00:32:45,980 --> 00:32:50,920 Ekstra budskap er vår kode, slik at vi vet hva vi lagrer dette under, 449 00:32:50,920 --> 00:32:56,700 og da er jeg inkludert i meldingen. 450 00:32:56,700 --> 00:33:04,870 >> Og så kan vi faktisk starte aktivitet ved å gi den parameteren myIntent. 451 00:33:04,870 --> 00:33:10,630 Og dette faktisk vil starte aktivitet, så nå siden jeg oppgraderte til Windows 8 452 00:33:10,630 --> 00:33:15,870 det kan være noen feil som dukker opp kort, men prøv å overse dem. 453 00:33:28,010 --> 00:33:30,310 Og dette er Android-emulatoren. 454 00:33:30,310 --> 00:33:33,540 Forhåpentligvis vil koden faktisk dukker opp i et øyeblikk. 455 00:33:33,540 --> 00:33:36,680 Igjen, ignorerer alle de små tingene. 456 00:33:36,680 --> 00:33:42,290 Men Android emulator du kan emulere en versjon av operativsystemet 457 00:33:42,290 --> 00:33:45,180 fra de tidligste de, 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 akkurat nå, dette er noe vi har gjort. 460 00:33:53,150 --> 00:33:55,780 Dette har MainActivity, den RedigerTekst, knappen. 461 00:33:55,780 --> 00:34:01,550 Jeg kan skrive noe her, men hva er det vi mangler på dette punktet? 462 00:34:01,550 --> 00:34:05,190 Vi gjorde det feltet i MainActivity som kommer til å sende meldingen 463 00:34:05,190 --> 00:34:08,570 til den annen aktivitet, men på dette punktet 464 00:34:08,570 --> 00:34:12,330 vi har ikke gjort noe i den andre aktiviteten, så det kommer ikke til å få noe. 465 00:34:12,330 --> 00:34:18,800 La oss avslutte denne delen før vi går videre. 466 00:34:18,800 --> 00:34:25,760 >> Dette resultatet aktivitet, hva vi må gjøre er at vi må gjøre er at vi må- 467 00:34:25,760 --> 00:34:30,070 Vi kan også referere til intensjon i denne aktiviteten, 468 00:34:30,070 --> 00:34:33,580 så vi må fange hensikt, som er veldig enkel. 469 00:34:33,580 --> 00:34:40,780 Det er en funksjon inkludert i aktiviteten klassen, 470 00:34:40,780 --> 00:34:47,610 så vi kan bare si "Få meldingen fra intensjonen." 471 00:34:47,610 --> 00:34:56,260 "Intent myIntent = getIntent." 472 00:34:56,260 --> 00:35:00,030 Og dette vil gi oss, nå myIntent er et objekt, 473 00:35:00,030 --> 00:35:05,380 som er en referanse til den hensikt som førte oss til denne aktiviteten. 474 00:35:05,380 --> 00:35:10,130 MainActivity ringer og gir ekstra informasjon å resultere aktivitet. 475 00:35:10,130 --> 00:35:14,070 Resultatet aktivitet ser nå på den hensikt at det førte her, 476 00:35:14,070 --> 00:35:23,540 og vi kan få tilgang til meldingen som vi opprettet i den andre, 477 00:35:23,540 --> 00:35:26,370 getStringExtra, og dette vil autofullfør for meg. 478 00:35:26,370 --> 00:35:31,190 Og så husk, måten vi merket at litt av data 479 00:35:31,190 --> 00:35:38,400 var ved å gi den dette feltet akkurat her, denne offentlige streng, 480 00:35:38,400 --> 00:35:42,080 som er koden for strengen vi faktisk inkludert. 481 00:35:42,080 --> 00:35:48,450 >> Hvis jeg sier MainActivity.Extra_Message 482 00:35:48,450 --> 00:35:52,200 det er der, og dette er liksom som parameter navn 483 00:35:52,200 --> 00:35:55,330 når vi passerte kode fra kontrolleren til malen, 484 00:35:55,330 --> 00:35:57,680 når vi vil si tittelen pilen noe. 485 00:35:57,680 --> 00:36:01,140 Det er samme slags anelse om det. 486 00:36:01,140 --> 00:36:07,130 Nå husker dette. 487 00:36:07,130 --> 00:36:12,230 Vi hadde også denne bilen opprettet eller auto generert kode 488 00:36:12,230 --> 00:36:16,410 for resultatet aktivitet, som inkluderer teksten visningen i midten 489 00:36:16,410 --> 00:36:19,690 som sier hallo verden. 490 00:36:19,690 --> 00:36:27,510 Vi kan potensielt gjøre det større. 491 00:36:27,510 --> 00:36:33,980 La oss gjøre det først. 492 00:36:33,980 --> 00:36:39,550 Vi kan gjøre det 40 tetthet uavhengige piksler. 493 00:36:39,550 --> 00:36:42,670 La oss se, det er super enorme. Det vil være greit. 494 00:36:42,670 --> 00:36:48,180 Og da for å referere til denne personen tekst visning i koden vår 495 00:36:48,180 --> 00:36:53,890 vi må gi den en ID, 496 00:36:53,890 --> 00:36:58,350 og for å gjøre det vi sier @ + id, som betyr at vi tilordne den ID. 497 00:36:58,350 --> 00:37:02,480 Hvis vi bare sa @ id det vil anta vi refererer en ID som allerede eksisterer, 498 00:37:02,480 --> 00:37:07,760 og la oss kalle dette vår resultTextView. 499 00:37:07,760 --> 00:37:10,570 Og legg merke til at i XML er det ikke behov for semikolon eller noe. 500 00:37:10,570 --> 00:37:12,380 Alt er innen disse kodene. 501 00:37:12,380 --> 00:37:15,530 Det er veldig likt HTML i mange sanser. 502 00:37:15,530 --> 00:37:22,760 >> Det tar litt tid å venne seg til, men til slutt vil du føle deg ganske komfortabel med det. 503 00:37:22,760 --> 00:37:31,320 La oss oppdatere teksten for våre resultat tekstvisning, 504 00:37:31,320 --> 00:37:35,650 og som vi gjorde da vi får det edit tekstfeltet i vår annen aktivitet 505 00:37:35,650 --> 00:37:46,630 i MainActivity her vil vi også likeså- 506 00:37:46,630 --> 00:37:54,890 vi vil finne visning av ID. 507 00:37:54,890 --> 00:37:59,640 Og R, i tilfelle jeg ikke nevne dette før, er referansen til vår ressursene mappe, 508 00:37:59,640 --> 00:38:05,350 og deretter ID er en referanse til alt i ressursene mappen, alle IDer, 509 00:38:05,350 --> 00:38:10,060 og resultTextView. 510 00:38:10,060 --> 00:38:13,010 Og akkurat som før, er resultTextView et objekt, 511 00:38:13,010 --> 00:38:15,780 noe som betyr at den har alle disse egenskaper knyttet til den. 512 00:38:15,780 --> 00:38:20,610 Når vi bruker GetText for tekstredigering for dette tekstfeltet eller teksten visning 513 00:38:20,610 --> 00:38:23,980 vi faktisk kan bruke setText, 514 00:38:23,980 --> 00:38:26,960 og da har vi allerede funnet meldingen fra intensjonen, 515 00:38:26,960 --> 00:38:35,760 så jeg kan si melding, og dette vil faktisk sette meldingen. 516 00:38:35,760 --> 00:38:41,820 >> Det tar et øyeblikk å starte, og så kan vi se om det krasjer, 517 00:38:41,820 --> 00:38:48,670 men noen spørsmål om denne prosessen rett der, den slags samhandling? 518 00:38:48,670 --> 00:38:51,490 På mange måter er det ukomplisert. 519 00:38:51,490 --> 00:38:53,960 Grunnen til at jeg går gjennom noe relativt enkel 520 00:38:53,960 --> 00:38:57,330 er, igjen, fordi du får se samspillet mellom layout, 521 00:38:57,330 --> 00:38:59,520 kildekoden, hvordan du refererer til ting 522 00:38:59,520 --> 00:39:07,680 og kanskje få litt eksponering for hvordan Java jobber der. 523 00:39:07,680 --> 00:39:16,500 Hvis jeg faktisk skriver noe her, som ohai, og da jeg trykker på knappen, 524 00:39:16,500 --> 00:39:22,260 det lanseres en ny aktivitet, og at teksten view sier ohai. 525 00:39:22,260 --> 00:39:27,640 Det er veldig enkelt, men forhåpentligvis etter at eksemplet 526 00:39:27,640 --> 00:39:32,310 du liksom se hvordan dette samspillet fungerer, og nå som rot av filer 527 00:39:32,310 --> 00:39:36,870 på venstre side for alle disse prosjektmapper, håper du vet hvor du skal lete nå. 528 00:39:36,870 --> 00:39:38,700 Dette er din kildekoden området. 529 00:39:38,700 --> 00:39:41,760 >> Layout er egentlig det eneste du skal ta med til du inkludere bilder 530 00:39:41,760 --> 00:39:46,370 og drawables eller hva, og verdier, som vil inkludere strenger, 531 00:39:46,370 --> 00:39:51,960 som vi nevnte, og deretter stiler er noe som er liksom som CSS. 532 00:39:51,960 --> 00:39:56,410 Ta det opp når du vil, men inntil du føler deg komfortabel med å legge ekstra flair 533 00:39:56,410 --> 00:40:02,520 til søknaden din er det ingen grunn til å bekymre det for mye. 534 00:40:02,520 --> 00:40:07,410 Bare for å bryte opp en annen ting du vil definitivt ønsker å inkludere- 535 00:40:07,410 --> 00:40:13,010 forutsatt at du ønsker å integrere kule funksjoner og spare deg noen ekstra koding- 536 00:40:13,010 --> 00:40:16,460 ville være å inkludere 3. parts biblioteker. 537 00:40:16,460 --> 00:40:19,840 Her er den lille Android fyren med Sherlock Holmes hatten. 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 i utgangspunktet betyr at handlingen bar du så tidligere, 540 00:40:25,390 --> 00:40:29,590 som nå er standard i Ice Cream Sandwich og Jelly Bean, 541 00:40:29,590 --> 00:40:33,100 Hvis du ønsker å bringe den slags brukeropplevelsen for brukere på eldre versjoner 542 00:40:33,100 --> 00:40:39,290 og sparer deg fra å bekymre hvordan brukeren skal navigere 543 00:40:39,290 --> 00:40:42,490 på eldre versjoner når den tingen ikke er der du kan inkludere dette biblioteket 544 00:40:42,490 --> 00:40:46,770 og da er det bare å referansen-snarere enn standard Android 545 00:40:46,770 --> 00:40:50,250 biblioteker for handlingen bar, referere deg denne støtten biblioteket. 546 00:40:50,250 --> 00:40:53,090 >> Ting som Scoreloop, er det flott om du kommer til å inkludere et spill. 547 00:40:53,090 --> 00:40:57,280 Den lar deg legge leaderboards og prestasjoner til spill. 548 00:40:57,280 --> 00:41:00,900 AdMob er en måte å sette annonser i programmene 549 00:41:00,900 --> 00:41:02,900 i tilfelle du ønsker å gjøre litt penger på det. 550 00:41:02,900 --> 00:41:05,730 Selvfølgelig, det er Facebook og Twitter for å integrere det 551 00:41:05,730 --> 00:41:08,170 Hvis du ønsker å dele ting enkelt, et cetera. 552 00:41:08,170 --> 00:41:15,120 Dropbox, på samme måte, og Google Analytics er at diagrammet ser man det. 553 00:41:15,120 --> 00:41:19,070 Det vil være svært viktig hvis du faktisk ønsker å se hvem som er i samspill 554 00:41:19,070 --> 00:41:25,800 med din app eller hvem det er, hvordan de samhandler, et cetera. 555 00:41:25,800 --> 00:41:30,650 Google, som standard, forteller deg mye av statistikk om hvem som har installert appen 556 00:41:30,650 --> 00:41:35,020 og hva telefonene de har, hvilket operativsystem versjoner de har. 557 00:41:35,020 --> 00:41:38,080 Men hvis du ønsker å se hvem som bruker det på en daglig basis, og hvordan de bruker det 558 00:41:38,080 --> 00:41:42,860 så vil du ønsker å inkludere noen form for sporing system sånn. 559 00:41:42,860 --> 00:41:44,990 >> Når du er klar til å distribuere app 560 00:41:44,990 --> 00:41:46,930 Jeg trenger ikke å gå inn på det i for mye dybde. 561 00:41:46,930 --> 00:41:49,090 Klikk på linken her, Google Play. 562 00:41:49,090 --> 00:41:51,080 Det pleide å være Android Market. 563 00:41:51,080 --> 00:41:53,470 De omprofilert alt med Google Play, 564 00:41:53,470 --> 00:41:55,230 så nå du sender til det. 565 00:41:55,230 --> 00:41:57,140 Det er veldig grei. 566 00:41:57,140 --> 00:42:01,070 Du må inneholde en beskrivelse, noen skjermbilder. 567 00:42:01,070 --> 00:42:05,660 Som jeg sa, er det ingen godkjenningsprosess som iOS. 568 00:42:05,660 --> 00:42:07,270 Og hvor du skal dra herfra? 569 00:42:07,270 --> 00:42:09,450 Jeg viste deg en virkelig enkelt eksempel. 570 00:42:09,450 --> 00:42:13,270 Forhåpentligvis hvis det virker veldig enkelt 571 00:42:13,270 --> 00:42:15,740 så det er sannsynligvis et godt tegn. 572 00:42:15,740 --> 00:42:20,080 Hvis du i det hele tatt følte meg litt forvirret eller usikker på nøyaktig hva jeg var å skrive 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 flott sted å starte. 575 00:42:28,330 --> 00:42:31,460 Det vil snakke deg gjennom hva de kan forvente i form av søknaden design, 576 00:42:31,460 --> 00:42:33,380 hvordan brukerne normalt samhandle med det. 577 00:42:33,380 --> 00:42:36,450 Det er mye friere form enn iOS, vil jeg si, 578 00:42:36,450 --> 00:42:41,330 som det virker som tabellvisninger er-jeg vet ikke, det er deres brød og smør. 579 00:42:41,330 --> 00:42:44,690 Alt er en tabellvisning glir opp og ned. 580 00:42:44,690 --> 00:42:48,160 Med Android definitivt de oppfordrer folk til å se på det fra 581 00:42:48,160 --> 00:42:51,720 en hel haug med forskjellige 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 haug med prøveprosjekter i Android. 584 00:43:03,010 --> 00:43:05,470 Akkurat her, Android, Android Eksempel Project. 585 00:43:05,470 --> 00:43:11,870 Hvis jeg klikker på det, så jeg kan velge en versjon som av prøven prosjektene gjelder. 586 00:43:11,870 --> 00:43:13,300 Det er en hel haug med forskjellige ting her. 587 00:43:13,300 --> 00:43:16,690 Det starter med action bar kompatibilitet, 588 00:43:16,690 --> 00:43:24,610 akselerometer lek, sikkerhetskopiering og gjenoppretting, Bluetooth, gest byggmester. 589 00:43:24,610 --> 00:43:28,930 Jetboy er et eksempel spill de gir deg, som er LunarLander. 590 00:43:28,930 --> 00:43:31,250 Det finnes en hel haug med eksempler på programmer her, 591 00:43:31,250 --> 00:43:35,290 og de er alle rettet mot ulike aspekter av Android API, 592 00:43:35,290 --> 00:43:41,520 og ideen er at når du gjør din søknad 593 00:43:41,520 --> 00:43:44,110 du trenger ikke å lære alt om Android for å gjøre en Android-app. 594 00:43:44,110 --> 00:43:47,300 Du trenger bare å lære om de delene som du faktisk kommer til å bruke. 595 00:43:47,300 --> 00:43:49,340 Se på disse sample biblioteker. 596 00:43:49,340 --> 00:43:51,510 Føl deg fri til å kopiere og lime inn koden og bruke den på nytt. 597 00:43:51,510 --> 00:43:53,850 Det er en stor ting å se på vanskeligere kode 598 00:43:53,850 --> 00:43:57,060 og prøve å forstå det, er som selvfølgelig hvorfor i CS50 599 00:43:57,060 --> 00:44:01,510 vi ofte gi deg store mengder av kildekode. 600 00:44:01,510 --> 00:44:04,620 Se på noen av disse hvis du skal bruke lignende biblioteker 601 00:44:04,620 --> 00:44:08,630 og deretter bruke den til din egen kode. 602 00:44:08,630 --> 00:44:10,430 Og selvfølgelig, det er tutorials. 603 00:44:10,430 --> 00:44:12,690 Søke etter tutorials. 604 00:44:12,690 --> 00:44:17,020 Jeg fant en masse gode online som kan bringe deg opp til fart 605 00:44:17,020 --> 00:44:20,080 med det fragmenter egentlig er og hvordan du kan bruke dem. 606 00:44:20,080 --> 00:44:22,240 >> Noen av disse nye design-ting, som fragmenter, 607 00:44:22,240 --> 00:44:26,840 du egentlig ikke trenger å være bekymret med mindre du gjør en 608 00:44:26,840 --> 00:44:30,560 ganske stort i omfang prosjektet. 609 00:44:30,560 --> 00:44:32,510 De er ting som Google prøver å fase inn 610 00:44:32,510 --> 00:44:35,570 StackOverflow er selvfølgelig din venn. 611 00:44:35,570 --> 00:44:37,930 Forhåpentligvis jeg solgte deg litt på Android, 612 00:44:37,930 --> 00:44:41,640 realisere det er mye lettere å nærme seg i form av bare kodespråket. 613 00:44:41,640 --> 00:44:45,970 Java er jeg vil si mye lettere å forstå enn Objective-C. 614 00:44:45,970 --> 00:44:50,780 Android vokser jeg tror mye mer enn iOS. 615 00:44:50,780 --> 00:44:54,890 Jeg mener, er dataene der også, bortsett fra hva jeg tror. 616 00:44:54,890 --> 00:44:56,920 Det kommer til å være rundt en stund, 617 00:44:56,920 --> 00:45:00,880 og de er noen år bak i form av deres design sykluser, 618 00:45:00,880 --> 00:45:04,690 så det er liksom forståelig at de fremdeles arbeider gjennom noen av disse 619 00:45:04,690 --> 00:45:09,080 konsistens spørsmål, som denne handlingen bar er en ny ting for dem fortsatt, 620 00:45:09,080 --> 00:45:16,010 slags skape lignende brukeropplevelse på tvers av alle sine apps. 621 00:45:16,010 --> 00:45:20,650 Forhåpentligvis kan du gå fremover nå, og åpne opp Eclipse 622 00:45:20,650 --> 00:45:22,870 og lage dine egne Android-apps. 623 00:45:22,870 --> 00:45:30,240 >> Har noen noen spørsmål før vi bryte opp om noe? 624 00:45:30,240 --> 00:45:34,410 Jeg kan fortelle deg svaret er 42. 625 00:45:34,410 --> 00:45:41,990 Vel, glad koding alle, og lykke til. 626 00:45:41,990 --> 00:45:44,990 [CS50.TV]