[Powered by Google Translate] [Seminar] [Android-apps kopen (Nu met Bonen van de Gelei!)]
[Jordan Jozwiak] [Harvard University]
[Dit is CS50.] [CS50.TV]
>> Hello iedereen, en welkom bij de Android Apps (Nu met Bonen van de Gelei!) Seminar.
Het wordt Nu aangeroepen met Jelly Beans, van natuurlijk, want
de nieuwste versie van het OS wordt genoemd Jelly Bean.
Toen ik sprak over Android vorig jaar en deed dit in principe zelfde seminar
Ik werd het design patterns en stilistische keuzes presenteren van voor Gingerbread,
zelfs al Ice Cream Sandwich ten het tijd was gekomen out,
en dit is iets zullen we praten over het gaan forward een klein beetje.
Androïde, van natuurlijk, heeft sommige kwesties met fragmentatie,
zodat de nieuwste Google-besturingssysteem wordt meestal
niet echt gaat om gemeengoed geworden onder de gebruikers voor potentieel tot en met een jaar, jammer genoeg.
>> Maar zonder rekening te houden dat, zullen we praten over tal van redenen waarom
Android is veel beter dan iOS.
Okay, zullen we praten over Android versus iOS
sommige ontwerp paradigma's, hoe je up zult krijg set in slechts ene dia,
en de big verschil tussen dit en vorig jaar is ik wil gewoon om te
zoom door middel van sommige conceptuele dingen het werken met
het besturingssysteem en vervolgens gaan in een echt basic voorbeeld.
In feite, net de voorbeeld die Google beschrijft voor het bouwen van uw eerste app,
en we zullen gaan doorheen het samen en gewoon te beschrijven.
>> Ik weet dat velen van jullie hebben alleen gecodeerd in C, dus Java wordt nu al gaat worden
een ander perspectief, en op deze manier u zult uw voeten te krijgen nat
en voel me een beetje meer comfortabel met het hopelijk.
A snelle samenvatting, Android versus iOS.
In Android is er is dit ene-keer ontwikkelaar fee van $ 25,
niets van dit alles $ 100 per jaar ding.
Er zijn geen beperkingen, wat betekent dat als ik wil een app in te dienen,
Ik submit het gewoon, en er is geen proces van goedkeuring alsof er is voor iOS.
U krijgt om te ontwikkelen met Java met behulp van Eclipse,
welke is cross-platform, dus het maakt niet uit als u hebt een Mac,
Vensters, of een of andere Linux-machine.
Van Natuurlijk, met iOS je moet te XCode te gebruiken op een Mac,
en Android wordt gebruikt door veel meer mensen,
dus als u wilt dat uw app om een ​​of andere soort van zichtbaarheid of misschien hebben
maken een beetje geld uit advertenties
ben je waarschijnlijk meer kans om te baat hebben bij Android.
>> En een ding dat altijd bekend is al hebt over Android
is het extreme hoeveelheid maatwerk, terwijl iOS is zeer gefixeerd in hun wegen
zodat ze kunnen veiligheid handhaven en controle over elk klein aspect
van de ontwerp binnen hun OS en de individuele apps.
Android is zeer vrije vorm, en er is zo veel meer mogelijkheden.
Okay, sommige ontwerp paradigma's.
Let hier op net als iOS heeft tabletten en iPhones en iPod-Touches
ze moeten te te ondersteunen, zeggen, net als een dozijn apparaten als je wilt steunen
historische dingen als goed.
Met Android wat je hoeft te honderden apparaten, te ondersteunen
dus er zijn sommige dingen die Google heeft geprobeerd om te implementeren
om maken de gebruiker te ervaren een beetje meer consistente,
maar we zult ook praten over hoe dit betekent dat er zijn vraagstukken van fragmentatie
dat je constant hoeft te zich bewust zijn van ondersteunende.
Fragmentatiemiddelen dat er veel verschillende besturingssystemen,
veel verschillende telefoons met verschillende hardware draait Android allemaal op hetzelfde moment,
dus dit graph hier gaat terug voor ongeveer 6 maanden.
Yeah, 6 maanden, en je kunt zien hoe de donkerste band
op de onderkant is Jelly Bean, waarvan out over de zomer kwam,
en je kunt met de rechtermuisknop nu waarschijnlijk ongeveer 2% van de telefoons hebben het te zien.
>> Ice Cream Sandwich kwam naar buiten meer dan een jaar geleden,
en een kwart van de telefoons hebben het.
Er zijn nog steeds een heleboel van telefoons die zijn met behulp OS-versie van jaren geleden.
Een ding dat Google heeft geprobeerd om doen om de gebruiker ervaring te maken
een veel meer consistente aan de overkant van apps wordt beginnend met Honingraat,
dat is de tablet-versie, dan is Ice Cream Sandwich-en Jelly Bean,
ze bent echt proberen te gebruik van dit actiebalk te benadrukken,
die is wat je hier kunt zien bij de bovenkant,
alles rechts hier, met inbegrip van dit knop kleine instellingen te.
Het is het ontwerp keuze.
Nu, wanneer u maar zie de 3 stippen het betekent klikt op deze,
en er zullen een drop-down menu, die sommige soort van instellingen heeft te zijn.
Dit toont alleen up, omdat ik klikte op deze knop.
Dit is iets dat ze proberen om te gebruiken om apps te maken een beetje meer consistente
over de hele linie en zo de gebruiker heeft een beter gevoel van uniforme ervaring.
>> Okay, dus in het geval u dit nog niet dit al gedaan of als u bent kijken thuis
dan u kunt volgen deze stappen om instellen van uw codering-omgeving.
Het zal betrekken gaan naar de website te hier.
U kunt Google het installeren van Android SDK
en volg enkele beschrijvingen daar.
Ze vertellen je alles.
Ze hebben u de SDK, downloaden Eclipse Klassieke versie te installeren,
zelfs al, van natuurlijk, bent we codering in Java.
Zij bevelen deze ene, en dan is dit ADT, de Android Development Tools,
is een plugin die u installeren in Eclipse waarin mogelijk maakt u om te
hebben een veel meer gestroomlijnde ervaring met Android binnen Eclipse.
Het zal u enkele grafische user interfaces te geven
voor het ontwerpen van de uitzichten, en het zal u veel meer ondersteuning te geven
en de mogelijkheid om te lanceren met de emulator en al dat soort dingen.
Applicatie raamwerk.
>> Ik wil om te praten over hoe de projecten binnen Android zijn gestructureerd,
en dan we zult gaan in een snelle voorbeeld, en hopelijk
kunt u vragen stellen op elk punt en voel comfortabel door het eind van het.
We hebben een aantal jargon eerst.
Een activiteit is net als de scherm te u ziet wanneer u een app te lanceren.
Het hele ervaring is de activiteit zelf,
zodat je kon bedenken het als een scherm of een view,
maar het is eigenlijk de source code kant ervan.
We noemen nog steeds het werkelijke-interface deel ervan een view.
Het is een soort als hoe in pset 7 wij de controller en vervolgens het uitzicht gehad.
De activiteit is min of meer de controller,
en het uitzicht is wat we doen in termen van de XML
die wordt geassocieerd met die activiteit.
Fragmenten zijn iets dat's geïmplementeerd in Ice Cream Sandwich gaan vooruit.
Het is gewoon een idee van het nemen van delen van de weergave of de activiteit
en de ze op te delen in afzonderlijke gebieden, zodat dat we kunnen
maken onze code meer bruikbaar voor deze vele verschillende apparaten
dat we hebben om steunen, en het is gewoon een manier van het het proberen om
ook factor out meer code.
Diensten zijn achtergrond dingen zoals afspelen van muziek of navigatie richtingen potentieel.
Content providers, dit zijn API's binnen het besturingssysteem
die u toelaten om toegang te krijgen tot gedeelde gegevens te zoals contactinformatie informatie,
en dan een intentie is iets wat we zullen gebruiken wanneer we willen lanceren
een nieuwe activiteit uit onze huidige activiteit.
>> Hello Android, dit gaat om een ​​project dat zullen we praten over te zijn.
Ik zal eigenlijk doe het voor u, en dan zullen wij een ding te doen waar we op een knop klikt
met enkele tekst en te lanceren een nieuwe activiteit.
Zeer ongecompliceerd, maar ik willen gaan door
wat er zal gaan in een project als dit.
Wanneer u het nieuwe project te maken je zult binnen Eclipse te zien
is er is dit project genaamd Hallo Android.
Dan zijn er een gehele bos van mappen hier.
De degenen je bent echt bezorgd met zijn de bronmap,
de map resource, de res, en tot op zekere de map libs voor bibliotheken mate.
En net dus we zijn op dezelfde pagina met dat
als je waren om een ​​nieuw project aan te maken,
u kunt dit recht doen hier, dus als ik wil om het HelloAndroid te bellen,
en vervolgens het doet automatisch een gehele bos van de informatie voor ons.
Het pakket naam is verondersteld om een ​​unieke id te zijn
die normaal zou worden geassocieerd met de website, als je er een had.
>> Bijvoorbeeld, zal ik dit net.cs50.helloandroid noem.
En ik reeds heb dit project maakte ooit.
Oke, sorry. Laten we het noemen het HelloCS50.
En dan zal het dingen als wat voor sort van icon doen we willen ervoor te vragen.
Dit is allemaal vanwege van de Android-Developer Tools-interface,
de plugin die we naar Eclipse toegevoegd, zodat we kunnen kiezen dingen als
wat pictogram we willen, en die zou verder gaan in die diepte als we willen.
Maar in het einde, zorg enkel het-project,
en alles toont up naar rechts hier.
Zoals Ik toonde op het andere scherm te,
we hebben de bronmap, en ik zal praten over wat dit alle middelen binnenkort,
maar je kunt zien dat onmiddellijk het duurt ons mee naar de HelloCS50 scherm te.
Er zijn een aantal knoppen meer dan hier voor het toevoegen van tekst-en tekstveld lay-outs.
Het is een soort als XCode maar helaas niet helemaal als gestroomlijnd.
Maar de clips zal uw vriend en ADT in het bijzonder te zijn voor dit te doen.
>> Okay, de bronmap is de plaats waar
de Java-bestanden worden gehouden, en dit is eigenlijk de lancering van uw programma.
Het is in principe net als de controllers.
De map resource of het res is de plaats waar we houden scherm te lay-outs,
afbeeldingen, geluiden, tekst, animatie en al het andere, libs, uiteraard, bibliotheken.
En de Manifest, het is de manier dat het Android-systeem weet
hoe de interactie met uw app.
Het vertelt het ongeveer permissies en wat er activiteiten daadwerkelijk zal worden in werking gesteld.
Het is allemaal de essentiële informatie dat is nodig is om uw app draaien.
De bron folder is-als wij uit te breiden het als u met de rechtermuisknop hier kunt zien.
En een voorbeeld dat een code zou kijken-dit is de standaard code.
Zoals wij noemden het, MainActivity.
Door Standaard, krijg we onCreate, welke een functie is dat is aangeroepen wanneer deze activiteit ladingen,
dus je wilt naar onCreate (savedInstanceState) noemen.
Dit zal alle stukjes informatie herstellen
in het geval de app werd gepauzeerd.
>> Er is een hele activiteit life cycle chart waarin u kunt kijken naar
wanneer je krijg in het een beetje meer diepgaande,
maar de meest belangrijke regel code er is deze setContentView functie
waarvan het resource-bestand zal te laden voor de lay-out.
Dan wat onCreate hier is in principe doet is het wordt zeggend
toen ik creëer deze activiteit Ik wil dit layout te laden.
En we zullen praten over wat dat lay-out is in een tweede.
Als we waren om te lanceren dat hier het ziet er precies als dit,
en door standaard omdat wij hebben Eclipse dit te doen en ADT het doen van het voor ons
dit is alles boilerplate code die is geschapen voor ons,
en we kunnen on bewegen en dingen veranderen als we willen.
De map resource, zoals ik al zei, dit is waar we aanhouden van alle lay-outs,
drawables in termen van even welke soort van images-
ze worden opgeroepen drawables-en vervolgens geluidsbestanden, menu 's.
Het is een manier van een gehele bos van XML in een aardige naargelang mode-.
Zoals u kunt zien, zijn er. Hdpi, LDPI, mdpi en xhdpi mappen voor de drawables.
Dit zijn verschillende screen dichtheden, dus hoge dichtheid pixel per inch,
lage dichtheid, medium dichtheid, extra hoge dichtheid.
>> Dit is, wederom, zodat we kunnen al deze verschillende apparaten ondersteunen,
-en idealiter, zult heb je verschillende beelden voor elk verschillende resolutie.
Layouts zijn waar we omvatten alle verschillende layouts die zal worden gebruikt in verschillende activiteiten.
Ze konden omvatten ook lay-outs voor fragmenten,
die in feite betekent gedeeltelijke-activiteiten.
Als je wilt om iets cools doen, zoals wanneer u maar de telefoon te roteren
je wilt dat het een verschillend-out u kunnen layout-landschap doen zoals een andere map hebben,
-en Android heeft automatisch een gehele bos van deze regels binnen de map resource,
dus het zal weet om te kijken naar verschillende mappen gebaseerd op de huidige setup van de telefoon,
wat voor soort van hardware u gebruikt.
Evenzo, Dit waarden-v11 hier en waarden-v14
en map de standaardwaarden dit is voor-
goed, waarden Dit op zichzelf de standaardbinaries waarden van verschillende alle versies van het besturingssysteem.
Anderzijds, v11 en v14 komen met het Honeycomb
-en Ice Cream Sandwich, respectievelijk.
Nogmaals, dit zijn manieren die-binnen deze mappen zijn verschillend strings
en stijlen, dus je kunt het uiterlijk van uw app aan te passen
of potentieel zelfs zijn functionaliteit, hoewel dat waarschijnlijk een slecht idee zou zijn,
basis van de versie van het besturingssysteem.
>> En ik sprak over dit alles hier.
Nogmaals, betekenbare, rauwe, lay-out, waarden.
De defaults, als we verder gaan in Hallo Android-of Hallo CS50 rechts nu
het eruit zal zien net als dit.
Het zal hello hele wereld zeggen.
Zoals u juiste hier kunnen zien met de Android tekst
de tekst voor deze tekst beschikbaar view, die in feite is gewoon een label,
is wat wij het in iOS zou noemen.
Het heeft deze grappige notatie @ string / hello_world.
Dit is zo we can-we proberen om alle van de snaren extraheren,
alle van de harde-coded strings in Android in een aparte map te,
die toevallig te zijn in values.strings.
Als we hier kijken, kunnen we zien dat we hebben een harde-coded tekenreeks hier gered
voor hello wereld, en het heet hello wereld, en dit is soort van een
gemeenschappelijke ontwerpbeslissing aan de overkant van velen platforms die u wilt-
snaren zijn de soort van dingen die we willen om potentieel in staat zijn om te veranderen.
We willen niet tot F in onze source code-bestand beheersen in onze XML.
We willen in staat zijn om dit veranderen wanneer we de kans krijgen.
>> Dit XML-bestand, strings.xml, is een manier van het extraheren van
harde-coded strings die anders zouden zijn in onze lay-out hulpbronnen
of in onze source code.
Het Manifest is waar we deze essentiële informatie over de toepassing te houden.
Het omvat de naam-pakket. Dat heeft om een ​​unieke identifier te zijn.
In tegenstelling tot de App Store voor iOS de namen van de applicaties
hoeven niet te uniek te zijn, en je kunt in feite veranderen de naam van uw toepassing
nadat je het in te dienen, dus als ik begin out met Angry Birds,
en dan maak ik een update, en ik wil niet om een ​​nieuwe versie vrij te geven
Ik denk dat ik het kon Angry Birds noem 2 terwijl Ik ben op de dezelfde release-cyclus.
Het zou gewoon opdagen als een update.
Het enige ding dat heeft te te zijn uniek maakt is dit pakket naam,
die niet veel mensen zullen zien.
Nou, je zou alleen zien als u naar op zoek waren bij de bron code is of wanneer er is een of andere soort van error.
De componenten omvatten-activiteiten, dus we moeten te verklaren
even welke soort van activiteit die we gebruiken.
Dit is een toestemming soort ding.
>> Omdat Android beschikt niet over deze rigoureuze toepassing proces hebben
voor het indienen van apps in plaats daarvan ze gewoon niet alles wat gebaseerd off van permissies
en het verklaren van dingen in de Manifest.
De SDK versie is ook belangrijk.
We kunnen gebruik ingesteld als SDK minimale versie iets.
Uiteraard, u wilt code te creëren
en ontwerp voor de nieuwere besturingssystemen.
Misschien wel niet de nieuwste, misschien ook niet Jelly Bean.
Misschien heb je wilt ontwerpen de eerste plaats voor Ice Cream Sandwich,
hoewel ze zijn vrij veel het zelfde in termen van design beslissingen
en de feitelijke bibliotheken en APIs.
Maar eerder dan hebben mensen
van de oorspronkelijke Android-versie-achtige Donut weg terug wanneer-
die nog steeds toevallig worden met behulp die proberen om uw toepassing te downloaden en dan zeggen
het werkt niet op mijn telefoon kunt u de minimale-versie ingesteld
en hebben het zijn Gingerbread of Ice Cream Sandwich
of wat dan ook u voelt comfortabel indienen.
En dit is een voorbeeld van de Manifest. We kunt kijken naar de werkelijke een in een beetje.
>> Okay, we zullen gewoon vooruit te gaan met de demo nu.
Dit is de demo als u Google Android te bouwen uw eerste app of iets dergelijks.
We zullen gaan door middel van alles wat er er gaande is in daar,
en sorry, alleen voor een referentie-wie hier weet Java in enige mate te?
Oke, dus Java is nieuwe codering taal voor de meeste mensen coming out van CS50.
Kort op, om te opnieuw te meer dan te gaan wat hier staat,
wat we willen doen is eerder dan aan te passen dit hello wereld applicatie
dat alle het doet is het lanceert en het zegt hello wereld
en het zegt hallo CS50 aan de top want dat is de naam-activiteit
we gaan om proberen om een ​​tekstveld en een knop te maken
zodat wanneer we op deze knop drukt het zal de tekst te nemen
uit het veld tekst en te lanceren een nieuwe activiteit, en het zal zeggen:
ongeacht die tekst zei in de activiteit, en dit is relatief eenvoudig.
Het is niet erg interessant. Je zou niet willen om eventuele app zoals dit vrij te geven.
Maar het demonstreert enkele belangrijke ontwerp dingen.
>> We zult moeten om te interageren met de Manifest, met de lay-out bestanden,
met de source code, en je kunt zien hoe je de ene activiteit te lanceren vanaf een andere.
We zal beginnen met de lay-out voor onze eerste activiteit,
waarvan ik weet dat het soort van kleine,
maar zoals je kunt juiste nu zien, alles wat het is is het heeft onze logo dat wij geschapen,
de naam-activiteit, en het zegt hello wereld in het centrum.
In plaats daarvan, ben BESCHIKBARE ik voor het eerst ga dit te maken in een lineaire lay-out,
een relatieve lay-out, en deze zijn alle dingen
je zou kunnen kijken omhoog en zijn het waard gaan over op een bepaald punt in termen van de lay-outs.
Het is een partij zoals HTML-.
We zeiden het is niet echt moeite waard te weten in termen van een programmatische sense,
maar er zijn zo veel verschillende layouts die u kunt bedienen,
en het is net als CSS in termen van stijlen.
>> Er is veel gaande on alleen in termen van de esthetiek hier,
en ja, het is moeite waard te leren, maar het is de soort ding je moet zoeken up
als je gaat en je voelt alsof je iets nieuw nodig hebt.
Ik kan profiteren van een aantal van de ADT gereedschappen hier op zijn minst om te off te beginnen met.
Ik zal een tekstveld te maken, en ik zal een knop te maken.
Zet ze recht naast elkaar.
Ze reeds passende wijze vergroten of verkleinen.
Sorry, nogmaals, terug naar het verschil tussen lineaire layout en relatieve layout,
a lineaire lay-out geeft een beetje meer functionaliteit
in termen van het vullen ruimte en het maken van zorgen dat
we positie dingen horizontaal of verticaal.
Het grote verschil tussen een lineaire lay-out en een relatieve lay-out
is de relatieve lay-out posities alles wat ten opzichte van andere weergaven,
en de goede ding over het is dat het duurt minder tijd om te tekenen
omdat het besturingssysteem kijkt naar al de code-en zegt dit gaat
opzichte deze hier, here.
Het betekent het maakt er minder metingen dan een gehele bos van geneste lineaire lay-outs,
die ik zou moeten doen als ik wilde dingen om te hier verticaal te te gaan.
>> Ik reeds heb sommige dingen horizontaal gaande, dus ik zou een verschillend lineaire lay-out nodig hebt
om verticaal nest hen te, maar als ik aan het doen waren a relatieve layout ik kon zeggen
houd dit naar links, dit naar rechts en deze dingen hieronder.
Maar omdat ik wil dat ze naar rechts nu vullen Ik ga een lineaire lay-out te gebruiken,
en je kunt zien het nu al doet veel van deze dingen voor ons.
Alle keer bekeken nodig hebt om een ​​eigenschap van breedte en hoogte hebben,
en Komt een naar gewicht van 1 hebben, en dit heeft een gewicht van 1
zodat het vult het gehele ruimte.
Maar de width en hoogte zijn belangrijkste.
Dit ID veld recht hier is niet belangrijk is binnen het feitelijke lay-out
tenzij we bent hand van een relatieve lay-out en zeggend we kunnen refereren
ene view positie in verwijzing naar een ander.
Als we hadden een relatieve lay-out konden we positie zeggen dat dit hieronder dit ene
of boven deze ID, maar dit ID zal belangrijk zijn
wanneer wij hem gebruikt in onze code, omdat we kunnen refereren
deze individuele uitzichten in deze manier.
>> En dan kunt u de tag requestFocus, dat is iets wat je waarschijnlijk zag in pset 7 te zien.
Er was een autofocus-tag of iets volgens die lijnen voor een van de velden.
En een ding, van natuurlijk, we kunnen doen net als in HTML-,
en een opzegtermijn van een van de aardige dingen over ADT is dat het hier autocompletes.
Misschien niet zo mooi als zij heeft gedaan in XCode, maar het doet desalniettemin,
en we konden hint zeggen en vervolgens geef het een of andere soort van de string
graag schrijf een-bericht,
en als ik geef het een moment, ook merken dat ik krijg een beetje error hier
zeggend dat we een string hulpbron zou moeten gebruiken voor dit,
dus als ik laat het doe sommige van het harde werk voor mij
Ik kan deze string selecteren, doe refractor Android-en extract Android string.
Ik kan het dat naam te geven, schrijf een boodschap,
en wat het deed nu is laten vervangen dat hard-coded tekenreeks
met een verwijzing naar de tekenreeks in. xml-bestand de snaar's,
die nu betekent dit is hier.
>> En ik weet dat een beetje triviale en net als extra werk op dit punt lijkt,
maar wanneer je hebt een gehele bos van dingen, een gehele bos van strings,
dat is echt belangrijk is, en het bijzonder voor lokalisatie
want zoals ik al eerder zei, Android is een zeer wereldwijd gebruikt besturingssysteem
dat je gewoon kunt doen waarden-nl of waarden-sp
of iets voor Engels of Spaans of andere talen.
En dan heeft u waarschijnlijk hebt niet deze ervaring nog gehad
aangezien we veel JavaScript niet deed doen in termen van web programmeren,
maar we kunnen ook dit veld genaamd onClick te doen voor de knop,
en dit is een manier van het referencement binnen ons lay-out
dat we willen een bepaalde functie te worden aangeroepen in onze source code.
Ik ga dit sendMessage te bellen,
en om dit werk maken dat betekent hier tot de hoofdactiviteit
Ik zal heb naar een functie die is openbare te creëren
zodat het kan worden benaderd door de layout.
Het is leegte omdat je gewoon niet willen het naar terugkeert niets.
We zullen het sendMessage noemen, en het duurt een view,
die is een soort context dat we deze methode kunnen verankeren
om te dat individuele view wanneer wij bent het runnen van het.
>> En Ik weet niet als u opgevallen-goed, u zou niet hebt opgevallen,
maar op dit punt rechts hier
dit view is een type die nog niet heeft opgenomen,
en natuurlijk, jullie allemaal kennen van CS50 over het niet met inbegrip types.
Het aardige ding over IDE's achtige Eclipse is dat
als je vergeet om een ​​type omvatten was zou het onderstrepen met een beetje rode squiggly
en geven u vervolgens de optie om het uitzicht te importeren.
Een snelle manier van het doen van dat is-controle shift O, en het zal importeert
alle bestanden die het nodig heeft om.
Nu dat we hebben deze functie sendMessage,
die gaat om bericht te sturen uit de MainActivity tot een nieuwe activiteit,
we gaan te hebben te een intentie om de nieuwe activiteit te lanceren uit deze ene te gebruiken,
dus we zult waarschijnlijk willen een globale constante of ook in het bijzonder een publieke constante te creëren
dat zal helpen ons weten hoe we gaan om te verwijzen de string
omdat wanneer we creëren een intent hebben we het niet alleen maar bellen een nieuwe activiteit,
maar we kunnen ook geef het een bundel van informatie.
Een bundel is eigenlijk de term die Android gebruik maakt van,
en het is een manier om te zeggen geef het extra data, waarvan het niet kan zijn van een zeer gesofisticeerde data type,
maar we kan zeker omvatten booleans of strings of ints.
Dat soort dingen.
>> Voel je vrij om vragen over eventuele van deze kwalificatietoernooien hier,
openbare, final, statische.
Publieke is het belangrijk ene.
Het betekent dat we hebt toegang tot deze variabele uit andere source code-bestanden
zoals wanneer we creëren een nieuwe activiteit.
We kunnen de string binnen deze file refereren.
Indien het is private, het betekent het is beperkt tot deze persoon bestand te hier.
Maar we zullen dit iets als extra-bericht bellen.
Nu hebben we deze functie gemaakt, en als we klik op de knop, zal deze functie worden opgeroepen.
Maar wij heb niets gedaan, uiteraard, met de-functie.
Wat we willen nu doen is het creëren een nieuwe activiteit,
de activiteit die zal daadwerkelijk worden gelanceerd.
In Eclipse kunnen we nieuwe, Android-activiteit, blanco-activiteit zeggen.
We kunnen het een naam geven.
Laten we noemen het als onze resultaat-activiteit.
En dan is deze hiërarchische bovenliggende veld is een manier van het specificeren van
hoe de werkzaamheden worden aan elkaar gerelateerd.
Omdat dit ene zal worden gelanceerd vanaf de andere activiteit
we dient te vermelden dat het heeft de bovenliggende hoofdactiviteit.
>> En ik kon hebt geklikt op de volgende veld daar, die ons zou vertelde hebben
sommige optionele velden dat het ook was inbegrip,
maar de aardige ding over ADT, nogmaals, is dat als ik scroll naar beneden hier
in de Manifest herinneren dat alle van dit echt werd opgenomen door verstek
toen we oorspronkelijk geschapen het-project,
en nu, omdat we gebruikten dit maak een nieuwe activiteit eerder dan enkel
het toevoegen van onze eigen klasse bestand, omdat we gingen door middel van hun GUI voor dit te doen
het al toegevoegd allemaal van deze aan de Manifest voor ons,
die net betekent dat nu het besturingssysteem niet zal klagen
wanneer we proberen om deze activiteit te lanceren.
En het ook, natuurlijk, gaf het een label, dat ook blijkt uit up in strings.
Het doet een heleboel dingen op de rug end voor ons.
Hoe dan ook, nu dat we hebben dit resultaat activiteit als goed,
de eigenlijke source code bestand in de map bron,
en je kunt zien-om kort in on deze-aanraakt
omdat we verteld het over dit hiërarchische bovenliggende
het gaf dit veld android.r.ide.home in deze onOption geselecteerde ding.
>> Wat dit wordt fundamenteel zeggend is er is een menu--knop nu
dat in de linker bovenkant bovenhoek van het scherm
als ik ga terug naar de PowerPoint-waar we voor het eerst gesproken over actiebalk
vanwege van de hiërarchische bovenliggende nu is er een kleine pijl back hier
en dit is aanklikbaar dus we moeten in staat zijn om-nadat wij eigenlijk dit run app-
ga terug, en het is een manier van bespaart ons een klein beetje van code daar.
Nu binnen deze-well, het lijkt te worden klagen over, dat voor een moment.
Laten we eens becommentariëren dat out.
Nu, om daadwerkelijk de interactie met deze 2 activiteiten,
we moeten een intentie waarop al deze gegevens omvat creëren.
In sendMessage nu ga ik om cruise door middel van sommige stukjes code
en leg uit dat als ik ga.
Een intentie, zoals ik al zei, is een manier om de ene activiteit te lanceren vanaf een andere.
Intent is het type. We zijn het creëren van een variabele myIntent.
>> En dit is eigenlijk een object, die is waarom we hebben om nieuwe te bellen.
Het is gemeenschappelijke Java verbruik er, die een beetje beetje wennen om zou kunnen nemen.
Dit betekent dat we met behulp van de activiteit zijn of de klasse MainActivity,
en intentie op die manier neemt de activiteit het gaat uit
en de activiteit het gaat om te, die wij ResultActivity noemen,
en dat is zijn eigen klasse.
Omvatten dat.
En vervolgens als ik eerder al noemde, gaven we dat ID om de bewerkingsmodus tekst veld
en de tekst uitzicht, dus met het oog te programmatisch vast te leggen
de tekst die verschijnt in de EditText bestaat
we deze functie genaamd findViewById, gebruik maken
die vergelijkbaar is met iets dat je zult gebruiken wanneer het proberen om velden te krijgen van de DOM.
Misschien wel David praat over dit in collegezalen.
Maar het is gewoon een manier van het het krijgen van die-dat is waarom we taggen deze dingen met die velden.
Id.editText1.
Het is al autocompleting voor mij daar.
>> En dan gaan we omvatten ook-dit EditText nu dat we hebben het veld
binnen ons programma, allemaal dat findViewById leverde was in wezen
je kon bedenken het als geven ons een verwijzing naar die EditText.
Nu willen we om de string of de boodschap te krijgen
binnen die EditText waarin we kunt doen door behulp van de-
je kon bedenken EditText als een struct-
we noemen het een object in Java-met een hele bos van verschillende methoden
-of velden en attributen gehecht om het te.
Toen ik zeg EditText. het geeft me de kans om te toegang te krijgen
a methode, zoals getText, waarin de huidige tekst zal krijgen
in die EditText en vervolgens converteren dat expliciet
naar een string, en we hebben de boodschap opgeslagen.
Nu we eigenlijk willen iets doen met die intentie we zojuist ogenblikken geleden aangemaakt.
Ik zal extra zet zoals dat heet in de intent,
die, nogmaals, net als ik al eerder zei, dit is een manier van het het creëren van de bundel
met een gehele bos van data.
Extra bericht is onze tag, zodat we weten wat we het opslaan van dit onder,
en dan ben ik met inbegrip de boodschap.
>> En dan we kunnen eigenlijk de-activiteit te starten door het te geven de parameter myIntent.
En dit zal de daadwerkelijke lancering de activiteit, dus nu sinds ik opgewaardeerd naar Windows 8
er misschien een aantal fouten die up te tonen kortstondig, maar probeer om ze te negeren.
En dit is de Android emulator.
Hopelijk de code zal daadwerkelijk pop-up in een ogenblik.
Nogmaals, het negeren van al die kleine dingen.
Maar de Android--emulator u kunt elk versie van het besturingssysteem emuleren
uit de vroegste degenen, Donut, Gingerbread.
Dit is Jelly Bean 4.1.
Maar zoals je kunt juiste nu zien, dit is iets wat we maakten.
Dit heeft het MainActivity, de EditText, de knop.
Ik kan iets hier typen, maar wat zijn we missen op dit punt?
We maakten het veld in de MainActivity dat gaat om de bericht te verzenden
aan de andere activiteit, maar op dit punt
we heb niets gedaan in de andere activiteit, dus het is niet plan om iets te te ontvangen.
Laten we eindigen up dat deel voordat we verder gaan.
>> Dit resultaat activiteit, wat we zult moeten doen is we zult moeten doen is we nodig zult hebben om te-
kunnen we ook refereren de intentie binnen deze activiteit,
dus we moeten om de intentie, dat is echt simpel vast te leggen.
Het is een functie begrepen in de activiteitsklasse,
dus we kunnen gewoon zeggen "Verkrijg de boodschap uit de intentie."
"Intent myIntent = getIntent."
En dit zal ons-nu te geven myIntent is een object,
wat een verwijzing daarom opdat ons geleid tot deze activiteit.
MainActivity roept en geeft extra informatie aan-activiteit resulteren.
Resultaat-activiteit ziet er nu bij het intentie dat het leidde hier,
en we kunnen de boodschap dat we geschapen in de andere ene toegang te krijgen,
getStringExtra, en dit zal autocomplete voor mij.
En dan vergeet niet, de manier waarop we voorzien van tag dat bit van de gegevens
was door het geven van het op deze veld recht hier, dit public string,
dat is de-tag voor de string we eigenlijk inbegrepen.
>> Als ik zeg MainActivity.Extra_Message
het is recht er, en dit is soort van net als de naam parameter
toen we gepasseerd code van de controller naar de sjabloon,
toen we zou zeggen dat titel pijl iets.
Het is hetzelfde soort van idee daar.
Nu, onthoud dit.
We hadden ook deze automatische aangemaakt of auto gegenereerde-code
voor resultaat activiteit, die de tekst uitzicht in het midden omvat
dat hello wereld zegt.
We kon potentieel maken dat groter.
Laten we dat doen eerst.
We konden maken het 40 density onafhankelijke pixels.
Laten we eens kijken, dat is super enorme. Dat zal zijn okay.
En dan bedoeling om te refereren deze persoon tekst view binnen ons code
we zult moeten om het te geven een ID,
en met het oog te doen dat we zeggen @ + id, wat betekent dat we ID wijst u deze toe.
Als we net hebben gezegd @ id dat het zou veronderstellen we zijn referencement een ID die al bestaat,
-en laten we noemen dit onze resultTextView.
En merken dat in XML er is geen noodzaak voor puntkomma's of om het even wat.
Alles is binnen deze tags.
Het is zeer vergelijkbaar met HTML in een heleboel zintuigen.
>> Het duurt een klein beetje van wennen, maar uiteindelijk je zult voel me vrij comfortabel met het.
Laten we actualiseren van de tekst voor onze resultaat tekst view,
en zoals we deden toen we werden het krijgen van die tekst bewerken veld in onze andere activiteit
in MainActivity hier zullen we ook likewise-
wij doen de uitzicht door de ID vinden.
-En R, voor het geval ik wist niet dit al eerder vermelden, is de verwijzing naar onze map te hulpbronnen,
en dan ID is een verwijzing om alles te in de map middelen, alle de id's,
en resultTextView.
En net als voorheen, resultTextView is een object,
wat betekent het heeft alle deze eigenschappen die ermee verbonden zijn.
Toen we gebruiken getText voor het bewerkingsmenu tekst voor deze tekst beschikbaar veld of de tekst view
we daadwerkelijk kunnen gebruiken setText,
en vervolgens we al de boodschap gevonden van de intentie,
dus ik kan zeggen boodschap, en dit zal eigenlijk de bericht wilt instellen.
>> Het neem een ​​moment om te lanceren, en dan kunnen we zien of of niet het crasht,
maar even welke vragen over dat proces recht daar, dat soort van interactie?
In veel opzichten het is ongecompliceerd.
De reden dat Ik ga door iets relatief eenvoudige
is, nogmaals, want je krijg om de interactie tussen de lay-out te zien,
de source code, hoe u referentie dingen
en misschien krijg een weinig blootstelling om te hoe Java-daar werkt.
Als ik eigenlijk iets typt u in hier, zoals ohai, en vervolgens ik klik op de knop,
het lanceert een nieuwe activiteit, en die tekst uitzicht zegt ohai.
Dat is heel simpel, maar hopelijk daarna dat voorbeeld
je soort van zien hoe dit interactie werkt, en nu dat puinhoop van bestanden
aan de linker kant voor al deze project mappen te, hopelijk weet u waar om te nu kijken.
Dit is uw broncode gebied.
>> Lay-out is echt de enige ding je zult gaan met totdat u afbeeldingen omvatten
en de drawables of wat dan ook, en waarden, dat zal omvatten strings,
zoals we genoemd, en dan is stijlen is iets dat is een soort als CSS.
Adresseer het wanneer je wilt, maar totdat u vertrouwd bent met het toevoegen van extra flair te voelen
aan uw toepassing is er geen behoefte te maken over het het te veel.
Gewoon om wrap up ene andere ding zult u zeker wilt naar omvatten-
ervan uitgaande dat u wilt coole functies integreren en te bespaar jezelf wat extra codage-
zou zijn om te party libraries 3rd omvatten.
Hier is de kleine Android kerel met de Sherlock Holmes hoed.
Dit is een actie bar Sherlock library,
die in feite betekent dat action bar eerder je zag,
die nu is standaard in Ice Cream Sandwich-en Jelly Bean,
als je wilt om dat soort user experience op oudere versies naar gebruikers te brengen
en bespaar jezelf vanaf zorgen te maken over hoe de gebruiker wordt gaat om te navigeren
op oudere versies wanneer dat ding is er niet u kunt collectie van deze bibliotheek omvatten
en dan hoef je alleen om te referentie--eerder dan de standaardwaarde Android-
bibliotheken voor de actie bar, u dit support bibliotheek refereren.
>> Dingen zoals Scoreloop, het is geweldig als je gaat om een ​​spel omvatten.
Het laat u leader boards en verwezenlijkingen toe te voegen aan spelletjes.
Admob is een manier van het zetten advertenties in uw toepassingen
in het het geval u wilt een klein beetje van geld off van het te maken.
Van Natuurlijk, er is Facebook en Twitter voor daar het integreren van
als je wilt om dingen te gemakkelijk te delen, et cetera.
Dropbox, evenzo, en Google Analytics is, dat chart op zoek ene daar.
Dat zal zeer belangrijk zijn als je daadwerkelijk wilt zien wie wordt interactie
met uw app of wie het is, hoe ze op elkaar inwerken, et cetera.
Google, door standaard, vertelt u een heleboel statistieken over wie je app heeft geïnstalleerd is
en wat telefoons ze hebben, welk besturingssysteem versies hebben ze.
Maar als je wilt om te zien wie is met behulp van het op een dagelijkse basis en hoe ze het gebruiken
dan zul je wilt wat soort van tracking systeem als dat omvatten.
>> Wanneer u klaar bent om uw app distribueren bent
Ik hoef niet in die om te gaan in te veel diepgang.
Klikt u op de link hier, Google Play.
Het gebruikt om de Android-markt te te zijn.
Ze rebranded alles wat met Google Play,
dus nu u indient om te dat.
Het is heel ongecompliceerd.
Je moet een beschrijving, enkele screenshots omvatten.
Zoals ik al zei, er is geen proces van goedkeuring achtige iOS.
En waar te gaan vanaf hier?
Ik toonde je een heel eenvoudige voorbeeld.
Hopelijk als het lijkt vreselijk simpel
dan is dat is waarschijnlijk een goed teken.
Als je bij allen voelde een klein beetje verwarde of onzeker over precies wat ik was het typen
dat is ook prima, maar van hier ga naar Google-gidsen.
Dit is een geweldige plek om te beginnen.
Het zal je praat door middel van wat ze verwachten in termen van de applicatie ontwerp,
hoe de gebruikers normaal gesproken interageren met het.
Het is veel meer vrije vorm dan iOS, zou ik zeggen,
waarin het lijkt alsof keer bekeken table zijn-Ik weet het niet, dat is hun brood en boter.
Alles is een tabelweergave glijden omhoog en omlaag.
Met Android ze zeker mensen aanmoedigen om ernaar te kijken vanaf
een gehele bos van verschillende perspectieven.
>> Wanneer u omvatten de software-development kit in dit ADT
door standaard je hebt een gehele bos van steekproef projecten in Android.
Right hier, Android, Android Sample Project.
Als ik klik on dat, dan is ik kan een versie voor welke van de steekproef projecten toe te passen te kiezen.
Er is een hele bos van verschillende dingen hier.
Het begint off met actie bar-compatibiliteit,
accelerometer toneelstuk, backup en restore, Bluetooth, gebaar builder.
Jetboy is een voorbeeld spel zij geven u, zoals is LunarLander.
Er zijn een gehele bos van steekproef-toepassingen hier,
en ze zijn allemaal gericht op verschillende aspecten van Android's API,
en het idee is dat aangezien u uw toepassing te maken
je hoeft niet hoeft te alles over Android leren om een ​​Android app te maken.
Je moet alleen maar om te leren over de onderdelen dat je eigenlijk gaat gebruiken.
Kijken naar deze sample bibliotheken.
Voel je vrij om de code kopiëren en te plakken en opnieuw toe te passen het.
Het is een geweldige ding om te kijken naar meer moeilijker-code
en probeer het te te begrijpen, dat is van uiteraard de reden waarom in CS50
geven wij je vaak grote hoeveelheden van source code.
Kijken naar enkele van deze als je gaat om soortgelijke libraries te gebruiken
en vervolgens toepassen het aan uw eigen code.
En natuurlijk, zijn er tutorials.
Zoeken voor tutorials.
Ik een veel van de goede degenen online die u kunt op snelheid te brengen gevonden
zijn met wat fragmenten werkelijk zijn en hoe u ze kunt gebruiken.
>> Sommige van deze nieuwe ontwerp dingen, net als fragmenten,
je echt niet hoeft te worden ongerust over, tenzij je bent het maken van een
pretty grote in scope-project.
Ze zijn dingen die Google wordt probeert naar fase inch
Stackoverflow is van natuurlijk je vriend.
Hopelijk Ik verkocht je een beetje op Android,
te beseffen het is veel meer makkelijk om te benaderen in termen van net de codering taal.
Java is Ik zou veel gemakkelijker te begrijpen dan Objective-C zeggen.
Android wordt groeit Ik denk dat veel meer dan iOS.
Ik bedoel, het data is er ook, afgezien van wat ik denk.
Het gaat om rond te zijn voor een tijdje,
en ze zijn een paar jaren achter op in termen van hun ontwerp cycli,
dus het is soort van begrijpelijk dat ze nog steeds het werken door een aantal van deze
consistentie vragen, net als deze actie bar is een nieuw ding voor hen nog steeds,
soort van het creëren van gelijkaardige user experience aan de overkant van al hun apps.
Hopelijk kunt kan naar voren nu gaan en open te up Eclipse
en maak je eigen Android apps.
>> Heeft iemand enig vragen voordat we wrap up over iets?
Ik kan u vertellen het antwoord is 42.
Nou ja, happy codering iedereen, en veel geluk.
[CS50.TV]