[Powered by Google Translate] [Seminar] [Android Apps (Nu med Jelly Beans!)]
[Jordan Jozwiak] [Harvard University]
[Dette er CS50.] [CS50.TV]
>> Hej alle, og velkommen til Android Apps (Nu med Jelly Beans!) Seminar.
Det hedder Nu med Jelly Beans, selvfølgelig, fordi
den nyeste version af OS kaldes Jelly Bean.
Da jeg talte om Android sidste år og gjorde det stort set samme seminar
Jeg præsentere design mønstre og stilistiske valg for Gingerbread,
selvom Ice Cream Sandwich var kommet ud på det tidspunkt,
og det er noget, vi vil tale om fremadrettet en lille smule.
Android, selvfølgelig, har nogle problemer med fragmentering,
så det nyeste Google-operativsystem er normalt
ikke rigtig kommer til at blive udbredt blandt brugerne for potentielt op til et år, desværre.
>> Men se bort fra, vi taler om masser af grunde
Android er meget bedre end iOS.
Okay, vi taler om Android versus iOS,
nogle design paradigmer, hvordan du får sat op på bare ét dias,
og den store forskel mellem denne og sidste år er, at jeg ønsker blot at
zoom gennem nogle konceptuelle ting der arbejder med
operativsystemet og derefter gå ind i en virkelig grundlæggende eksempel.
I virkeligheden, bare det eksempel, at Google beskriver for at bygge din første app
og vi vil gå igennem det sammen og bare beskrive.
>> Jeg kender mange af jer har kun kodet i C, så Java allerede vil være
et andet perspektiv, og på denne måde kan du få dine fødder våde
og føle sig lidt mere fortrolig med det forhåbentlig.
En hurtig oversigt, Android versus iOS.
I Android er der denne ene gang udvikler gebyr på $ 25,
ingen af ​​denne $ 100 om året ting.
Der er ingen begrænsninger, hvilket betyder, at hvis jeg ønsker at indgive en app,
Jeg bare sende det, og der er ingen godkendelsesproces, som om der er for iOS.
Du kommer til at udvikle sig med Java ved hjælp af Eclipse,
som er cross-platform, så det gør ikke noget, hvis du har en Mac,
Windows eller nogle Linux maskine.
Selvfølgelig, med iOS nødt til at bruge XCode på en Mac
og Android bliver brugt af mange flere mennesker,
så hvis du vil have din app til at have en form for synlighed eller måske
tjene lidt penge fra reklamer
du sandsynligvis mere tilbøjelige til at drage fordel af Android.
>> Og én ting, der altid været kendt Android
er den ekstreme mængde af tilpasning, mens iOS er meget fast i deres måder
så de kan opretholde sikkerheden og kontrol over hver eneste lille aspekt
af designet inden for deres OS og de enkelte apps.
Android er meget fri form, og der er så mange flere muligheder.
Okay, nogle design paradigmer.
Bemærk her ligesom iOS har tablets og iPhones og iPod Touches
de er nødt til at støtte, siger, ligesom et dusin enheder, hvis du ønsker at støtte
historiske ting også.
Med Android du nødt til at støtte hundredvis af enheder,
så der er nogle ting, som Google har forsøgt at implementere
at gøre brugeren opleve en lidt mere konsekvent,
men vi vil også tale om, hvordan det betyder, at der er spørgsmål af fragmentering
at du hele tiden er nødt til at være opmærksomme på at støtte.
Fragmentering betyder, at der er mange forskellige operativsystemer,
mange forskellige telefoner med forskellige hardware kører Android alle på samme tid,
så denne graf her går tilbage til omkring 6 måneder.
Ja, 6 måneder og du kan se, hvordan den mørkeste band
på bunden er Jelly Bean, som kom ud i løbet af sommeren,
og du kan se lige nu formentlig omkring 2% af de telefoner har det.
>> Ice Cream Sandwich kom ud over et år siden,
og en fjerdedel af de telefoner har det.
Der er stadig en masse af telefoner, der bruger OS-version fra år siden.
En ting, som Google har forsøgt at gøre for at gøre brugeroplevelsen
en meget mere konsistent på tværs apps starter med Honeycomb,
som er den tablet-version, så Ice Cream Sandwich og Jelly Bean,
de er virkelig forsøger at understrege brugen af ​​denne aktion bar,
hvilket er, hvad du kan se øverst her
alt lige her, herunder denne lille knappen Indstillinger.
Det er det design valg.
Nu, når du ser de 3 prikker betyder det klikke på dette,
og der vil være en drop-down menu, som har en slags indstillinger.
Dette viser kun op, fordi jeg klikkede på denne knap.
Det er noget, de prøver at bruge til at lave apps lidt mere konsistent
over hele linjen, og så brugeren har en bedre fornemmelse af ensartet oplevelse.
>> Okay, så hvis du ikke har gjort dette allerede, eller hvis du ser derhjemme
så kan du følge disse trin for at oprette din kodning miljø.
Det vil indebære at gå til hjemmesiden her.
Du kan Google installere Android SDK
og følger nogle beskrivelser der.
De fortæller dig alt.
De har du installerer SDK, hent Eclipse Classic versionen,
selvom selvfølgelig, vi kodning i Java.
De anbefale denne ene, og så er denne ADT, Android Development Tools,
er et plugin, som du installerer i Eclipse som tillader dig at
have en langt mere strømlinet erfaring med Android i Eclipse.
Det vil give dig nogle grafiske brugergrænseflader
for udformningen af ​​synspunkter, og det vil give dig meget mere støtte
og evnen til at lancere med emulator og alt den slags ting.
Ansøgning rammer.
>> Jeg ønsker at tale om, hvordan projekterne inden Android er struktureret,
og så vil vi gå ind i et hurtigt eksempel, og forhåbentlig
kan du stille spørgsmål på noget tidspunkt, og føle sig godt tilpas i slutningen af ​​det.
Vi har nogle jargon først.
En aktivitet er som den skærm, du ser, når du starter en app.
Hele oplevelsen er selve aktiviteten,
så du kunne tænke på det som en skærm eller en visning,
men det er faktisk kildekoden side af det.
Vi har stadig kalder den faktiske grænseflade del af det en visning.
Det er lidt ligesom, hvordan i Pset 7 havde vi controlleren og derefter visningen.
Aktiviteten er mere eller mindre controlleren,
og udsigten er, hvad vi laver i form af XML
der er forbundet med denne aktivitet.
Fragmenter er noget, der er implementeret i Ice Cream Sandwich fremadrettet.
Det er bare en idé om at tage dele af visningen eller aktiviteten
og opdele dem i separate områder, så vi kan
gøre vores kode mere anvendelige for disse mange forskellige enheder
at vi er nødt til at støtte, og det er bare en måde at forsøge at
også faktor mere kode.
Services er baggrunden ting som spiller musik eller vejvisningsinformationer potentielt.
Indholdsleverandører, disse er API'er inden operativsystemet
der tillader dig at få adgang til delte data såsom kontaktoplysninger,
og derefter en hensigtserklæring er noget, vi vil bruge, når vi ønsker at starte
en ny aktivitet fra vores aktuelle aktivitet.
>> Hej Android, vil dette være et projekt, som vi vil tale om.
Jeg vil faktisk gøre det for dig, og så vil vi gøre en ting, hvor vi klikker på en knap
med noget tekst og lancere en ny aktivitet.
Meget ligetil, men jeg ønsker at gå igennem
hvad der vil gå ind i et projekt som dette.
Når du laver det nye projekt, du vil se inden for Eclipse
der er denne projekt kaldet Hello Android.
Så er der en hel masse mapper her.
Dem, du er virkelig beskæftiger sig med er kilden mappen
ressource mappe RES, og til en vis grad libs mappe til biblioteker.
Og bare så vi er på samme side med at
hvis du skulle oprette et nyt projekt,
du kan gøre dette her, så hvis jeg vil kalde det HelloAndroid,
og så er det automatisk gør en hel masse af oplysningerne til os.
Pakken Navnet formodes at være en entydig identifikator
, der normalt ville være forbundet med hjemmesiden, hvis du havde en.
>> For eksempel vil jeg kalde denne net.cs50.helloandroid.
Og jeg har allerede gjort dette projekt en gang.
Okay, undskyld. Lad os kalde det HelloCS50.
Og så vil det bede ting som hvilken slags ikon vi ønsker at gøre.
Det er alt sammen på grund af Android Developer Tools interface,
plugin, som vi føjet til Eclipse, så vi kan vælge ting som
hvilken ikon, vi ønsker, og det ville gå ind i denne dybde, hvis vi vil.
Men i sidste ende, gør bare projektet
og alt viser sig lige her.
Da jeg viste på den anden skærm,
vi har kilden mappe, og jeg vil tale om, hvad alt dette betyder snart,
men du kan se, at det samme, det tager os til HelloCS50 skærm.
Der er nogle knapper herovre til at tilføje tekst og tekst-felt layouts.
Det er lidt ligesom XCode, men desværre ikke helt så strømlinet.
Men klippene vil være din ven og ADT især for at gøre dette.
>> Okay, kilden mappen er hvor
Java filer tilbageholdes, og det er faktisk lanceringen af ​​dit program.
Det er dybest set ligesom controllere.
Den ressource mappe eller RES er, hvor vi vil holde skærmlayouts,
billeder, lyd, tekst, animation og alt andet, libs, naturligvis, biblioteker.
Og Manifest, det er den måde, at Android-systemet kender
hvordan man interagerer med din app.
Det fortæller det om tilladelser, og hvilke aktiviteter der rent faktisk vil blive kørt.
Det er alle de væsentlige oplysninger, der er nødvendige for at køre din app.
Kilden mappe-Hvis vi udvider det, som du kan se lige her.
Og et eksempel på, at en kode ville se-dette er standard kode.
Som vi kaldte det, MainActivity.
Som standard får vi onCreate, som er en funktion, der hedder, når denne aktivitet belastninger,
så du ønsker at kalde onCreate (savedInstanceState).
Dette vil gendanne eventuelle stumper af information
i tilfælde af app blev sat på pause.
>> Der er en hel aktivitet livscyklus diagram, som du kan se på
når du får lidt mere i dybden i det,
men det vigtigste linje kode der er denne setContentView funktion
hvilket vil indlæse ressource-filen for layout.
Så hvad onCreate her er dybest set gør, er det siger
når jeg opretter denne aktivitet vil jeg indlæse denne layout.
Og vi vil tale om, hvad dette layout er i en anden.
Hvis vi skulle starte, at det her ser ud præcis som dette,
og som standard, fordi vi har Eclipse gør dette, og ADT gør det for os
det er alt standardtekst kode, der er skabt for os,
og vi kan komme videre og ændre tingene, som vi kan lide.
Den ressource mappe som jeg sagde, det er her vi holder alle layout,
drawables i form af enhver slags billeder-
de kaldes drawables-og derefter lydfiler, menuer.
Det er en måde en hel bunke af XML i et dejligt sorteres mode.
Som du kan se, er der. Hdpi, ldpi, mdpi og xhdpi mapper med drawables.
Disse er forskellige skærm tætheder, så høj tæthed pixel per inch,
lav densitet, medium densitet, ekstra høj densitet.
>> Dette er igen, så vi kan støtte alle disse forskellige enheder,
og ideelt set, vil du have forskellige billeder for hver anden opløsning.
Layout er, hvor vi inkluderer alle de forskellige layouts, der vil blive anvendt i forskellige aktiviteter.
De kunne også omfatte layouts til fragmenter,
hvilket betyder delvise aktiviteter dybest set.
Hvis du ønsker at gøre noget cool som når du roterer telefonen
du vil have det til at have et andet layout, du kan gøre layout-landskabet som en anden mappe,
og Android automatisk har en hel flok af disse regler inden den ressource mappen
så det vil vide at se på forskellige mapper baseret på den aktuelle opsætning af telefonen,
hvad slags hardware du bruger.
Ligeledes denne værdibaserede v11 her og værdibaseret V14
og standardværdierne mappen det er for-
godt, værdier af sig selv, vil dette være standard værdier på tværs af alle versioner af styresystemet.
På den anden side svarer v11 og v14 med Honeycomb
og Ice Cream Sandwich, hhv.
Igen, disse er måder,-inden for disse mapper er forskellige strenge
og stilarter, så du kan tilpasse udseendet af din app
eller potentielt endda sin funktionalitet, selvom det nok ville være en dårlig idé,
baseret på den version af operativsystemet.
>> Og jeg talte om alt dette her.
Igen, trækbare, rå, layout, værdier.
Standardindstillingerne, hvis vi går ind i Hello Android eller Hello CS50 lige nu
det vil se lige sådan ud.
Det vil sige hej verden.
Som du kan se lige her med Android tekst
tekst til denne tekst synspunkt, som er dybest set bare en etiket,
er, hvad vi vil kalde det i iOS.
Det har denne sjove notation @ string / hello_world.
Det er så vi kan-vi forsøger at udtrække alle strengene,
alle de fastkodede strenge i Android i en separat mappe,
hvilket sker for at være i values.strings.
Hvis vi ser her, kan vi se, at vi har en hård-kodet streng gemt her
for hello world, og det hedder hello verden, og det er en slags
fælles design beslutning på tværs af mange platforme, som du vil til-
strenge er den slags ting, som vi ønsker at potentielt kunne ændre.
Vi ønsker ikke at styre F i vores kildekode fil i vores XML.
Vi ønsker at være i stand til at ændre dette, når vi får chancen.
>> Denne XML-fil, strings.xml, er en måde at udvinde
fastkodede strenge, der ellers ville være i vores layout ressourcer
eller i vores kildekode.
Manifestet er, hvor vi holder dette væsentlige oplysninger om programmet.
Det omfatter pakken navn. Det må være en entydig identifikator.
I modsætning til App Store til iOS navnene på de programmer
behøver ikke at være unikke, og du kan faktisk ændre navnet på din ansøgning
efter at du sender den, så hvis jeg starter ud med Angry Birds,
og så vil jeg gøre en opdatering, og jeg ønsker ikke at frigive en ny version
Jeg gætte, jeg kunne kalde det Angry Birds 2, mens jeg er på samme release cyklus.
Det ville bare vise sig som en opdatering.
Det eneste, der skal være unikke er denne pakke navn,
som ikke mange mennesker vil se.
Nå, ville du kun se, hvis du var på udkig på kildekoden, eller hvis der er en slags fejl.
Komponenterne omfatter aktiviteter, så vi er nødt til at erklære
enhver form for aktivitet, som vi bruger.
Dette er en tilladelse slags ting.
>> Fordi Android ikke har denne streng ansøgningsproces
for indsendelse af apps i stedet de bare alt baseret ud af tilladelser
og erklære ting i manifestet.
SDK version er også vigtigt.
Vi kan sætte brug som SDK minimumsversion noget.
Det er klart, du ønsker at oprette kode
og design for de nyere operativsystemer.
Måske ikke den nyeste, måske ikke Jelly Bean.
Måske du ønsker at designe primært til Ice Cream Sandwich,
selv om de er temmelig ens i form af design beslutninger
og de faktiske biblioteker og API'er.
Men snarere end at have folk
af den oprindelige Android version-lignende Donut vej tilbage, når-
som stadig tilfældigvis bruger, der forsøger at hente din ansøgning og derefter sige
det virker ikke på min telefon, kan du indstille den mindste udgave
, og har være Gingerbread eller Ice Cream Sandwich
eller hvad du føler dig tryg indsendelse.
Og dette er et eksempel på manifest. Vi kan se på de faktiske én i en bit.
>> Okay, vi bare gå videre med demoen nu.
Det er den demo, hvis du Google Android bygge din første app eller noget lignende.
Vi vil gå gennem alt, hvad der foregår derinde,
og undskyld, bare for en reference, der her kender Java på nogen måde?
Okay, så Java er nyt kodesprog for de fleste mennesker, der kommer ud af CS50.
Kort fortalt at gå over igen, hvad der står her,
hvad vi ønsker at gøre, er i stedet justere denne hello world program
at alt det gør, er det lancerer, og det siger hej verden
og det siger goddag CS50 foroven, fordi det er den aktivitet, navn
vi kommer til at forsøge at lave et tekstfelt og en knap
så når vi trykker på denne knap, det vil tage teksten
fra tekstfeltet og starte en ny aktivitet, og det vil sige
uanset hvad denne tekst siger i aktiviteten, og det er forholdsvis enkel.
Det er ikke meget interessant. Du ville ikke ønsker at frigive enhver app som dette.
Men det viser nogle vigtige design ting.
>> Vi bliver nødt til at interagere med Manifest, med layoutfiler,
med kildekoden, og du kan se, hvordan at lancere én aktivitet fra en anden.
Vi begynder med layout til vores første aktivitet
som jeg ved, det er slags små,
men som du kan se lige nu, er alt det er det har vores logo, som vi skabte,
aktiviteten navn, og det siger hej verden i midten.
I stedet, jeg først kommer til at gøre dette til en lineær layout,
en relativ layout, og disse er alle ting
du kunne se op og er værd at gå over på et tidspunkt i forhold til de layouts.
Det er meget ligesom HTML.
Vi sagde det er ikke rigtig værd at vide i form af en programmatisk forstand,
men der er så mange forskellige layouts du kan kontrollere,
og det er ligesom CSS i form af stilarter.
>> Der er en masse i gang bare i form af æstetik her,
og ja, det er værd at lære, men det er den slags ting, du bør kigge op
som du går, og du føler at du har brug for noget nyt.
Jeg kan drage fordel af nogle af de ADT værktøjer her mindst til at starte med.
Jeg vil gøre et tekstfelt, og jeg vil gøre en knap.
Sæt dem lige ved siden af ​​hinanden.
De har allerede resize korrekt.
Desværre, igen kommer tilbage til forskellen mellem lineære layout og relativ layout,
en lineær layout giver lidt mere funktionalitet
i form af indvendig plads og sikre
vi stilling tingene vandret eller lodret.
Den store forskel mellem en lineær layout og en relativ layout
er den relative layout positioner alt i forhold til andre synspunkter,
og det gode ved det er, at det tager mindre tid til at tegne
fordi operativsystemet ser på al koden og siger det går
relativt til denne her, her.
Det betyder, at det gør færre målinger end en hel masse af indlejrede lineære layouts,
som jeg ville have til at gøre, hvis jeg ønskede ting til at gå lodret her.
>> Jeg allerede har nogle ting går vandret, så jeg ville have en anden lineær layout
at reden dem lodret, men hvis jeg gjorde en relativ layout jeg kunne sige
holde dette til venstre, dette til højre og disse ting nedenfor.
Men fordi jeg vil have dem til at fylde lige nu er jeg kommer til at bruge en lineær layout,
og du kan se det allerede gør en masse af disse ting for os.
Alle synspunkter skal have en egenskab af bredde og højde,
og dette sker for at have en vægt på 1, og dette har en vægt på 1
så det fylder hele rummet.
Men bredden og højden er vigtigst.
Dette ID-felt lige her er ikke vigtigt inden den faktiske layout
medmindre vi bruger en relativ layout og siger, at vi kan referere
én visning position i forhold til en anden.
Hvis vi havde en relativ layout vi kunne sige position dette nedenfor denne ene
eller over denne id, men dette id vil være vigtigt
når vi bruger det i vores kode, fordi vi kan referere
disse individuelle synspunkter på denne måde.
>> Og så kan du se koden requestFocus, hvilket er noget du sikkert har set i Pset 7..
Der var en autofokus tag eller noget langs disse linjer for et af felterne.
Og én ting, selvfølgelig, vi kan gøre ligesom i HTML,
og bemærk en af ​​de gode ting ved ADT er, at det autocompletes her.
Måske ikke så pænt som den gjorde i XCode, men det gør ikke desto mindre,
og vi kunne sige vink og derefter give det en slags snor
gerne skrive en besked,
og hvis jeg giver det et øjeblik, også bemærke, at jeg får en lille fejl her
siger, at vi skal bruge en streng ressource for dette,
så hvis jeg lod det gøre noget af det hårde arbejde for mig
Jeg kan vælge denne streng, gør refractor Android og ekstrakt Android streng.
Jeg kan give det, at navn, skrive en besked,
og hvad det gjorde nu det erstattet, at hårdt-kodet streng
med en henvisning til strengen i strengen. xml,
hvilket betyder nu er her.
>> Og jeg ved, at virker lidt triviel og ligesom ekstra arbejde på dette punkt,
men når du har en hel masse ting, en hel flok af strygere,
det er virkelig vigtigt, og især for lokalisering
fordi som jeg nævnte tidligere, Android er et meget globalt brugt operativsystem
at du blot kan gøre værdier-en eller værdier-sp
eller noget til engelsk eller spansk eller andre sprog.
Og så har du sandsynligvis ikke har haft denne oplevelse endnu
da vi ikke gøre meget JavaScript i form af web-programmering,
men vi kan også gøre dette felt kaldet onClick til den knap,
og dette er en måde at henvisninger i vores layout
at vi ønsker en bestemt funktion til at blive kaldt i vores kildekode.
Jeg har tænkt mig at kalde denne SendMessage,
og for at gøre dette arbejde, der betyder i den vigtigste aktivitet her
Jeg bliver nødt til at oprette en funktion, der er offentlig
så det kan tilgås af layoutet.
Det er ugyldig, fordi du bare ikke ønsker det at vende noget.
Vi kalder det SendMessage, og det tager en visning,
som er en slags sammenhæng, vi kan forankre denne metode
til, at de enkelte visning, når vi kører det.
>> Og jeg ved ikke, om du har bemærket, godt, ville du ikke har bemærket,
men på dette tidspunkt lige her
dette synspunkt er en type, der endnu ikke er blevet medtaget,
og selvfølgelig, alt hvad du kender fra CS50 om ikke herunder typer.
Det gode ved IDE er ligesom Eclipse er, at
hvis du glemmer at medtage en type det vil understrege med en lille rød bølget
og derefter give dig mulighed for at importere visningen.
En hurtig måde at gøre det er kontrol skift O, og det vil importere
alle de filer, den har brug for.
Nu hvor vi har denne funktion SendMessage,
som kommer til at sende besked fra MainActivity til en ny aktivitet,
Vi bliver nødt til at bruge en hensigt om at lancere den nye aktivitet fra denne ene,
så vi vil sikkert gerne skabe en global konstant eller også særligt en offentlig konstant
som vil hjælpe os vide, hvordan vi kommer til at referere strengen
fordi når vi skaber en hensigt vi ikke bare kalde en ny aktivitet,
men vi kan også give det et bundt af oplysninger.
Et bundt er faktisk det udtryk, Android bruger,
og det er en måde at sige give det ekstra data, som den ikke kan være af en meget sofistikeret datatype,
men vi kan helt sikkert indeholde Booleans eller strenge eller Ints.
Den slags ting.
>> Du er velkommen til at spørge om nogen af ​​disse kvalifikationskampe her,
offentligheden, endelig, statisk.
Offentligheden er den vigtigste.
Det betyder, at vi kan få adgang til denne variabel fra andre kildekode filer
såsom når vi opretter en ny aktivitet.
Vi kan henvise til strengen inden for denne fil.
Hvis det er privat, det betyder det er begrænset til denne person filen her.
Men vi vil kalde det noget som ekstra budskab.
Nu har vi lavet denne funktion, og hvis vi klikker på knappen, vil denne funktion blive kaldt.
Men vi har ikke gjort noget, naturligvis, med den funktion.
Hvad vi ønsker at gøre nu, er at oprette en ny aktivitet,
den aktivitet, der rent faktisk vil blive lanceret.
I Eclipse kan vi sige nye, Android aktivitet blank aktivitet.
Vi kan give den et navn.
Lad os kalde det vores resultat aktivitet.
Og så er denne hierarkiske overordnede felt er en måde at angive
hvordan aktiviteterne er relateret til hinanden.
Fordi dette vil blive lanceret fra den anden aktivitet
Vi bør præcisere, at det har den forælder hovedaktivitet.
>> Og jeg kunne have klikket på det næste felt der, som ville have fortalt os
nogle valgfrie felter også at det er inklusive,
men nice ting om ADT, igen, er, at hvis jeg rulle ned her
i Manifest huske, at alt dette virkelig var medtaget som standard
når vi oprindeligt skabt projektet
og nu, fordi vi brugte det skabe en ny aktivitet snarere end blot
at tilføje vores egen klasse fil, fordi vi gik gennem deres GUI til at gøre dette
det allerede tilføjet alt dette til Manifest for os,
hvilket netop betyder, at nu at operativsystemet ikke vil klage
når vi forsøger at starte denne aktivitet.
Og det naturligvis også, gav det en etiket, som også viser sig i strenge.
Det gør en masse ting på bagsiden ende for os.
Anyway, nu hvor vi har dette resultat aktivitet så godt,
selve kildekoden fil i source mappen
og du kan se til kort berøre dette-
fordi vi fortalte det om denne hierarkiske forælder
det gav dette felt android.r.ide.home i denne onOption valgte ting.
>> Hvad det er dybest set siger, er at der er en menu-knap nu
at i det øverste venstre hjørne af skærmen
hvis jeg går tilbage til PowerPoint, hvor vi først talte om handling bar
på grund af den hierarkiske forælder nu er der en lille pil tilbage her
og dette er klikbare, så vi bør være i stand til-efter vi faktisk køre denne app-
gå tilbage, og det er en måde at spare os en lille smule kode der.
Nu inden for denne-godt, synes det at være at klage over, at der for et øjeblik.
Lad os kommentere, at ud.
Nu, med henblik på faktisk interagerer med disse 2 aktiviteter
vi er nødt til at oprette en hensigt, som omfatter alle disse data.
I SendMessage nu vil jeg til at cruise gennem nogle stumper af kode
og forklare, at da jeg går.
Et forsæt, som jeg sagde, er en måde at starte en aktivitet fra en anden.
Intent er den type. Vi skaber en variabel myIntent.
>> Og det er faktisk en genstand, hvilket er hvorfor vi er nødt til at kalde nye.
Det er almindeligt Java skik der, som kan tage en lille smule af at vænne sig til.
Det betyder, at vi bruger den aktivitet eller klassen MainActivity,
og hensigten på denne måde tager den aktivitet, det går fra
og aktiviteten det kommer til, som vi kalder ResultActivity,
og det er sin egen klasse.
Medtag det.
Og derefter som jeg nævnte før, gav vi dette ID til Rediger tekstfelt
og teksten visning, så for at programmeringsmæssigt fange
den tekst, der findes i RedigérTekst
Vi bruger denne funktion kaldes findViewByID,
som ligner noget, som du skal bruge, når de forsøger at få felter fra DOM.
Måske David taler om dette i foredraget.
Men det er bare en måde at få dem-det er derfor vi tagge disse ting med disse områder.
Id.editText1.
Det er allerede autocompleting for mig der.
>> Og så vil vi også-denne RedigérTekst nu hvor vi har feltet
inden for vores program, gjorde alt, findViewByID var dybest set
du kunne tænke på det som giver os en reference til denne RedigérTekst.
Nu ønsker vi at få strengen, eller meddelelsen
inden for denne RedigérTekst, som vi kan gøre ved at bruge-
du kunne tænke på RedigérTekst som en struct-
vi kalder det et objekt i Java-med en hel masse forskellige metoder
eller marker og attributter knyttet til den.
Når jeg siger RedigérTekst. det giver mig mulighed for at få adgang til
en metode som getText, som vil få den aktuelle tekst
i dette RedigérTekst og derefter konvertere, der udtrykkeligt
til en streng, og vi har gemt beskeden.
Nu skal vi rent faktisk ønsker at gøre noget med det forsæt vi skabt bare øjeblikke siden.
Jeg vil sætte ekstra som det hedder i den hensigt,
der igen, ligesom jeg sagde før, er det en måde at skabe det bundt
med en hel masse data.
Ekstra budskab er vores tag, så vi ved, hvad vi gemmer dette under,
og så er jeg også meddelelsen.
>> Og så kan vi faktisk begynde aktiviteten ved at give det parameter myIntent.
Og det rent faktisk vil starte aktiviteten, så nu da jeg opgraderede til Windows 8
der kan være nogle fejl, der dukker op kortvarigt, men prøv at ignorere dem.
Og dette er den Android emulator.
Forhåbentlig koden rent faktisk vil poppe op i et øjeblik.
Igen, ignorerer alle de små ting.
Men Android emulator du kan emulere en version af operativsystemet
fra de tidligste dem. Donut, Gingerbread
Dette er Jelly Bean 4.1.
Men som du kan se lige nu, er det noget, vi gjort.
Dette har MainActivity den RedigérTekst, knappen.
Jeg kan skrive noget her, men hvad mangler vi på dette punkt?
Vi har lavet feltet i MainActivity der kommer til at sende beskeden
den anden aktivitet, men på dette tidspunkt
Vi har ikke gjort noget i den anden aktivitet, så det kommer ikke til at modtage noget.
Lad os slutte op den del, før vi går videre.
>> 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-
kan vi også henvise til hensigt inden for denne aktivitet,
så vi er nødt til at fange den hensigt, som er virkelig simpelt.
Det er en funktion indgår i aktiviteten klassen,
så vi kan bare sige "Få besked fra hensigt."
"Intent myIntent = getIntent."
Og det vil give os-nu myIntent er et objekt,
som er en henvisning til den hensigt, der førte os til denne aktivitet.
MainActivity opkald og giver ekstra information at resultere aktivitet.
Resultat aktivitet nu ser på den hensigt, der førte det her,
og vi kan få adgang til budskab, at vi oprettede i den anden,
getStringExtra, og det vil autocomplete for mig.
Og så husk, den måde, vi mærkede, at bit af data
var ved at give det dette felt lige her, denne offentlige streng,
der er mærket efter strengen vi faktisk inkluderet.
>> Hvis jeg siger MainActivity.Extra_Message
det er lige der, og det er lidt ligesom parameternavnet
når vi passerede koden fra controlleren til skabelonen,
når vi ville sige titel pil noget.
Det er den samme slags idé der.
Husk nu dette.
Vi havde også denne auto skabt eller auto genererede kode
for resultat aktivitet omfatter som tekstvisning i midten
der siger hej verden.
Vi kunne potentielt gøre det større.
Lad os gøre det først.
Vi kunne gøre det 40 tæthed uafhængige pixels.
Lad os se, det er super enorm. Det vil være okay.
Og så for at referere denne person tekstvisning inden for vores kode
Vi bliver nødt til at give det et ID,
og for at gøre det vi siger @ + id, hvilket betyder, at vi tildeler den id.
Hvis vi bare sagde @ id det ville antage, vi refererer et ID, der allerede eksisterer,
og lad os kalde dette vores resultTextView.
Og bemærk, at der i XML er der ikke behov for semikolon eller noget.
Alt er inden for disse tags.
Det er meget lig HTML i en masse sanser.
>> Det tager en lille smule af at vænne sig til, men til sidst vil du føle sig temmelig godt med det.
Lad os opdatere teksten til vores resultat tekstvisning,
og som vi gjorde, da vi fik at redigere tekstfeltet i vores anden aktivitet
i MainActivity her vil vi også ligeledes-
finder vi den opfattelse via id.
Og R, i tilfælde af jeg ikke nævne det før, er henvisningen til vores ressourcer mappe
og derefter ID er en reference til alt i ressourcer mappen, alle id'er,
og resultTextView.
Og lige som før, resultTextView er et objekt,
hvilket betyder, at det har alle disse egenskaber, der er forbundet med det.
Når vi bruger getText for edit tekst til dette tekstfelt eller tekstvisning
Vi kan faktisk bruge setText,
og så har vi allerede fundet budskabet fra den hensigt,
så jeg kan sige besked, og det vil faktisk sætte beskeden.
>> Det tager et øjeblik at starte, og så kan vi se, om ikke det går ned,
men spørgsmål om denne proces lige der, den slags interaktion?
På mange måder er det ligetil.
Grunden til jeg går igennem noget relativt simpelt
er, igen, fordi du får at se samspillet mellem layout,
kildekoden, hvordan du referencepunkter ting
og måske få en lille udsættelse for hvordan Java arbejder der.
Hvis jeg rent faktisk skriver noget her, ligesom ohai, og så vil jeg klikke på knappen,
det lancerer en ny aktivitet, og at tekstvisning siger ohai.
Det er meget simpelt, men forhåbentlig efter det eksempel
du slags se, hvordan dette samspil fungerer, og nu rod af filer
på venstre side for alle disse projekter mapper, du forhåbentlig ved, hvor man skal lede nu.
Dette er din kildekode område.
>> Layout er virkelig det eneste, du vil beskæftige sig med, indtil du medtage billeder
og drawables eller hvad, og værdier, der vil omfatte strenge,
som vi nævnte, og derefter stilarter er noget, der er lidt ligesom CSS.
Løse det, når du vil, men indtil du føler dig tryg med at tilføje ekstra flair
på din ansøgning er der ingen grund til at bekymre sig om det for meget.
Bare for at ombryde op en anden ting du vil helt sikkert ønsker at medtage,
antager du vil integrere smarte funktioner og spare nogle ekstra kodning-
ville være at inkludere 3. parts biblioteker.
Her er den lille Android fyr med Sherlock Holmes hat.
Dette er en handling bar Sherlock bibliotek,
som dybest set betyder, at indsatsen bar du så tidligere,
som nu er standard i Ice Cream Sandwich og Jelly Bean,
Hvis du ønsker at bringe den slags brugeroplevelse til brugere på ældre versioner
og spare dig selv fra at bekymre sig om, hvordan brugeren kommer til at navigere
på ældre versioner, når den ting ikke er der du kan medtage dette bibliotek
og så skal du bare nødt til at henvisningen-snarere end standard Android
biblioteker for handlingen bar, du henvise til denne support-bibliotek.
>> Ting som Scoreloop, det er fantastisk, hvis du kommer til at omfatte et spil.
Det lader dig tilføje pointtavler og resultater til spil.
AdMob er en måde at sætte annoncer i dine programmer
hvis du ønsker at gøre en lille smule penge ud af det.
Selvfølgelig er der Facebook og Twitter til at integrere der
hvis du ønsker at dele tingene let, et cetera.
Dropbox ligeledes, og Google Analytics er, at diagrammet ser en der.
Det vil være meget vigtigt, hvis du rent faktisk ønsker at se, hvem der interagerer
med din app eller hvem det er, hvordan de interagerer, et cetera.
Google som standard fortæller dig en masse statistik om, hvem der har installeret din app
og hvilke telefoner, de har, hvilken versioner af operativsystemer, de har.
Men hvis du ønsker at se, hvem der bruger det på daglig basis, og hvordan de bruger det
så vil du ønsker at inkludere en form for tracking system som.
>> Når du er klar til at distribuere din app
Jeg behøver ikke at gå ind i, at der i alt for meget dybde.
Klik på linket her, Google Play.
Det plejede at være Android Market.
De rebranded alt med Google Play,
så nu du indsender til det.
Det er meget ligetil.
Du er nødt til at indeholde en beskrivelse, nogle screenshots.
Som jeg sagde, er der ingen godkendelsesproces som iOS.
Og hvor man kan gå herfra?
Jeg viste dig en rigtig simpelt eksempel.
Forhåbentlig hvis det synes frygtelig simpelt
så det er nok et godt tegn.
Hvis du overhovedet følte en smule forvirret eller usikker på præcis, hvad jeg skriver
Det er også fint, men herfra går til Google Guides.
Dette er et godt sted at starte.
Det vil tale dig igennem, hvad de forventer i forhold til anvendelsen design,
hvordan brugerne normalt interagerer med det.
Det er meget mere fri form end iOS, jeg ville sige,
som det ser ud som tabelvisninger er-Det ved jeg ikke, det er deres brød og smør.
Alt er en tabel udsigt glider op og ned.
Med Android de helt tilskynde folk til at se på det fra
en hel masse forskellige perspektiver.
>> Når du inkluderer software development kit i denne ADT
som standard har du en hel masse prøve projekter i Android.
Lige her, Android, Android Sample Project.
Hvis jeg klikker på det, så jeg kan vælge en version, som af prøven projekter gælder.
Der er en hel masse forskellige ting her.
Det starter med handling bar kompatibilitet,
accelerometer play, backup og gendannelse, Bluetooth, gestus builder.
Jetboy er et udsnit spil, de giver dig, som er LunarLander.
Der er en hel masse prøve applikationer her
og de er alle rettet mod forskellige aspekter af Android API,
og tanken er, at du laver din ansøgning
du behøver ikke at lære alt om Android at gøre en Android app.
Du behøver kun at lære om de dele, som du rent faktisk vil bruge.
Kig på disse prøve biblioteker.
Du er velkommen til at kopiere og indsætte koden og genanvende det.
Det er en stor ting at se på sværere kode
og forsøge at forstå det, hvilket naturligvis er hvorfor i CS50
vi ofte give dig store mængder af kildekoden.
Se på nogle af disse, hvis du kommer til at bruge lignende biblioteker
og derefter anvende den til din egen kode.
Og selvfølgelig er der tutorials.
Søg efter tutorials.
Jeg fandt en masse gode online, som kan bringe dig op i fart
med, hvad fragmenter egentlig er, og hvordan du kan bruge dem.
>> Nogle af disse nye design ting, som fragmenter,
du virkelig behøver ikke at være bekymret over, medmindre du laver en
temmelig store i omfang projektet.
De er ting, som Google forsøger at udfase i.
Stackoverflow er naturligvis din ven.
Forhåbentlig solgte jeg dig lidt på Android,
realisere det er meget nemmere at nærme sig i form af netop den kodesprog.
Java er Jeg vil sige meget lettere at forstå end Objective-C.
Android vokser tror jeg meget mere end iOS.
Jeg mener, at data er der også, bortset fra hvad jeg tror.
Det kommer til at være omkring et stykke tid,
og de er et par år bagud i forhold til deres design cykler,
så det er slags forståeligt, at de stadig arbejder gennem nogle af disse
konsistens spørgsmål som denne handling bar er en ny ting for dem stadig,
slags skabe lignende brugeroplevelse på tværs af alle deres apps.
Forhåbentlig kan du gå fremad nu, og åbne op Eclipse
og lave dine egne Android apps.
>> Er der nogen der har nogen spørgsmål, før vi wrap op om noget?
Jeg kan fortælle dig, at svaret er 42..
Nå, glad kodning alle, og held og lykke.
[CS50.TV]