[Powered by Google Translate] [Seminari] [Apps Android (Ora con Jelly Beans!)] [Giordania Jozwiak] [Harvard University] [Questa è CS50.] [CS50.TV] Ciao a tutti, e benvenuti al Apps Android (Ora con Jelly Beans!) Seminario. Si chiama Ora con Jelly Beans, naturalmente, perché l'ultima versione del sistema operativo si chiama Jelly Bean. Quando ho parlato di Android lo scorso anno e ha fatto questo in fondo stesso seminario Stavo presentando i modelli di progettazione e le scelte stilistiche di pan di zenzero, anche se Ice Cream Sandwich era venuto fuori, al momento, e questa è una cosa parleremo di andare avanti un po '. Android, naturalmente, ha alcuni problemi con la frammentazione, così l'ultimo sistema operativo di Google è di solito Non davvero intenzione di diventare comune tra gli utenti di potenzialmente fino a un anno, purtroppo. Ma ignorando che, parleremo di un sacco di motivi per cui Android è molto meglio di iOS. Va bene, parleremo di Android vs iOS, alcuni paradigmi di progettazione, come potrai avere istituito in una sola diapositiva, e la grande differenza tra questo e l'anno scorso è Voglio solo Zoom attraverso alcune cose concettuali che lavorano con il sistema operativo e poi andare in un esempio molto semplice. Infatti, proprio l'esempio che Google descrive per costruire la vostra prima applicazione, e andremo attraverso di essa insieme e solo descriviamo. So che molti di voi hanno codificato solo in C, quindi Java è già intenzione di essere una prospettiva diversa, e in questo modo potrai avere i piedi bagnati e sentire un po 'più a suo agio con esso si spera. Una sintesi rapida, Android vs iOS. In Android c'è questo sviluppatore tassa una tantum di $ 25, nessuno di questa cosa 100 euro l'anno. Non ci sono restrizioni, il che significa che se voglio presentare un app, Ho appena lo presenta, e non c'è alcun processo di approvazione che ci sia per iOS. Si arriva a sviluppare con Java con Eclipse, che è cross-platform, quindi non importa se avete un Mac, Windows o qualche macchina Linux. Naturalmente, con iOS devi usare XCode su un Mac, e Android è utilizzato da molte più persone, quindi se volete la vostra applicazione per avere un qualche tipo di visibilità o forse fare un po 'di soldi dalla pubblicità probabilmente siete più probabilità di trarre beneficio da Android. E una cosa che è sempre stata conosciuta per Android è la quantità estrema di personalizzazione, mentre iOS è molto fissato nei loro modi in modo che possano mantenere la sicurezza e il controllo su ogni piccolo aspetto del progetto all'interno del loro sistema operativo e le singole applicazioni. Android è forma molto libera, e c'è così molte più possibilità. Ok, alcuni paradigmi di progettazione. Si noti qui, proprio come iOS ha compresse e iPhone e iPod Touch che hanno da sostenere, per esempio, come una dozzina di dispositivi se si vuole sostenere cose storiche pure. Con Android si deve supportare centinaia di dispositivi, quindi ci sono alcune cose che Google ha cercato di implementare per rendere l'esperienza utente un po 'più consistente, ma ci sarà anche parlare di come questo significa che ci sono problemi di frammentazione che è costantemente essere consapevoli di sostenere. Frammentazione significa che ci sono molti sistemi operativi diversi, molti telefoni diversi con diversi hardware con sistema operativo Android tutti allo stesso tempo, così questo grafico qui risale per circa 6 mesi. Si, sei mesi, e si può vedere come la band più oscura sul fondo è Jelly Bean, che è uscito durante l'estate, e si può vedere in questo momento probabilmente circa il 2% dei telefoni hanno. Ice Cream Sandwich è uscito più di un anno fa, e un quarto dei telefoni hanno. Ci sono ancora un sacco di telefoni che utilizzano la versione OS da anni fa. Una cosa che Google ha cercato di fare per rendere l'esperienza utente molto più coerente tra le applicazioni sta iniziando con nido d'ape, che è la versione compressa, quindi Ice Cream Sandwich e Jelly Bean, che stanno veramente cercando di sottolineare l'uso di questa barra azione, che è quello che potete vedere qui in alto, tutto qui, anche questo piccolo pulsante Impostazioni. E 'la scelta di design. Ora, ogni volta che vedi i 3 puntini significa cliccare su questo, e ci sarà un menu a discesa, che ha una sorta di impostazioni. Questo dimostra solo su perché ho cliccato su questo pulsante. Questo è qualcosa che si sta cercando di utilizzare per rendere le applicazioni un po 'più consistente su tutta la linea e così l'utente ha un miglior senso di un'esperienza uniforme. Ok, quindi in caso non avete già fatto o se si sta guardando in casa allora è possibile seguire questa procedura per impostare l'ambiente di codifica. Si tratterà di andare al sito web qui. Puoi Google installare Android SDK e seguire alcune descrizioni lì. Ti dicono tutto. Hanno installato l', scaricare Eclipse SDK versione Classic, anche se, ovviamente, stiamo codifica in Java. Essi raccomandano questo, e poi questo ADT, gli strumenti di sviluppo di Android, è un plugin che si installa in Eclipse che consente di avere una esperienza molto più snella con Android all'interno di Eclipse. Essa vi darà alcune interfacce utente grafiche per la progettazione dei punti di vista, e vi darà molto di più sostegno e la possibilità di avviare con l'emulatore e tutto quel genere di cose. Framework applicativo. Voglio parlare di come i progetti all'interno di Android sono strutturati, e poi andremo in un esempio veloce, e si spera è possibile porre domande in qualsiasi momento e sentirsi a proprio agio con la fine di esso. Abbiamo prima qualche gergo. Un'attività è come la schermata che si vede quando si lancia un app. L'intera esperienza è l'attività stessa, così si potrebbe pensare ad esso come uno schermo o una vista, ma in realtà è la parte del codice sorgente di esso. Che ancora chiamiamo la parte di interfaccia reale di una visione. E 'un po' come il modo in pset 7 abbiamo avuto il controller e poi la vista. L'attività è più o meno il controller, e la vista è quello che stiamo facendo in termini di XML che è associato con tale attività. Frammenti sono qualcosa che è implementato in Ice Cream Sandwich per il futuro. E 'solo un' idea di prendere le parti della vista o l'attività e la loro suddivisione in aree separate in modo che possiamo rendere il nostro codice più utilizzabile per questi diversi dispositivi che dobbiamo sostenere, ed è solo un modo per cercare di anche fattore di più codice. I servizi sono cose sfondo come la riproduzione di musica o di indicazioni di navigazione potenzialmente. I fornitori di contenuti, queste sono le API all'interno del sistema operativo che consentono di accedere ai dati condivisi, come le informazioni di contatto, e quindi un intento è qualcosa che useremo quando vogliamo lanciare una nuova attività dalla nostra attività corrente. Ciao Android, questo sta andando essere un progetto che parleremo. Io in realtà lo faccio per te, e poi farò una cosa in cui si clicca su un pulsante con un po 'di testo e avviare una nuova attività. Molto semplice, ma voglio passare attraverso quello che andrà in un progetto come questo. Quando si effettua il nuovo progetto verrà visualizzato all'interno di Eclipse c'è questo progetto chiamato Ciao Android. Poi ci sono un sacco di cartelle qui. Quelli siete veramente interessati con sono la cartella di origine, la cartella delle risorse, la res, e in qualche misura la cartella libs per le biblioteche. E proprio così siamo sulla stessa pagina con quella se si dovesse creare un nuovo progetto, è possibile farlo proprio qui, quindi se voglio chiamarlo HelloAndroid, e poi lo fa automaticamente un sacco di informazioni per noi. Il nome del pacchetto dovrebbe essere un identificatore univoco che sarebbero di norma associato al sito, se si ha uno. Per esempio, io chiamerò questo net.cs50.helloandroid. E ho già fatto questo progetto una volta. Va bene, mi dispiace. Chiamiamola HelloCS50. E poi vi chiederà cose come che tipo di icona vogliamo fare. Questo è tutto, perché l'interfaccia di Android Developer Tools, il plugin che abbiamo aggiunto per Eclipse, in modo che possiamo scegliere le cose come ciò icona che vogliamo, e che sarebbe andato in quella profondità, se vogliamo. Ma alla fine, solo fare il progetto, e tutto ciò che si presenta proprio qui. Come ho mostrato sull'altro schermo, abbiamo la cartella di origine, e vi parlerò di cosa tutto questo significa che presto, ma si può vedere che immediatamente ci porta alla schermata HelloCS50. Ci sono alcuni tasti più di qui per l'aggiunta di testo e il testo campo layout. E 'un po' come XCode, ma purtroppo non è così snella. Ma i clip saranno il vostro amico e ADT, in particolare, per fare questo. Ok, la cartella di origine in cui è i file Java sono detenuti, e questo è in realtà il lancio del programma. E 'fondamentalmente come i controllori. La cartella delle risorse o la res è dove terremo layout dello schermo, immagini, suoni, testi, animazioni e tutto il resto, libs, ovviamente, le biblioteche. E il manifesto, è il modo in cui il sistema Android sa come interagire con la vostra applicazione. Si dice che sulle autorizzazioni e quali attività sarà effettivamente eseguito. Si tratta di tutte le informazioni essenziali che è necessario per eseguire l'applicazione. La cartella di origine è-se espandiamo come si può vedere qui. E un esempio che un codice sarà: questo è il codice di default. Come la chiamavamo, MainActivity. Per impostazione predefinita, otteniamo onCreate, che è una funzione che viene chiamata quando i carichi di questa attività, così si vuole chiamare onCreate (icicle). Questo ripristinerà tutti i bit di informazione nel caso in cui l'applicazione è stata messa in pausa. C'è un'attività tutta grafico del ciclo di vita che si può guardare quando si ottiene un po 'più in profondità in esso, ma la linea più importante di codice c'è questa funzione setContentView che caricherà il file di risorse per il layout. Allora che cosa onCreate qui è fondamentalmente facendo è che sta dicendo quando creo questa attività voglio caricare questo layout. E parleremo di ciò che il layout è in un secondo. Se dovessimo lanciare che qui appare esattamente come questo, e per difetto perché abbiamo Eclipse fare questo e ADT facendo per noi questo è tutto codice standard che ha creato per noi, e siamo in grado di andare avanti e cambiare le cose come ci piace. La cartella delle risorse, come ho detto, questo è dove teniamo tutti i layout, drawable in termini di qualsiasi tipo di immagini- si chiamano drawable-e poi i file audio, i menu. E 'un modo di un intero gruppo di XML in un bel modo ordinato. Come potete vedere, ci sono. Hdpi, ldpi, MDPI e cartelle xhdpi per i drawable. Si tratta di diverse densità di pixel dello schermo, così alta densità per pollice, bassa densità, media densità, extra alta densità. Si tratta, ancora una volta, in modo che possiamo sostenere tutti questi diversi dispositivi, e, idealmente, avrete immagini diverse per ogni diversa risoluzione. Layouts sono dove includiamo tutti i diversi layout che saranno utilizzati in diverse attività. Essi potrebbero anche includere layout per frammenti, attività parziali che significa sostanzialmente. Se si vuole fare qualcosa di fresco come ogni volta che si ruota il telefono si desidera avere un layout diverso si può fare layout paesaggio come una cartella diversa, e Android ha automaticamente un insieme di tali regole all'interno della cartella delle risorse, così sarà sapere di guardare diverse cartelle in base alla configurazione corrente del telefono cellulare, che tipo di hardware che si sta utilizzando. Allo stesso modo, questo valori-v11 qui e valori-V14 ed i valori di default delle cartelle Questa è per- bene, i valori di per sé, questo sarà i valori di default in tutte le versioni del sistema operativo. D'altra parte, V11 e V14 si otterrebbero con Honeycomb e Ice Cream Sandwich, rispettivamente. Ancora una volta, questi sono modi che, all'interno di queste cartelle sono diverse stringhe e stili, in modo da poter personalizzare l'aspetto della vostra applicazione o potenzialmente anche la sua funzionalità, ma che probabilmente sarebbe una cattiva idea, in base alla versione del sistema operativo. E ho parlato di tutto questo qui. Ancora una volta, disegnabili, crudo, il layout, i valori. Le impostazioni predefinite, se andiamo in Ciao Ciao Android o CS50 momento sembrerà proprio come questo. Si dirà ciao mondo. Come si può vedere proprio qui con il testo Android il testo per questo punto di vista il testo, che è fondamentalmente solo una etichetta, è quello che si direbbe in iOS. Ha questo divertente notazione @ stringa / hello_world. Questo è così che possiamo, noi tentare di estrarre tutte le stringhe, tutte le stringhe hardcoded in Android in una cartella separata, che risulta essere in values.strings. Se guardiamo qui, possiamo vedere che abbiamo una stringa hard-coded qui salvato per ciao mondo, e si chiama ciao mondo, e questo è una sorta di decisione di progettazione comune a molte piattaforme che si desidera- stringhe sono il genere di cose che vogliamo potenzialmente in grado di cambiare. Noi non vogliamo controllare F nel nostro file di codice sorgente nel nostro XML. Vogliamo essere in grado di cambiare questo ogni volta che ne avremo la possibilità. Questo file XML, strings.xml, è un modo di estrarre stringhe hardcoded che altrimenti sarebbero a disposizione le nostre risorse o nel nostro codice sorgente. Il Manifesto è dove teniamo le informazioni essenziali circa l'applicazione. Esso include il nome del pacchetto. Questo deve essere un identificatore univoco. A differenza di App Store per iOS i nomi delle applicazioni Non c'è bisogno di essere unico, e in effetti è possibile modificare il nome della vostra applicazione dopo la spedizione, quindi se mi metto con Angry Birds, e poi faccio un aggiornamento, e io non voglio rilasciare una nuova versione Credo che avrei potuto chiamarlo Angry Birds 2, mentre io sono sullo stesso ciclo di rilascio. Sarebbe semplicemente presentarsi come un aggiornamento. L'unica cosa che deve essere unico è questo il nome del pacchetto, che non molte persone vedranno. Beh, che ci si vede solo se si stesse guardando il codice sorgente o se c'è un qualche tipo di errore. I componenti includono attività, quindi dobbiamo dichiarare qualsiasi tipo di attività che usiamo. Si tratta di un permesso del genere. Perché Android non ha questo processo di applicazione rigorosa per la presentazione delle apps invece solo che tutto ciò in base al largo di permessi e dichiarando le cose nel manifesto. La versione SDK è anche importante. Siamo in grado di impostare l'uso come SDK versione minima qualcosa. Ovviamente, si desidera creare il codice e design per i sistemi operativi più recenti. Forse non è il più nuovo, forse non Jelly Bean. Forse si vuole progettare in primo luogo per Ice Cream Sandwich, anche se sono praticamente la stessa in termini di decisioni di progettazione e le librerie reali e le API. Ma piuttosto che avere persone dell'originale Android versione simil-Donut via del ritorno quando, che ancora capita di usare che tenta di scaricare l'applicazione e poi dire non funziona sul mio telefono è possibile impostare la versione minima e farlo essere Gingerbread o Ice Cream Sandwich o qualsiasi altra cosa si sente sommettersi confortevole. E questo è un esempio del Manifesto. Possiamo guardare a quello reale in un po '. Ok, dobbiamo solo andare avanti con la demo. Questa è la demo se Google Android costruire la vostra prima app o qualcosa di simile. Andremo attraverso tutto ciò che sta succedendo in là, e mi dispiace, solo per un riferimento che qui sa Java in qualsiasi misura? Ok, allora Java è nuovo linguaggio di codifica per la maggior parte della gente che esce CS50. In breve, per andare di nuovo quello che dice qui, quello che vogliamo fare è invece di regolare questa applicazione mondo ciao che tutto ciò che fa è si lancia e si dice ciao mondo e si dice ciao CS50 in alto, perché questo è il nome dell'attività stiamo andando a cercare di fare un campo di testo e un pulsante in modo che quando si preme questo tasto ci vorrà il testo dal campo di testo e avviare una nuova attività, e dirà qualunque testo che detto nell'attività, e questo è relativamente semplice. Non è molto interessante. Lei non vorrebbe rilasciare qualsiasi applicazione come questa. Ma dimostra alcune importanti cose di design. Dovremo interagire con il manifesto, con i file di layout, con il codice sorgente, e si può vedere come avviare una attività da un altro. Si comincerà con il layout per la nostra prima attività, che lo so che è un po 'piccola, ma come si può vedere in questo momento, tutto ciò che è è che ha il nostro logo che abbiamo creato, il nome dell'attività, e dice ciao mondo in centro. Invece, io prima di andare a fare questo in un layout lineare, un layout relativo, e queste sono tutte cose si poteva guardare in alto e vale la pena di andare oltre ad un certo punto in termini di layout. E 'un po' come HTML. Abbiamo detto che non è davvero la pena conoscere, in termini di senso programmatico, ma ci sono così tanti diversi layout che si possono controllare, ed è proprio come i CSS, in termini di stili. C'è un sacco di cose solo in termini di estetica qui, e sì, è utile imparare, ma è il genere di cosa che si dovrebbe guardare in alto come si va e si sente come avete bisogno di qualcosa di nuovo. Posso usufruire di alcuni degli strumenti ADT qui almeno per cominciare con. Farò un campo di testo, e farò un pulsante. Metterli a destra accanto all'altro. Hanno già ridimensionate in modo appropriato. Siamo spiacenti, ancora una volta, tornando alla differenza tra schema lineare e la disposizione relativa, un layout lineare dà un po 'più funzionalità in termini di spazio e di riempimento assicurandosi Posizioniamo le cose orizzontalmente o verticalmente. La grande differenza tra un layout lineare e un layout relativo è il relativo layout di posizioni di tutto rispetto ad altri punti di vista, e la cosa buona è che ci vuole meno tempo per disegnare perché il sistema operativo esamina tutto il codice e dice questo va rispetto a questo qui, qui. Significa che rende un minor numero di misure di un insieme di schemi lineari annidati, che avrei dovuto fare se volevo che le cose vadano in verticale qui. Ho già alcune cose che vanno in senso orizzontale, per cui avrei bisogno di un layout lineare diversa a nidificare in verticale, ma se io stavamo facendo un layout relativo si può dire tenere questo a sinistra, a destra questa e queste cose sottostanti. Ma perché voglio loro di riempire questo momento ho intenzione di utilizzare un layout lineare, e si può vedere che fa già un sacco di queste cose per noi. Tutte le viste devono avere una proprietà di larghezza e altezza, e questo succede ad avere un peso di 1, e questo ha un peso di 1 in modo da riempire l'intero spazio. Ma la larghezza e l'altezza sono più importanti. Questo campo ID qui non è importante all'interno del layout attuale a meno che non stiamo usando un layout relativo e dicendo che possiamo fare riferimento una posizione di visualizzazione in riferimento ad un'altra. Se avessimo un layout relativo potremmo dire questa posizione al di sotto di questo o superiore a tale ID, ma questo ID sarà importante quando stiamo usando nel nostro codice, perché siamo in grado di fare riferimento a questi singoli vista in questo modo. E poi si può vedere il requestFocus tag, che è qualcosa che probabilmente visto in pset 7. C'era un tag di messa a fuoco automatica o qualcosa del genere per uno dei campi. E una cosa, naturalmente, possiamo fare come in HTML, e avviso una delle cose belle di ADT è che autocompletes qui. Forse non così bene come ha fatto in XCode, ma lo fa comunque, e potremmo dire suggerimento e poi dare una sorta di stringa come scrivere un messaggio, e se mi danno un attimo, anche notare che ho un piccolo errore qui dicendo che dovremmo usare una risorsa di tipo stringa per questo, quindi se ho lasciato fare un po 'di duro lavoro per me Riesco a scegliere questa stringa, fare rifrattore Android ed estratto di stringa Android. Posso dargli quel nome, scrivere un messaggio, e quello che ha fatto oggi è sostituita quella stringa hard-coded con un riferimento alla stringa nel file. xml della stringa, il che significa che ora questo è qui. E so che sembra un po 'banale e come lavoro extra, a questo punto, ma quando si ha un sacco di cose, un sacco di stringhe, questo è veramente importante, e in particolare per la localizzazione perché come ho detto prima, Android è un sistema operativo molto utilizzato a livello globale che si può fare semplicemente i valori-en o valori-sp o qualcosa di inglese o spagnolo o altre lingue. E allora probabilmente non avete ancora avuto questa esperienza dal momento che non abbiamo fatto molto di JavaScript in termini di programmazione web, ma possiamo anche fare questo campo chiamato onClick del pulsante, e questo è un modo di riferimento all'interno della nostra struttura che vogliamo una certa funzione da chiamare nel nostro codice sorgente. Io vado a chiamare questo sendMessage e per fare questo lavoro che significa nell'attività principale qui Dovrò creare una funzione che è pubblico in modo che possa essere letta dal layout. E 'vuoto, perché proprio non si vuole che restituisce nulla. Lo chiameremo sendMessage, e ci vuole una visione, che è una sorta di contesto che possiamo ancorare questo metodo a questo punto di vista individuale, quando siamo a corto di esso. E non so se avete notato, beh, non puoi non aver notato, ma a questo punto proprio qui questa vista è un tipo che non è ancora stato incluso, e, naturalmente, tutti voi sapete da CS50 circa non compresi i tipi. La cosa bella di IDE come Eclipse è che se si dimentica di includere un tipo che sottolineerà con un po 'rossa ondulata e poi vi darà la possibilità di importare la vista. Un modo rapido per farlo è il controllo del cambio O, e sarà importare tutti i file che è necessario. Ora che abbiamo questa funzione SendMessage, che sta per inviare un messaggio dal MainActivity ad una nuova attività, stiamo andando ad avere per utilizzare l'intenzione di lanciare la nuova attività da questa, quindi dovremo probabilmente vogliamo creare una costante globale o anche soprattutto un pubblico costante che ci aiuterà a sapere come stiamo andando fare riferimento alla stringa perché quando creiamo un intento non stiamo solo chiedendo una nuova attività, ma possiamo anche dare un fascio di informazioni. Un bundle è in realtà il termine che utilizza Android, ed è un modo di dire dare dati in più, che non può essere di un tipo di dati molto sofisticato, ma possiamo sicuramente includere booleani o stringhe o int. Questo genere di cose. Sentitevi liberi di chiedere informazioni su qualsiasi di queste qualificazioni qui, pubblica, finale, statica. Pubblico è quella importante. Ciò significa che siamo in grado di accedere a questa variabile da altri file di codice sorgente come ad esempio quando si crea una nuova attività. Possiamo riferimento alla stringa all'interno di questo file. Se è privata, vuol dire che è limitata a questo singolo file qui. Ma noi chiameremo qualcosa come un messaggio in più. Ora abbiamo fatto questa funzione, e se si clicca sul pulsante, questa funzione verrà chiamata. Ma noi non abbiamo fatto niente, ovviamente, con la funzione. Quello che vogliamo fare ora è creare una nuova attività, l'attività che verrà effettivamente lanciato. In Eclipse si può dire nuovo, attività Android, attività vuota. Siamo in grado di dargli un nome. Chiamiamolo nostra attività risultato. E poi questo campo padre gerarchica è un modo per specificare come le attività sono correlate fra loro. Perché questo sarà lanciato dal altra attività dovremmo specificare che ha l'attività principale genitore. E avrei potuto cliccato sul campo successivo lì, che ci avrebbe detto alcuni campi opzionali che si è anche compreso, ma la cosa bella di ADT, ancora una volta, è che se ho scorrere qui nel Manifesto ricordare che tutto questo davvero è stato incluso di default Quando abbiamo creato il progetto, e ora perché abbiamo usato questo crea una nuova attività e non solo aggiungendo il nostro file di classe proprio perché siamo passati attraverso la loro interfaccia grafica per fare questo già aggiunto tutto questo al Manifesto per noi, il che significa solo che ora il sistema operativo non si lamenterà quando cerchiamo di avviare questa attività. Ed è anche, naturalmente, ha dato una etichetta, che mostra anche in stringhe. Si fa un sacco di cose sul back-end per noi. Comunque, ora che abbiamo questa attività risultato pure, il file di codice sorgente stesso nella cartella di origine, e si può vedere, toccare brevemente su questo- perché abbiamo detto che questo genitore gerarchico ha dato questo campo android.r.ide.home in questo onOption cosa selezionata. Ciò che questo è fondamentalmente dicendo è che c'è un pulsante del menu ora che in alto a sinistra dello schermo se torno alla PowerPoint in cui abbiamo prima parlato barra azioni a causa del genitore gerarchica ora c'è una piccola freccia indietro qui e questo è cliccabile quindi dovremmo essere in grado di, dopo che abbiamo effettivamente eseguire questa applicazione- tornare indietro, ed è un modo di salvarci un po 'di codice lì. Ora, all'interno di questa, beh, sembra essere lamentano che per un momento. Andiamo a commentare che fuori. Ora, per interagire in realtà con queste due attività, dobbiamo creare un intento che comprende tutti questi dati. In sendMessage ora ho intenzione di crociera attraverso alcuni pezzi di codice e spiego che come vado. Un intento, come ho detto, è un modo per avviare una attività da un altro. Intento è il tipo. Stiamo creando un myIntent variabile. E questo è in realtà un oggetto, è per questo che dobbiamo chiamare di nuovo. E 'uso comune Java lì, che potrebbe richiedere un po' di tempo per abituarsi. Questo significa che stiamo utilizzando l'attività o il MainActivity classe, e l'intenzione in questo modo prende l'attività sta andando da e l'attività sta andando, che noi chiamiamo ResultActivity, e che è la sua propria classe. Includi questo. E poi come ho detto prima, abbiamo dato l'ID al campo di testo di modifica e la visualizzazione del testo, per cui al fine di catturare livello di programmazione il testo che esiste nel EditText usiamo questa funzione chiamata findViewById, che è simile a qualcosa che verrà utilizzato quando si cerca di ottenere i campi dal DOM. Forse David parla di questo a lezione. Ma è solo un modo di ottenere quelle-per questo abbiamo TAG queste cose con questi campi. Id.editText1. E 'già autocompleting per me lì. E poi ci includiamo-presente anche EditText ora che abbiamo il campo all'interno del nostro programma, tutto quello che ha fatto è stato fondamentalmente findViewById si potrebbe pensare ad esso come ci danno un riferimento a tale EditText. Ora vogliamo ottenere la stringa o il messaggio all'interno di tale EditText che possiamo fare con l'opzione- si potrebbe pensare di EditText come una struct noi lo chiamiamo un oggetto in Java con un sacco di diversi metodi o campi e gli attributi ad esso collegato. Quando dico EditText. mi dà la possibilità di accedere un metodo come getText, che otterrà il testo attuale in che EditText e poi convertire in modo esplicito che in una stringa, e abbiamo salvato il messaggio. Ora vogliamo davvero fare qualcosa con l'intento che abbiamo creato a pochi istanti fa. Io metterò in più come si chiama nel intenti, che, ancora una volta, come ho detto prima, questo è un modo di creare il bundle con tutta una serie di dati. Messaggio Extra è la nostra etichetta così sappiamo di cosa stiamo salvando questo sotto, e poi sto compreso il messaggio. E allora possiamo effettivamente iniziare l'attività, fornendogli la myIntent parametro. E questo sarà effettivamente avviare l'attività, in modo da quando ho aggiornato a Windows 8 ci potrebbero essere alcuni errori che compaiono brevemente, ma cercare di ignorarli. E questo è l'emulatore di Android. Speriamo che il codice sarà effettivamente pop-up in un momento. Ancora una volta, ignorando tutte quelle piccole cose. Ma l'emulatore di Android è possibile emulare qualsiasi versione del sistema operativo dai primi quelli, Donut, Gingerbread. Questo è Jelly Bean 4.1. Ma come si può vedere in questo momento, questo è qualcosa che abbiamo fatto. Questo ha il MainActivity, il EditText, il pulsante. Posso scrivere qualcosa qui, ma quello che ci manca, a questo punto? Abbiamo fatto il campo nella MainActivity che sta per inviare il messaggio l'altra attività, ma a questo punto noi non abbiamo fatto niente in altre attività, in modo che non sta andando a ricevere nulla. Finiamo up che parte prima di passare. Questa attività risultato, quello che dovremo fare è abbiamo bisogno di fare è dovremo- possiamo anche fare riferimento l'intento in questa attività, quindi dobbiamo cogliere l'intento, che è davvero semplice. E 'una funzione inclusa nella classe di attività, quindi possiamo solo dire "Prendi il messaggio dal intenti". "Intento myIntent = getIntent." E questo darà a noi, ora myIntent è un oggetto, che è un riferimento per l'intento che ci ha portato a questa attività. MainActivity chiama e dà informazioni in più per provocare attività. Attività Risultato ora guarda l'intento che ha portato qui, e siamo in grado di accedere al messaggio che abbiamo creato a l'altro, getStringExtra, e questo sarà completamento automatico per me. E poi ricordare, il nostro modo di scovato quel po 'di dati era dandogli questo campo proprio qui, questa stringa pubblico, che è il tag per la stringa abbiamo fatto incluse. Se dico MainActivity.Extra_Message è proprio lì, e questo è un po 'come il nome del parametro quando siamo passati codice dal controller al modello, quando dicevamo titolo freccia qualcosa. E 'lo stesso tipo di idea c'è. Ora, ricordate questo. Abbiamo avuto anche questo codice auto creato o generato automaticamente per l'attività risultato, che comprende la visualizzazione testo in mezzo che dice ciao mondo. Potenzialmente Potremmo fare quello più grande. Facciamolo prima. Potremmo farlo 40 densità pixel indipendenti. Vediamo, che è super enorme. Che sarà a posto. E poi, al fine di fare riferimento a questo testo vista individuale all'interno del nostro codice abbiamo bisogno di dare un ID, e per fare questo noi diciamo @ + id, il che significa che assegniamo ID. Se abbiamo appena detto @ id sarebbe assumere stiamo riferimento a un ID già esistente, e chiamiamo questo nostro resultTextView. E notare che in XML non c'è bisogno di un punto e virgola o altro. Tutto è all'interno di questi tag. E 'molto simile ad HTML in un sacco di sensi. Ci vuole un po 'di tempo per abituarsi, ma alla fine vi sentirete abbastanza bene con esso. Cerchiamo di aggiornare il testo per il nostro risultato visualizzazione di testo, e come abbiamo fatto quando eravamo quel campo di modifica del testo nella nostra altra attività in MainActivity qui ci sarà anche similmente- troveremo la visualizzazione tramite ID. E R, nel caso in cui non ho menzionato prima, è il riferimento per la nostra cartella di risorse, e poi ID è un riferimento per tutto nella cartella delle risorse, tutti gli ID, e resultTextView. E come prima, resultTextView è un oggetto, che significa che ha tutte queste proprietà associate. Quando usiamo getText per la modifica del testo in questo campo di testo o la visualizzazione del testo possiamo effettivamente utilizzare setText, e poi abbiamo già trovato il messaggio dal intenti, quindi posso dire che il messaggio, e questo sarà effettivamente impostare il messaggio. Ci vuole un attimo per lanciare, e poi possiamo vedere se non si blocca, ma domande su questo processo proprio lì, quel tipo di interazione? In molti modi è semplice. La ragione per cui sto passando qualcosa di relativamente semplice è, di nuovo, perché si arriva a vedere l'interazione tra il layout, il codice sorgente, come si cose di riferimento e magari avere un po 'l'esposizione a come Java lavora lì. Se io in realtà digito qualcosa qui, come ohai, e poi clicco sul pulsante, lancia una nuova attività, e che vista testo dice ohai. Questo è molto semplice, ma spero che dopo che l'esempio si ordina di vedere come funziona questa interazione, e ora che pasticcio di file sul lato sinistro per tutte le cartelle di progetto, si spera si sa dove guardare ora. Questa è la vostra zona di codice sorgente. Layout è davvero l'unica cosa che dovrete affrontare fino ad includere immagini e le drawable o qualsiasi altra cosa, e valori, che includeranno le stringhe, come abbiamo detto, e quindi gli stili è qualcosa che è un po 'come i CSS. Affrontare quando si vuole, ma fino a quando ti trovi bene con l'aggiunta di un tocco in più alla vostra applicazione non c'è bisogno di preoccuparsi troppo. Giusto per concludere un altra cosa che sarà sicuramente da includere- supponendo che si desidera integrare funzioni interessanti e risparmiare qualche extra di codifica- sarebbe quella di includere librerie di terze parti. Ecco il piccolo ragazzo Android con il cappello di Sherlock Holmes. Questa è un'azione bar biblioteca Sherlock, che sostanzialmente significa che barra azioni che avete visto in precedenza, che è ora di serie in Ice Cream Sandwich e Jelly Bean, Se si desidera portare quel tipo di esperienza utente per gli utenti di versioni precedenti e salvare se stessi da preoccuparsi di come l'utente sta per navigare su versioni precedenti, quando quella cosa non è lì è possibile includere questa biblioteca e poi devi solo riferimento, piuttosto che il default di Android librerie per la barra delle azioni, si fa riferimento a questa libreria di supporto. Cose come Scoreloop, è fantastico se avete intenzione di includere un gioco. Esso consente di aggiungere le classifiche ei risultati di giochi. AdMob è un modo di mettere gli annunci nelle vostre applicazioni nel caso in cui si vuole fare un po 'di soldi fuori di esso. Naturalmente, non vi è Facebook e Twitter per integrare lì Se si desidera condividere facilmente le cose, et cetera. Dropbox, allo stesso modo, e Google Analytics è che guardando un grafico lì. Questo sarà molto importante se si vuole realmente vedere che interagisce con la tua applicazione o chi è, come interagiscono, et cetera. Google, per impostazione predefinita, si racconta un sacco di statistiche su chi ha installato la tua app e ciò che i telefoni che hanno, quello versioni del sistema operativo hanno. Ma se volete vedere chi lo sta usando su una base quotidiana e come lo usano allora ti consigliamo di includere una sorta di sistema di monitoraggio del genere. Quando si è pronti a distribuire la vostra applicazione Non ho bisogno di andare in quella in troppa profondità. Clicca sul link qui, Google Play. Ha usato essere il mercato Android. Essi rimarchiati tutto con Google Play, così ora si presenta a questo. E 'molto semplice. È necessario includere una descrizione, alcuni screenshot. Come ho detto, non c'è alcun processo di approvazione come iOS. E dove andare da qui? Vi ho mostrato un esempio molto semplice. Speriamo che se sembra terribilmente semplice allora questo è probabilmente un buon segno. Se affatto sentito un po 'confuso o incerto su ciò che stavo scrivendo questo è anche bene, ma da qui vai alla guide di Google. Questo è un ottimo posto per iniziare. Sarà parlare attraverso ciò che si aspetta in termini di progettazione di applicazioni, come gli utenti normalmente interagiscono con esso. E 'molto più in forma libera di iOS, direi, che sembra vista del tavolo sono-io non lo so, questo è il loro pane e burro. Tutto è una visione tavolo scorrevole su e giù. Con Android che sicuramente incoraggiare le persone a guardare la cosa da tutta una serie di prospettive diverse. Quando si include il kit di sviluppo software di questo ADT Per impostazione predefinita, si dispone di un insieme di progetti di esempio in Android. Proprio qui, Android, Android progetto di esempio. Se clicco su questo, allora posso scegliere una versione per il quale il campione valgono progetti. C'è un sacco di cose diverse qui. Si inizia con la compatibilità barra di azione, giochi accelerometro, backup e ripristino, Bluetooth, costruttore gesto. Jetboy è un esempio di gioco che ti danno, come è LunarLander. Ci sono un sacco di applicazioni di esempio qui, e sono tutti destinati a diversi aspetti delle API di Android, e l'idea è che, come fate la vostra applicazione non hai bisogno di imparare tutto su Android per fare un app Android. Devi solo conoscere le parti che si sta effettivamente andando a utilizzare. Guardate queste librerie di campioni. Sentitevi liberi di copiare e incollare il codice e riapplicarlo. E 'una grande cosa per guardare il codice più difficile e cercare di capire, il che è ovviamente per questo che in CS50 spesso vi diamo grandi quantità di codice sorgente. Guardate alcuni di questi, se avete intenzione di utilizzare le librerie simili e poi applicarlo al proprio codice. E, naturalmente, ci sono tutorial. Cerca esercitazioni. Ho trovato un sacco di buoni on-line che può portare fino a velocità con quello che frammenti veramente sono e come si possono usare. Alcune di queste nuove cose di design, come frammenti, davvero non c'è bisogno di essere preoccupati se non stai facendo un abbastanza grande nel progetto di portata. Sono cose che Google sta cercando di eliminare gradualmente dentro StackOverflow è, naturalmente, il vostro amico. Speriamo che ti ho venduto un po 'su Android, rendendosi conto che è molto più facile da affrontare in termini di solo il linguaggio di codifica. Java è direi molto più facile da capire di Objective-C. Android sta crescendo credo molto di più di iOS. Voglio dire, i dati sono lì, a parte quello che penso. Sta andando in giro per un po ', e sono a pochi anni indietro in termini di loro cicli di progettazione, quindi è una sorta di comprensibile che stanno ancora lavorando attraverso alcuni di questi questioni di coerenza, come questo barra di azione è una cosa nuova per loro ancora, sorta di creazione simile esperienza utente in tutte le loro applicazioni. Speriamo che si può andare avanti ora e di aprire Eclipse e fare le vostre proprie applicazioni Android. Qualcuno ha delle domande prima di concludere qualsiasi cosa? Vi posso dire che la risposta è 42. Bene, felice di codifica a tutti, e buona fortuna. [CS50.TV]