1 00:00:00,000 --> 00:00:02,610 [Powered by Google Translate] [Seminari] [Apps Android (Ora con Jelly Beans!)] 2 00:00:02,610 --> 00:00:04,210 [Giordania Jozwiak] [Harvard University] 3 00:00:04,210 --> 00:00:06,780 [Questa è CS50.] [CS50.TV] 4 00:00:06,780 --> 00:00:11,600 >> Ciao a tutti, e benvenuti al Apps Android (Ora con Jelly Beans!) Seminario. 5 00:00:11,600 --> 00:00:14,530 Si chiama Ora con Jelly Beans, naturalmente, perché 6 00:00:14,530 --> 00:00:17,310 l'ultima versione del sistema operativo si chiama Jelly Bean. 7 00:00:17,310 --> 00:00:22,950 Quando ho parlato di Android lo scorso anno e ha fatto questo in fondo stesso seminario 8 00:00:22,950 --> 00:00:29,150 Stavo presentando i modelli di progettazione e le scelte stilistiche di pan di zenzero, 9 00:00:29,150 --> 00:00:31,250 anche se Ice Cream Sandwich era venuto fuori, al momento, 10 00:00:31,250 --> 00:00:33,680 e questa è una cosa parleremo di andare avanti un po '. 11 00:00:33,680 --> 00:00:35,720 Android, naturalmente, ha alcuni problemi con la frammentazione, 12 00:00:35,720 --> 00:00:40,240 così l'ultimo sistema operativo di Google è di solito 13 00:00:40,240 --> 00:00:44,710 Non davvero intenzione di diventare comune tra gli utenti di potenzialmente fino a un anno, purtroppo. 14 00:00:44,710 --> 00:00:49,960 >> Ma ignorando che, parleremo di un sacco di motivi per cui 15 00:00:49,960 --> 00:00:53,000 Android è molto meglio di iOS. 16 00:00:53,000 --> 00:00:56,410 Va bene, parleremo di Android vs iOS, 17 00:00:56,410 --> 00:00:59,770 alcuni paradigmi di progettazione, come potrai avere istituito in una sola diapositiva, 18 00:00:59,770 --> 00:01:03,410 e la grande differenza tra questo e l'anno scorso è Voglio solo 19 00:01:03,410 --> 00:01:06,860 Zoom attraverso alcune cose concettuali che lavorano con 20 00:01:06,860 --> 00:01:09,950 il sistema operativo e poi andare in un esempio molto semplice. 21 00:01:09,950 --> 00:01:13,730 Infatti, proprio l'esempio che Google descrive per costruire la vostra prima applicazione, 22 00:01:13,730 --> 00:01:17,070 e andremo attraverso di essa insieme e solo descriviamo. 23 00:01:17,070 --> 00:01:22,100 >> So che molti di voi hanno codificato solo in C, quindi Java è già intenzione di essere 24 00:01:22,100 --> 00:01:27,220 una prospettiva diversa, e in questo modo potrai avere i piedi bagnati 25 00:01:27,220 --> 00:01:31,540 e sentire un po 'più a suo agio con esso si spera. 26 00:01:31,540 --> 00:01:35,330 Una sintesi rapida, Android vs iOS. 27 00:01:35,330 --> 00:01:39,200 In Android c'è questo sviluppatore tassa una tantum di $ 25, 28 00:01:39,200 --> 00:01:42,390 nessuno di questa cosa 100 euro l'anno. 29 00:01:42,390 --> 00:01:45,440 Non ci sono restrizioni, il che significa che se voglio presentare un app, 30 00:01:45,440 --> 00:01:51,560 Ho appena lo presenta, e non c'è alcun processo di approvazione che ci sia per iOS. 31 00:01:51,560 --> 00:01:53,890 Si arriva a sviluppare con Java con Eclipse, 32 00:01:53,890 --> 00:01:57,090 che è cross-platform, quindi non importa se avete un Mac, 33 00:01:57,090 --> 00:01:59,600 Windows o qualche macchina Linux. 34 00:01:59,600 --> 00:02:03,730 Naturalmente, con iOS devi usare XCode su un Mac, 35 00:02:03,730 --> 00:02:06,930 e Android è utilizzato da molte più persone, 36 00:02:06,930 --> 00:02:11,580 quindi se volete la vostra applicazione per avere un qualche tipo di visibilità o forse 37 00:02:11,580 --> 00:02:14,110 fare un po 'di soldi dalla pubblicità 38 00:02:14,110 --> 00:02:17,450 probabilmente siete più probabilità di trarre beneficio da Android. 39 00:02:17,450 --> 00:02:20,630 >> E una cosa che è sempre stata conosciuta per Android 40 00:02:20,630 --> 00:02:25,100 è la quantità estrema di personalizzazione, mentre iOS è molto fissato nei loro modi 41 00:02:25,100 --> 00:02:29,380 in modo che possano mantenere la sicurezza e il controllo su ogni piccolo aspetto 42 00:02:29,380 --> 00:02:34,180 del progetto all'interno del loro sistema operativo e le singole applicazioni. 43 00:02:34,180 --> 00:02:40,180 Android è forma molto libera, e c'è così molte più possibilità. 44 00:02:40,180 --> 00:02:42,530 Ok, alcuni paradigmi di progettazione. 45 00:02:42,530 --> 00:02:49,600 Si noti qui, proprio come iOS ha compresse e iPhone e iPod Touch 46 00:02:49,600 --> 00:02:53,840 che hanno da sostenere, per esempio, come una dozzina di dispositivi se si vuole sostenere 47 00:02:53,840 --> 00:02:55,450 cose storiche pure. 48 00:02:55,450 --> 00:02:58,410 Con Android si deve supportare centinaia di dispositivi, 49 00:02:58,410 --> 00:03:01,240 quindi ci sono alcune cose che Google ha cercato di implementare 50 00:03:01,240 --> 00:03:04,970 per rendere l'esperienza utente un po 'più consistente, 51 00:03:04,970 --> 00:03:08,560 ma ci sarà anche parlare di come questo significa che ci sono problemi di frammentazione 52 00:03:08,560 --> 00:03:11,700 che è costantemente essere consapevoli di sostenere. 53 00:03:11,700 --> 00:03:16,140 Frammentazione significa che ci sono molti sistemi operativi diversi, 54 00:03:16,140 --> 00:03:20,330 molti telefoni diversi con diversi hardware con sistema operativo Android tutti allo stesso tempo, 55 00:03:20,330 --> 00:03:29,680 così questo grafico qui risale per circa 6 mesi. 56 00:03:29,680 --> 00:03:36,460 Si, sei mesi, e si può vedere come la band più oscura 57 00:03:36,460 --> 00:03:39,330 sul fondo è Jelly Bean, che è uscito durante l'estate, 58 00:03:39,330 --> 00:03:42,970 e si può vedere in questo momento probabilmente circa il 2% dei telefoni hanno. 59 00:03:42,970 --> 00:03:45,520 >> Ice Cream Sandwich è uscito più di un anno fa, 60 00:03:45,520 --> 00:03:47,770 e un quarto dei telefoni hanno. 61 00:03:47,770 --> 00:03:53,910 Ci sono ancora un sacco di telefoni che utilizzano la versione OS da anni fa. 62 00:03:53,910 --> 00:03:57,820 Una cosa che Google ha cercato di fare per rendere l'esperienza utente 63 00:03:57,820 --> 00:04:01,400 molto più coerente tra le applicazioni sta iniziando con nido d'ape, 64 00:04:01,400 --> 00:04:04,320 che è la versione compressa, quindi Ice Cream Sandwich e Jelly Bean, 65 00:04:04,320 --> 00:04:06,750 che stanno veramente cercando di sottolineare l'uso di questa barra azione, 66 00:04:06,750 --> 00:04:10,430 che è quello che potete vedere qui in alto, 67 00:04:10,430 --> 00:04:14,730 tutto qui, anche questo piccolo pulsante Impostazioni. 68 00:04:14,730 --> 00:04:16,079 E 'la scelta di design. 69 00:04:16,079 --> 00:04:18,000 Ora, ogni volta che vedi i 3 puntini significa cliccare su questo, 70 00:04:18,000 --> 00:04:21,880 e ci sarà un menu a discesa, che ha una sorta di impostazioni. 71 00:04:21,880 --> 00:04:28,900 Questo dimostra solo su perché ho cliccato su questo pulsante. 72 00:04:28,900 --> 00:04:32,040 Questo è qualcosa che si sta cercando di utilizzare per rendere le applicazioni un po 'più consistente 73 00:04:32,040 --> 00:04:39,210 su tutta la linea e così l'utente ha un miglior senso di un'esperienza uniforme. 74 00:04:39,210 --> 00:04:42,640 >> Ok, quindi in caso non avete già fatto o se si sta guardando in casa 75 00:04:42,640 --> 00:04:50,210 allora è possibile seguire questa procedura per impostare l'ambiente di codifica. 76 00:04:50,210 --> 00:04:52,630 Si tratterà di andare al sito web qui. 77 00:04:52,630 --> 00:04:56,260 Puoi Google installare Android SDK 78 00:04:56,260 --> 00:04:59,130 e seguire alcune descrizioni lì. 79 00:04:59,130 --> 00:05:01,310 Ti dicono tutto. 80 00:05:01,310 --> 00:05:05,160 Hanno installato l', scaricare Eclipse SDK versione Classic, 81 00:05:05,160 --> 00:05:07,450 anche se, ovviamente, stiamo codifica in Java. 82 00:05:07,450 --> 00:05:12,190 Essi raccomandano questo, e poi questo ADT, gli strumenti di sviluppo di Android, 83 00:05:12,190 --> 00:05:17,300 è un plugin che si installa in Eclipse che consente di 84 00:05:17,300 --> 00:05:20,550 avere una esperienza molto più snella con Android all'interno di Eclipse. 85 00:05:20,550 --> 00:05:24,070 Essa vi darà alcune interfacce utente grafiche 86 00:05:24,070 --> 00:05:29,610 per la progettazione dei punti di vista, e vi darà molto di più sostegno 87 00:05:29,610 --> 00:05:34,840 e la possibilità di avviare con l'emulatore e tutto quel genere di cose. 88 00:05:34,840 --> 00:05:36,090 Framework applicativo. 89 00:05:36,090 --> 00:05:41,590 >> Voglio parlare di come i progetti all'interno di Android sono strutturati, 90 00:05:41,590 --> 00:05:44,830 e poi andremo in un esempio veloce, e si spera 91 00:05:44,830 --> 00:05:48,820 è possibile porre domande in qualsiasi momento e sentirsi a proprio agio con la fine di esso. 92 00:05:48,820 --> 00:05:50,090 Abbiamo prima qualche gergo. 93 00:05:50,090 --> 00:05:55,330 Un'attività è come la schermata che si vede quando si lancia un app. 94 00:05:55,330 --> 00:05:57,840 L'intera esperienza è l'attività stessa, 95 00:05:57,840 --> 00:06:00,790 così si potrebbe pensare ad esso come uno schermo o una vista, 96 00:06:00,790 --> 00:06:04,540 ma in realtà è la parte del codice sorgente di esso. 97 00:06:04,540 --> 00:06:12,680 Che ancora chiamiamo la parte di interfaccia reale di una visione. 98 00:06:12,680 --> 00:06:17,230 E 'un po' come il modo in pset 7 abbiamo avuto il controller e poi la vista. 99 00:06:17,230 --> 00:06:20,690 L'attività è più o meno il controller, 100 00:06:20,690 --> 00:06:23,360 e la vista è quello che stiamo facendo in termini di XML 101 00:06:23,360 --> 00:06:25,260 che è associato con tale attività. 102 00:06:25,260 --> 00:06:29,340 Frammenti sono qualcosa che è implementato in Ice Cream Sandwich per il futuro. 103 00:06:29,340 --> 00:06:36,380 E 'solo un' idea di prendere le parti della vista o l'attività 104 00:06:36,380 --> 00:06:39,990 e la loro suddivisione in aree separate in modo che possiamo 105 00:06:39,990 --> 00:06:45,030 rendere il nostro codice più utilizzabile per questi diversi dispositivi 106 00:06:45,030 --> 00:06:51,890 che dobbiamo sostenere, ed è solo un modo per cercare di 107 00:06:51,890 --> 00:06:54,290 anche fattore di più codice. 108 00:06:54,290 --> 00:07:01,090 I servizi sono cose sfondo come la riproduzione di musica o di indicazioni di navigazione potenzialmente. 109 00:07:01,090 --> 00:07:05,640 I fornitori di contenuti, queste sono le API all'interno del sistema operativo 110 00:07:05,640 --> 00:07:09,070 che consentono di accedere ai dati condivisi, come le informazioni di contatto, 111 00:07:09,070 --> 00:07:12,790 e quindi un intento è qualcosa che useremo quando vogliamo lanciare 112 00:07:12,790 --> 00:07:17,210 una nuova attività dalla nostra attività corrente. 113 00:07:17,210 --> 00:07:20,980 >> Ciao Android, questo sta andando essere un progetto che parleremo. 114 00:07:20,980 --> 00:07:25,410 Io in realtà lo faccio per te, e poi farò una cosa in cui si clicca su un pulsante 115 00:07:25,410 --> 00:07:27,650 con un po 'di testo e avviare una nuova attività. 116 00:07:27,650 --> 00:07:30,110 Molto semplice, ma voglio passare attraverso 117 00:07:30,110 --> 00:07:34,480 quello che andrà in un progetto come questo. 118 00:07:34,480 --> 00:07:39,260 Quando si effettua il nuovo progetto verrà visualizzato all'interno di Eclipse 119 00:07:39,260 --> 00:07:41,900 c'è questo progetto chiamato Ciao Android. 120 00:07:41,900 --> 00:07:43,470 Poi ci sono un sacco di cartelle qui. 121 00:07:43,470 --> 00:07:46,760 Quelli siete veramente interessati con sono la cartella di origine, 122 00:07:46,760 --> 00:07:54,540 la cartella delle risorse, la res, e in qualche misura la cartella libs per le biblioteche. 123 00:07:54,540 --> 00:08:00,070 E proprio così siamo sulla stessa pagina con quella 124 00:08:00,070 --> 00:08:03,240 se si dovesse creare un nuovo progetto, 125 00:08:03,240 --> 00:08:08,270 è possibile farlo proprio qui, quindi se voglio chiamarlo HelloAndroid, 126 00:08:08,270 --> 00:08:11,100 e poi lo fa automaticamente un sacco di informazioni per noi. 127 00:08:11,100 --> 00:08:14,110 Il nome del pacchetto dovrebbe essere un identificatore univoco 128 00:08:14,110 --> 00:08:16,710 che sarebbero di norma associato al sito, se si ha uno. 129 00:08:16,710 --> 00:08:24,430 >> Per esempio, io chiamerò questo net.cs50.helloandroid. 130 00:08:24,430 --> 00:08:30,070 E ho già fatto questo progetto una volta. 131 00:08:30,070 --> 00:08:40,059 Va bene, mi dispiace. Chiamiamola HelloCS50. 132 00:08:40,059 --> 00:08:42,929 E poi vi chiederà cose come che tipo di icona vogliamo fare. 133 00:08:42,929 --> 00:08:48,840 Questo è tutto, perché l'interfaccia di Android Developer Tools, 134 00:08:48,840 --> 00:08:53,350 il plugin che abbiamo aggiunto per Eclipse, in modo che possiamo scegliere le cose come 135 00:08:53,350 --> 00:08:58,320 ciò icona che vogliamo, e che sarebbe andato in quella profondità, se vogliamo. 136 00:08:58,320 --> 00:09:04,360 Ma alla fine, solo fare il progetto, 137 00:09:04,360 --> 00:09:07,040 e tutto ciò che si presenta proprio qui. 138 00:09:07,040 --> 00:09:10,030 Come ho mostrato sull'altro schermo, 139 00:09:10,030 --> 00:09:14,070 abbiamo la cartella di origine, e vi parlerò di cosa tutto questo significa che presto, 140 00:09:14,070 --> 00:09:19,090 ma si può vedere che immediatamente ci porta alla schermata HelloCS50. 141 00:09:19,090 --> 00:09:24,690 Ci sono alcuni tasti più di qui per l'aggiunta di testo e il testo campo layout. 142 00:09:24,690 --> 00:09:28,910 E 'un po' come XCode, ma purtroppo non è così snella. 143 00:09:28,910 --> 00:09:37,790 Ma i clip saranno il vostro amico e ADT, in particolare, per fare questo. 144 00:09:37,790 --> 00:09:40,920 >> Ok, la cartella di origine in cui è 145 00:09:40,920 --> 00:09:43,820 i file Java sono detenuti, e questo è in realtà il lancio del programma. 146 00:09:43,820 --> 00:09:45,990 E 'fondamentalmente come i controllori. 147 00:09:45,990 --> 00:09:49,020 La cartella delle risorse o la res è dove terremo layout dello schermo, 148 00:09:49,020 --> 00:09:54,110 immagini, suoni, testi, animazioni e tutto il resto, libs, ovviamente, le biblioteche. 149 00:09:54,110 --> 00:10:01,700 E il manifesto, è il modo in cui il sistema Android sa 150 00:10:01,700 --> 00:10:03,130 come interagire con la vostra applicazione. 151 00:10:03,130 --> 00:10:07,980 Si dice che sulle autorizzazioni e quali attività sarà effettivamente eseguito. 152 00:10:07,980 --> 00:10:12,350 Si tratta di tutte le informazioni essenziali che è necessario per eseguire l'applicazione. 153 00:10:12,350 --> 00:10:17,990 La cartella di origine è-se espandiamo come si può vedere qui. 154 00:10:17,990 --> 00:10:23,920 E un esempio che un codice sarà: questo è il codice di default. 155 00:10:23,920 --> 00:10:27,930 Come la chiamavamo, MainActivity. 156 00:10:27,930 --> 00:10:33,230 Per impostazione predefinita, otteniamo onCreate, che è una funzione che viene chiamata quando i carichi di questa attività, 157 00:10:33,230 --> 00:10:37,150 così si vuole chiamare onCreate (icicle). 158 00:10:37,150 --> 00:10:40,440 Questo ripristinerà tutti i bit di informazione 159 00:10:40,440 --> 00:10:44,910 nel caso in cui l'applicazione è stata messa in pausa. 160 00:10:44,910 --> 00:10:48,790 >> C'è un'attività tutta grafico del ciclo di vita che si può guardare 161 00:10:48,790 --> 00:10:50,380 quando si ottiene un po 'più in profondità in esso, 162 00:10:50,380 --> 00:10:56,210 ma la linea più importante di codice c'è questa funzione setContentView 163 00:10:56,210 --> 00:11:00,290 che caricherà il file di risorse per il layout. 164 00:11:00,290 --> 00:11:03,590 Allora che cosa onCreate qui è fondamentalmente facendo è che sta dicendo 165 00:11:03,590 --> 00:11:07,010 quando creo questa attività voglio caricare questo layout. 166 00:11:07,010 --> 00:11:12,030 E parleremo di ciò che il layout è in un secondo. 167 00:11:12,030 --> 00:11:16,230 Se dovessimo lanciare che qui appare esattamente come questo, 168 00:11:16,230 --> 00:11:22,880 e per difetto perché abbiamo Eclipse fare questo e ADT facendo per noi 169 00:11:22,880 --> 00:11:28,210 questo è tutto codice standard che ha creato per noi, 170 00:11:28,210 --> 00:11:34,630 e siamo in grado di andare avanti e cambiare le cose come ci piace. 171 00:11:34,630 --> 00:11:38,190 La cartella delle risorse, come ho detto, questo è dove teniamo tutti i layout, 172 00:11:38,190 --> 00:11:41,150 drawable in termini di qualsiasi tipo di immagini- 173 00:11:41,150 --> 00:11:46,360 si chiamano drawable-e poi i file audio, i menu. 174 00:11:46,360 --> 00:11:51,170 E 'un modo di un intero gruppo di XML in un bel modo ordinato. 175 00:11:51,170 --> 00:11:58,030 Come potete vedere, ci sono. Hdpi, ldpi, MDPI e cartelle xhdpi per i drawable. 176 00:11:58,030 --> 00:12:02,220 Si tratta di diverse densità di pixel dello schermo, così alta densità per pollice, 177 00:12:02,220 --> 00:12:05,710 bassa densità, media densità, extra alta densità. 178 00:12:05,710 --> 00:12:08,900 >> Si tratta, ancora una volta, in modo che possiamo sostenere tutti questi diversi dispositivi, 179 00:12:08,900 --> 00:12:15,100 e, idealmente, avrete immagini diverse per ogni diversa risoluzione. 180 00:12:15,100 --> 00:12:20,740 Layouts sono dove includiamo tutti i diversi layout che saranno utilizzati in diverse attività. 181 00:12:20,740 --> 00:12:24,150 Essi potrebbero anche includere layout per frammenti, 182 00:12:24,150 --> 00:12:26,670 attività parziali che significa sostanzialmente. 183 00:12:26,670 --> 00:12:29,610 Se si vuole fare qualcosa di fresco come ogni volta che si ruota il telefono 184 00:12:29,610 --> 00:12:33,900 si desidera avere un layout diverso si può fare layout paesaggio come una cartella diversa, 185 00:12:33,900 --> 00:12:39,000 e Android ha automaticamente un insieme di tali regole all'interno della cartella delle risorse, 186 00:12:39,000 --> 00:12:44,690 così sarà sapere di guardare diverse cartelle in base alla configurazione corrente del telefono cellulare, 187 00:12:44,690 --> 00:12:46,740 che tipo di hardware che si sta utilizzando. 188 00:12:46,740 --> 00:12:52,350 Allo stesso modo, questo valori-v11 qui e valori-V14 189 00:12:52,350 --> 00:12:55,460 ed i valori di default delle cartelle Questa è per- 190 00:12:55,460 --> 00:13:01,730 bene, i valori di per sé, questo sarà i valori di default in tutte le versioni del sistema operativo. 191 00:13:01,730 --> 00:13:06,390 D'altra parte, V11 e V14 si otterrebbero con Honeycomb 192 00:13:06,390 --> 00:13:08,780 e Ice Cream Sandwich, rispettivamente. 193 00:13:08,780 --> 00:13:12,800 Ancora una volta, questi sono modi che, all'interno di queste cartelle sono diverse stringhe 194 00:13:12,800 --> 00:13:17,550 e stili, in modo da poter personalizzare l'aspetto della vostra applicazione 195 00:13:17,550 --> 00:13:22,660 o potenzialmente anche la sua funzionalità, ma che probabilmente sarebbe una cattiva idea, 196 00:13:22,660 --> 00:13:25,890 in base alla versione del sistema operativo. 197 00:13:25,890 --> 00:13:28,760 >> E ho parlato di tutto questo qui. 198 00:13:28,760 --> 00:13:35,870 Ancora una volta, disegnabili, crudo, il layout, i valori. 199 00:13:35,870 --> 00:13:41,380 Le impostazioni predefinite, se andiamo in Ciao Ciao Android o CS50 momento 200 00:13:41,380 --> 00:13:43,310 sembrerà proprio come questo. 201 00:13:43,310 --> 00:13:45,800 Si dirà ciao mondo. 202 00:13:45,800 --> 00:13:58,430 Come si può vedere proprio qui con il testo Android 203 00:13:58,430 --> 00:14:04,420 il testo per questo punto di vista il testo, che è fondamentalmente solo una etichetta, 204 00:14:04,420 --> 00:14:06,900 è quello che si direbbe in iOS. 205 00:14:06,900 --> 00:14:11,580 Ha questo divertente notazione @ stringa / hello_world. 206 00:14:11,580 --> 00:14:16,200 Questo è così che possiamo, noi tentare di estrarre tutte le stringhe, 207 00:14:16,200 --> 00:14:19,740 tutte le stringhe hardcoded in Android in una cartella separata, 208 00:14:19,740 --> 00:14:23,610 che risulta essere in values.strings. 209 00:14:23,610 --> 00:14:29,300 Se guardiamo qui, possiamo vedere che abbiamo una stringa hard-coded qui salvato 210 00:14:29,300 --> 00:14:33,910 per ciao mondo, e si chiama ciao mondo, e questo è una sorta di 211 00:14:33,910 --> 00:14:39,230 decisione di progettazione comune a molte piattaforme che si desidera- 212 00:14:39,230 --> 00:14:41,780 stringhe sono il genere di cose che vogliamo potenzialmente in grado di cambiare. 213 00:14:41,780 --> 00:14:48,050 Noi non vogliamo controllare F nel nostro file di codice sorgente nel nostro XML. 214 00:14:48,050 --> 00:14:50,760 Vogliamo essere in grado di cambiare questo ogni volta che ne avremo la possibilità. 215 00:14:50,760 --> 00:14:53,640 >> Questo file XML, strings.xml, è un modo di estrarre 216 00:14:53,640 --> 00:14:56,710 stringhe hardcoded che altrimenti sarebbero a disposizione le nostre risorse 217 00:14:56,710 --> 00:15:03,530 o nel nostro codice sorgente. 218 00:15:03,530 --> 00:15:08,190 Il Manifesto è dove teniamo le informazioni essenziali circa l'applicazione. 219 00:15:08,190 --> 00:15:11,050 Esso include il nome del pacchetto. Questo deve essere un identificatore univoco. 220 00:15:11,050 --> 00:15:16,020 A differenza di App Store per iOS i nomi delle applicazioni 221 00:15:16,020 --> 00:15:19,980 Non c'è bisogno di essere unico, e in effetti è possibile modificare il nome della vostra applicazione 222 00:15:19,980 --> 00:15:23,570 dopo la spedizione, quindi se mi metto con Angry Birds, 223 00:15:23,570 --> 00:15:26,840 e poi faccio un aggiornamento, e io non voglio rilasciare una nuova versione 224 00:15:26,840 --> 00:15:34,230 Credo che avrei potuto chiamarlo Angry Birds 2, mentre io sono sullo stesso ciclo di rilascio. 225 00:15:34,230 --> 00:15:36,780 Sarebbe semplicemente presentarsi come un aggiornamento. 226 00:15:36,780 --> 00:15:39,790 L'unica cosa che deve essere unico è questo il nome del pacchetto, 227 00:15:39,790 --> 00:15:41,280 che non molte persone vedranno. 228 00:15:41,280 --> 00:15:44,680 Beh, che ci si vede solo se si stesse guardando il codice sorgente o se c'è un qualche tipo di errore. 229 00:15:44,680 --> 00:15:47,580 I componenti includono attività, quindi dobbiamo dichiarare 230 00:15:47,580 --> 00:15:49,070 qualsiasi tipo di attività che usiamo. 231 00:15:49,070 --> 00:15:53,430 Si tratta di un permesso del genere. 232 00:15:53,460 --> 00:15:58,150 >> Perché Android non ha questo processo di applicazione rigorosa 233 00:15:58,150 --> 00:16:02,210 per la presentazione delle apps invece solo che tutto ciò in base al largo di permessi 234 00:16:02,210 --> 00:16:04,300 e dichiarando le cose nel manifesto. 235 00:16:04,300 --> 00:16:06,380 La versione SDK è anche importante. 236 00:16:06,380 --> 00:16:10,330 Siamo in grado di impostare l'uso come SDK versione minima qualcosa. 237 00:16:10,330 --> 00:16:16,010 Ovviamente, si desidera creare il codice 238 00:16:16,010 --> 00:16:18,570 e design per i sistemi operativi più recenti. 239 00:16:18,570 --> 00:16:20,840 Forse non è il più nuovo, forse non Jelly Bean. 240 00:16:20,840 --> 00:16:23,610 Forse si vuole progettare in primo luogo per Ice Cream Sandwich, 241 00:16:23,610 --> 00:16:27,120 anche se sono praticamente la stessa in termini di decisioni di progettazione 242 00:16:27,120 --> 00:16:30,550 e le librerie reali e le API. 243 00:16:30,550 --> 00:16:36,250 Ma piuttosto che avere persone 244 00:16:36,250 --> 00:16:40,050 dell'originale Android versione simil-Donut via del ritorno quando, 245 00:16:40,050 --> 00:16:43,420 che ancora capita di usare che tenta di scaricare l'applicazione e poi dire 246 00:16:43,420 --> 00:16:46,160 non funziona sul mio telefono è possibile impostare la versione minima 247 00:16:46,160 --> 00:16:48,620 e farlo essere Gingerbread o Ice Cream Sandwich 248 00:16:48,620 --> 00:16:53,300 o qualsiasi altra cosa si sente sommettersi confortevole. 249 00:16:53,300 --> 00:16:57,170 E questo è un esempio del Manifesto. Possiamo guardare a quello reale in un po '. 250 00:16:57,170 --> 00:17:00,900 >> Ok, dobbiamo solo andare avanti con la demo. 251 00:17:00,900 --> 00:17:08,900 Questa è la demo se Google Android costruire la vostra prima app o qualcosa di simile. 252 00:17:08,900 --> 00:17:12,089 Andremo attraverso tutto ciò che sta succedendo in là, 253 00:17:12,089 --> 00:17:17,690 e mi dispiace, solo per un riferimento che qui sa Java in qualsiasi misura? 254 00:17:17,690 --> 00:17:28,310 Ok, allora Java è nuovo linguaggio di codifica per la maggior parte della gente che esce CS50. 255 00:17:28,310 --> 00:17:31,850 In breve, per andare di nuovo quello che dice qui, 256 00:17:31,850 --> 00:17:35,580 quello che vogliamo fare è invece di regolare questa applicazione mondo ciao 257 00:17:35,580 --> 00:17:38,620 che tutto ciò che fa è si lancia e si dice ciao mondo 258 00:17:38,620 --> 00:17:43,580 e si dice ciao CS50 in alto, perché questo è il nome dell'attività 259 00:17:43,580 --> 00:17:47,190 stiamo andando a cercare di fare un campo di testo e un pulsante 260 00:17:47,190 --> 00:17:50,680 in modo che quando si preme questo tasto ci vorrà il testo 261 00:17:50,680 --> 00:17:53,660 dal campo di testo e avviare una nuova attività, e dirà 262 00:17:53,660 --> 00:17:58,380 qualunque testo che detto nell'attività, e questo è relativamente semplice. 263 00:17:58,380 --> 00:18:00,650 Non è molto interessante. Lei non vorrebbe rilasciare qualsiasi applicazione come questa. 264 00:18:00,650 --> 00:18:03,880 Ma dimostra alcune importanti cose di design. 265 00:18:03,880 --> 00:18:07,030 >> Dovremo interagire con il manifesto, con i file di layout, 266 00:18:07,030 --> 00:18:12,440 con il codice sorgente, e si può vedere come avviare una attività da un altro. 267 00:18:19,740 --> 00:18:23,060 Si comincerà con il layout per la nostra prima attività, 268 00:18:23,060 --> 00:18:27,320 che lo so che è un po 'piccola, 269 00:18:27,320 --> 00:18:32,660 ma come si può vedere in questo momento, tutto ciò che è è che ha il nostro logo che abbiamo creato, 270 00:18:32,660 --> 00:18:36,310 il nome dell'attività, e dice ciao mondo in centro. 271 00:18:36,310 --> 00:18:40,400 Invece, io prima di andare a fare questo in un layout lineare, 272 00:18:40,400 --> 00:18:42,350 un layout relativo, e queste sono tutte cose 273 00:18:42,350 --> 00:18:45,870 si poteva guardare in alto e vale la pena di andare oltre ad un certo punto in termini di layout. 274 00:18:45,870 --> 00:18:47,310 E 'un po' come HTML. 275 00:18:47,310 --> 00:18:52,640 Abbiamo detto che non è davvero la pena conoscere, in termini di senso programmatico, 276 00:18:52,640 --> 00:18:55,840 ma ci sono così tanti diversi layout che si possono controllare, 277 00:18:55,840 --> 00:18:57,970 ed è proprio come i CSS, in termini di stili. 278 00:18:57,970 --> 00:19:01,590 >> C'è un sacco di cose solo in termini di estetica qui, 279 00:19:01,590 --> 00:19:08,930 e sì, è utile imparare, ma è il genere di cosa che si dovrebbe guardare in alto 280 00:19:08,930 --> 00:19:11,810 come si va e si sente come avete bisogno di qualcosa di nuovo. 281 00:19:11,810 --> 00:19:17,030 Posso usufruire di alcuni degli strumenti ADT qui almeno per cominciare con. 282 00:19:17,030 --> 00:19:21,930 Farò un campo di testo, e farò un pulsante. 283 00:19:21,930 --> 00:19:24,100 Metterli a destra accanto all'altro. 284 00:19:24,100 --> 00:19:28,200 Hanno già ridimensionate in modo appropriato. 285 00:19:28,200 --> 00:19:31,320 Siamo spiacenti, ancora una volta, tornando alla differenza tra schema lineare e la disposizione relativa, 286 00:19:31,320 --> 00:19:34,830 un layout lineare dà un po 'più funzionalità 287 00:19:34,830 --> 00:19:38,720 in termini di spazio e di riempimento assicurandosi 288 00:19:38,720 --> 00:19:42,790 Posizioniamo le cose orizzontalmente o verticalmente. 289 00:19:42,790 --> 00:19:46,130 La grande differenza tra un layout lineare e un layout relativo 290 00:19:46,130 --> 00:19:50,250 è il relativo layout di posizioni di tutto rispetto ad altri punti di vista, 291 00:19:50,250 --> 00:19:52,630 e la cosa buona è che ci vuole meno tempo per disegnare 292 00:19:52,630 --> 00:19:56,120 perché il sistema operativo esamina tutto il codice e dice questo va 293 00:19:56,120 --> 00:19:58,270 rispetto a questo qui, qui. 294 00:19:58,270 --> 00:20:03,170 Significa che rende un minor numero di misure di un insieme di schemi lineari annidati, 295 00:20:03,170 --> 00:20:06,840 che avrei dovuto fare se volevo che le cose vadano in verticale qui. 296 00:20:06,840 --> 00:20:10,510 >> Ho già alcune cose che vanno in senso orizzontale, per cui avrei bisogno di un layout lineare diversa 297 00:20:10,510 --> 00:20:14,560 a nidificare in verticale, ma se io stavamo facendo un layout relativo si può dire 298 00:20:14,560 --> 00:20:18,140 tenere questo a sinistra, a destra questa e queste cose sottostanti. 299 00:20:18,140 --> 00:20:21,850 Ma perché voglio loro di riempire questo momento ho intenzione di utilizzare un layout lineare, 300 00:20:21,850 --> 00:20:24,510 e si può vedere che fa già un sacco di queste cose per noi. 301 00:20:24,510 --> 00:20:28,890 Tutte le viste devono avere una proprietà di larghezza e altezza, 302 00:20:28,890 --> 00:20:33,410 e questo succede ad avere un peso di 1, e questo ha un peso di 1 303 00:20:33,410 --> 00:20:36,050 in modo da riempire l'intero spazio. 304 00:20:36,050 --> 00:20:38,460 Ma la larghezza e l'altezza sono più importanti. 305 00:20:38,460 --> 00:20:45,880 Questo campo ID qui non è importante all'interno del layout attuale 306 00:20:45,880 --> 00:20:49,060 a meno che non stiamo usando un layout relativo e dicendo che possiamo fare riferimento 307 00:20:49,060 --> 00:20:52,990 una posizione di visualizzazione in riferimento ad un'altra. 308 00:20:52,990 --> 00:20:56,170 Se avessimo un layout relativo potremmo dire questa posizione al di sotto di questo 309 00:20:56,170 --> 00:20:59,390 o superiore a tale ID, ma questo ID sarà importante 310 00:20:59,390 --> 00:21:01,660 quando stiamo usando nel nostro codice, perché siamo in grado di fare riferimento a 311 00:21:01,660 --> 00:21:05,610 questi singoli vista in questo modo. 312 00:21:05,610 --> 00:21:10,350 >> E poi si può vedere il requestFocus tag, che è qualcosa che probabilmente visto in pset 7. 313 00:21:10,350 --> 00:21:15,370 C'era un tag di messa a fuoco automatica o qualcosa del genere per uno dei campi. 314 00:21:15,370 --> 00:21:22,100 E una cosa, naturalmente, possiamo fare come in HTML, 315 00:21:22,100 --> 00:21:25,660 e avviso una delle cose belle di ADT è che autocompletes qui. 316 00:21:25,660 --> 00:21:29,930 Forse non così bene come ha fatto in XCode, ma lo fa comunque, 317 00:21:29,930 --> 00:21:32,860 e potremmo dire suggerimento e poi dare una sorta di stringa 318 00:21:32,860 --> 00:21:37,070 come scrivere un messaggio, 319 00:21:37,070 --> 00:21:41,300 e se mi danno un attimo, anche notare che ho un piccolo errore qui 320 00:21:41,300 --> 00:21:44,610 dicendo che dovremmo usare una risorsa di tipo stringa per questo, 321 00:21:44,610 --> 00:21:48,820 quindi se ho lasciato fare un po 'di duro lavoro per me 322 00:21:48,820 --> 00:21:57,320 Riesco a scegliere questa stringa, fare rifrattore Android ed estratto di stringa Android. 323 00:21:57,320 --> 00:22:00,570 Posso dargli quel nome, scrivere un messaggio, 324 00:22:00,570 --> 00:22:04,180 e quello che ha fatto oggi è sostituita quella stringa hard-coded 325 00:22:04,180 --> 00:22:07,980 con un riferimento alla stringa nel file. xml della stringa, 326 00:22:07,980 --> 00:22:10,200 il che significa che ora questo è qui. 327 00:22:10,200 --> 00:22:15,560 >> E so che sembra un po 'banale e come lavoro extra, a questo punto, 328 00:22:15,560 --> 00:22:17,840 ma quando si ha un sacco di cose, un sacco di stringhe, 329 00:22:17,840 --> 00:22:20,750 questo è veramente importante, e in particolare per la localizzazione 330 00:22:20,750 --> 00:22:26,920 perché come ho detto prima, Android è un sistema operativo molto utilizzato a livello globale 331 00:22:26,920 --> 00:22:35,950 che si può fare semplicemente i valori-en o valori-sp 332 00:22:35,950 --> 00:22:44,320 o qualcosa di inglese o spagnolo o altre lingue. 333 00:22:44,320 --> 00:22:50,210 E allora probabilmente non avete ancora avuto questa esperienza 334 00:22:50,210 --> 00:22:53,030 dal momento che non abbiamo fatto molto di JavaScript in termini di programmazione web, 335 00:22:53,030 --> 00:22:56,850 ma possiamo anche fare questo campo chiamato onClick del pulsante, 336 00:22:56,850 --> 00:23:02,350 e questo è un modo di riferimento all'interno della nostra struttura 337 00:23:02,350 --> 00:23:06,570 che vogliamo una certa funzione da chiamare nel nostro codice sorgente. 338 00:23:06,570 --> 00:23:09,420 Io vado a chiamare questo sendMessage 339 00:23:09,420 --> 00:23:13,390 e per fare questo lavoro che significa nell'attività principale qui 340 00:23:13,390 --> 00:23:19,180 Dovrò creare una funzione che è pubblico 341 00:23:19,180 --> 00:23:22,250 in modo che possa essere letta dal layout. 342 00:23:22,250 --> 00:23:25,930 E 'vuoto, perché proprio non si vuole che restituisce nulla. 343 00:23:25,930 --> 00:23:37,760 Lo chiameremo sendMessage, e ci vuole una visione, 344 00:23:37,760 --> 00:23:43,690 che è una sorta di contesto che possiamo ancorare questo metodo 345 00:23:43,690 --> 00:23:47,160 a questo punto di vista individuale, quando siamo a corto di esso. 346 00:23:47,160 --> 00:23:50,090 >> E non so se avete notato, beh, non puoi non aver notato, 347 00:23:50,090 --> 00:24:02,370 ma a questo punto proprio qui 348 00:24:02,370 --> 00:24:06,930 questa vista è un tipo che non è ancora stato incluso, 349 00:24:06,930 --> 00:24:10,630 e, naturalmente, tutti voi sapete da CS50 circa non compresi i tipi. 350 00:24:10,630 --> 00:24:13,120 La cosa bella di IDE come Eclipse è che 351 00:24:13,120 --> 00:24:17,520 se si dimentica di includere un tipo che sottolineerà con un po 'rossa ondulata 352 00:24:17,520 --> 00:24:19,680 e poi vi darà la possibilità di importare la vista. 353 00:24:19,680 --> 00:24:23,130 Un modo rapido per farlo è il controllo del cambio O, e sarà importare 354 00:24:23,130 --> 00:24:27,070 tutti i file che è necessario. 355 00:24:27,070 --> 00:24:33,670 Ora che abbiamo questa funzione SendMessage, 356 00:24:33,670 --> 00:24:46,560 che sta per inviare un messaggio dal MainActivity ad una nuova attività, 357 00:24:46,560 --> 00:24:55,230 stiamo andando ad avere per utilizzare l'intenzione di lanciare la nuova attività da questa, 358 00:24:55,230 --> 00:25:02,240 quindi dovremo probabilmente vogliamo creare una costante globale o anche soprattutto un pubblico costante 359 00:25:02,240 --> 00:25:06,240 che ci aiuterà a sapere come stiamo andando fare riferimento alla stringa 360 00:25:06,240 --> 00:25:09,090 perché quando creiamo un intento non stiamo solo chiedendo una nuova attività, 361 00:25:09,090 --> 00:25:11,520 ma possiamo anche dare un fascio di informazioni. 362 00:25:11,520 --> 00:25:14,720 Un bundle è in realtà il termine che utilizza Android, 363 00:25:14,720 --> 00:25:21,470 ed è un modo di dire dare dati in più, che non può essere di un tipo di dati molto sofisticato, 364 00:25:21,470 --> 00:25:24,510 ma possiamo sicuramente includere booleani o stringhe o int. 365 00:25:24,510 --> 00:25:29,750 Questo genere di cose. 366 00:25:29,750 --> 00:25:34,230 >> Sentitevi liberi di chiedere informazioni su qualsiasi di queste qualificazioni qui, 367 00:25:34,230 --> 00:25:36,900 pubblica, finale, statica. 368 00:25:36,900 --> 00:25:38,610 Pubblico è quella importante. 369 00:25:38,610 --> 00:25:47,090 Ciò significa che siamo in grado di accedere a questa variabile da altri file di codice sorgente 370 00:25:47,090 --> 00:25:49,590 come ad esempio quando si crea una nuova attività. 371 00:25:49,590 --> 00:25:52,190 Possiamo riferimento alla stringa all'interno di questo file. 372 00:25:52,190 --> 00:25:57,160 Se è privata, vuol dire che è limitata a questo singolo file qui. 373 00:25:57,160 --> 00:26:02,430 Ma noi chiameremo qualcosa come un messaggio in più. 374 00:26:16,260 --> 00:26:23,300 Ora abbiamo fatto questa funzione, e se si clicca sul pulsante, questa funzione verrà chiamata. 375 00:26:23,300 --> 00:26:27,970 Ma noi non abbiamo fatto niente, ovviamente, con la funzione. 376 00:26:27,970 --> 00:26:33,130 Quello che vogliamo fare ora è creare una nuova attività, 377 00:26:33,130 --> 00:26:35,350 l'attività che verrà effettivamente lanciato. 378 00:26:35,350 --> 00:26:44,330 In Eclipse si può dire nuovo, attività Android, attività vuota. 379 00:26:44,330 --> 00:26:46,530 Siamo in grado di dargli un nome. 380 00:26:46,530 --> 00:26:57,050 Chiamiamolo nostra attività risultato. 381 00:26:57,050 --> 00:27:04,430 E poi questo campo padre gerarchica è un modo per specificare 382 00:27:04,430 --> 00:27:08,180 come le attività sono correlate fra loro. 383 00:27:08,180 --> 00:27:11,020 Perché questo sarà lanciato dal altra attività 384 00:27:11,020 --> 00:27:27,520 dovremmo specificare che ha l'attività principale genitore. 385 00:27:27,520 --> 00:27:31,220 >> E avrei potuto cliccato sul campo successivo lì, che ci avrebbe detto 386 00:27:31,220 --> 00:27:33,830 alcuni campi opzionali che si è anche compreso, 387 00:27:33,830 --> 00:27:38,800 ma la cosa bella di ADT, ancora una volta, è che se ho scorrere qui 388 00:27:38,800 --> 00:27:45,740 nel Manifesto ricordare che tutto questo davvero è stato incluso di default 389 00:27:45,740 --> 00:27:48,930 Quando abbiamo creato il progetto, 390 00:27:48,930 --> 00:27:53,090 e ora perché abbiamo usato questo crea una nuova attività e non solo 391 00:27:53,090 --> 00:27:58,610 aggiungendo il nostro file di classe proprio perché siamo passati attraverso la loro interfaccia grafica per fare questo 392 00:27:58,610 --> 00:28:01,930 già aggiunto tutto questo al Manifesto per noi, 393 00:28:01,930 --> 00:28:06,020 il che significa solo che ora il sistema operativo non si lamenterà 394 00:28:06,020 --> 00:28:09,400 quando cerchiamo di avviare questa attività. 395 00:28:09,400 --> 00:28:14,620 Ed è anche, naturalmente, ha dato una etichetta, che mostra anche in stringhe. 396 00:28:14,620 --> 00:28:17,340 Si fa un sacco di cose sul back-end per noi. 397 00:28:17,340 --> 00:28:20,140 Comunque, ora che abbiamo questa attività risultato pure, 398 00:28:20,140 --> 00:28:23,810 il file di codice sorgente stesso nella cartella di origine, 399 00:28:23,810 --> 00:28:33,540 e si può vedere, toccare brevemente su questo- 400 00:28:33,540 --> 00:28:37,790 perché abbiamo detto che questo genitore gerarchico 401 00:28:37,790 --> 00:28:46,640 ha dato questo campo android.r.ide.home in questo onOption cosa selezionata. 402 00:28:46,640 --> 00:28:49,020 >> Ciò che questo è fondamentalmente dicendo è che c'è un pulsante del menu ora 403 00:28:49,020 --> 00:28:53,110 che in alto a sinistra dello schermo 404 00:28:53,110 --> 00:29:02,220 se torno alla PowerPoint in cui abbiamo prima parlato barra azioni 405 00:29:02,220 --> 00:29:05,380 a causa del genitore gerarchica ora c'è una piccola freccia indietro qui 406 00:29:05,380 --> 00:29:10,610 e questo è cliccabile quindi dovremmo essere in grado di, dopo che abbiamo effettivamente eseguire questa applicazione- 407 00:29:10,610 --> 00:29:15,360 tornare indietro, ed è un modo di salvarci un po 'di codice lì. 408 00:29:26,220 --> 00:29:40,180 Ora, all'interno di questa, beh, sembra essere lamentano che per un momento. 409 00:29:40,180 --> 00:29:43,910 Andiamo a commentare che fuori. 410 00:29:43,910 --> 00:29:48,260 Ora, per interagire in realtà con queste due attività, 411 00:29:48,260 --> 00:29:55,020 dobbiamo creare un intento che comprende tutti questi dati. 412 00:29:55,020 --> 00:29:58,950 In sendMessage ora ho intenzione di crociera attraverso alcuni pezzi di codice 413 00:29:58,950 --> 00:30:00,700 e spiego che come vado. 414 00:30:00,700 --> 00:30:06,280 Un intento, come ho detto, è un modo per avviare una attività da un altro. 415 00:30:06,280 --> 00:30:10,000 Intento è il tipo. Stiamo creando un myIntent variabile. 416 00:30:10,000 --> 00:30:13,980 >> E questo è in realtà un oggetto, è per questo che dobbiamo chiamare di nuovo. 417 00:30:13,980 --> 00:30:18,500 E 'uso comune Java lì, che potrebbe richiedere un po' di tempo per abituarsi. 418 00:30:18,500 --> 00:30:23,900 Questo significa che stiamo utilizzando l'attività o il MainActivity classe, 419 00:30:23,900 --> 00:30:28,630 e l'intenzione in questo modo prende l'attività sta andando da 420 00:30:28,630 --> 00:30:36,060 e l'attività sta andando, che noi chiamiamo ResultActivity, 421 00:30:36,060 --> 00:30:38,170 e che è la sua propria classe. 422 00:30:38,170 --> 00:30:41,720 Includi questo. 423 00:30:41,720 --> 00:30:47,370 E poi come ho detto prima, abbiamo dato l'ID al campo di testo di modifica 424 00:30:47,370 --> 00:30:53,710 e la visualizzazione del testo, per cui al fine di catturare livello di programmazione 425 00:30:53,710 --> 00:31:01,860 il testo che esiste nel EditText 426 00:31:01,860 --> 00:31:06,710 usiamo questa funzione chiamata findViewById, 427 00:31:06,710 --> 00:31:13,660 che è simile a qualcosa che verrà utilizzato quando si cerca di ottenere i campi dal DOM. 428 00:31:13,660 --> 00:31:17,560 Forse David parla di questo a lezione. 429 00:31:17,560 --> 00:31:26,600 Ma è solo un modo di ottenere quelle-per questo abbiamo TAG queste cose con questi campi. 430 00:31:26,600 --> 00:31:31,110 Id.editText1. 431 00:31:31,110 --> 00:31:35,220 E 'già autocompleting per me lì. 432 00:31:35,220 --> 00:31:42,010 >> E poi ci includiamo-presente anche EditText ora che abbiamo il campo 433 00:31:42,010 --> 00:31:47,640 all'interno del nostro programma, tutto quello che ha fatto è stato fondamentalmente findViewById 434 00:31:47,640 --> 00:31:50,870 si potrebbe pensare ad esso come ci danno un riferimento a tale EditText. 435 00:31:50,870 --> 00:31:54,570 Ora vogliamo ottenere la stringa o il messaggio 436 00:31:54,570 --> 00:32:00,670 all'interno di tale EditText che possiamo fare con l'opzione- 437 00:32:00,670 --> 00:32:03,360 si potrebbe pensare di EditText come una struct 438 00:32:03,360 --> 00:32:07,600 noi lo chiamiamo un oggetto in Java con un sacco di diversi metodi 439 00:32:07,600 --> 00:32:10,650 o campi e gli attributi ad esso collegato. 440 00:32:10,650 --> 00:32:15,510 Quando dico EditText. mi dà la possibilità di accedere 441 00:32:15,510 --> 00:32:19,770 un metodo come getText, che otterrà il testo attuale 442 00:32:19,770 --> 00:32:23,990 in che EditText e poi convertire in modo esplicito che 443 00:32:23,990 --> 00:32:26,520 in una stringa, e abbiamo salvato il messaggio. 444 00:32:26,520 --> 00:32:32,730 Ora vogliamo davvero fare qualcosa con l'intento che abbiamo creato a pochi istanti fa. 445 00:32:32,730 --> 00:32:40,250 Io metterò in più come si chiama nel intenti, 446 00:32:40,250 --> 00:32:43,330 che, ancora una volta, come ho detto prima, questo è un modo di creare il bundle 447 00:32:43,330 --> 00:32:45,980 con tutta una serie di dati. 448 00:32:45,980 --> 00:32:50,920 Messaggio Extra è la nostra etichetta così sappiamo di cosa stiamo salvando questo sotto, 449 00:32:50,920 --> 00:32:56,700 e poi sto compreso il messaggio. 450 00:32:56,700 --> 00:33:04,870 >> E allora possiamo effettivamente iniziare l'attività, fornendogli la myIntent parametro. 451 00:33:04,870 --> 00:33:10,630 E questo sarà effettivamente avviare l'attività, in modo da quando ho aggiornato a Windows 8 452 00:33:10,630 --> 00:33:15,870 ci potrebbero essere alcuni errori che compaiono brevemente, ma cercare di ignorarli. 453 00:33:28,010 --> 00:33:30,310 E questo è l'emulatore di Android. 454 00:33:30,310 --> 00:33:33,540 Speriamo che il codice sarà effettivamente pop-up in un momento. 455 00:33:33,540 --> 00:33:36,680 Ancora una volta, ignorando tutte quelle piccole cose. 456 00:33:36,680 --> 00:33:42,290 Ma l'emulatore di Android è possibile emulare qualsiasi versione del sistema operativo 457 00:33:42,290 --> 00:33:45,180 dai primi quelli, Donut, Gingerbread. 458 00:33:45,180 --> 00:33:49,640 Questo è Jelly Bean 4.1. 459 00:33:49,640 --> 00:33:53,150 Ma come si può vedere in questo momento, questo è qualcosa che abbiamo fatto. 460 00:33:53,150 --> 00:33:55,780 Questo ha il MainActivity, il EditText, il pulsante. 461 00:33:55,780 --> 00:34:01,550 Posso scrivere qualcosa qui, ma quello che ci manca, a questo punto? 462 00:34:01,550 --> 00:34:05,190 Abbiamo fatto il campo nella MainActivity che sta per inviare il messaggio 463 00:34:05,190 --> 00:34:08,570 l'altra attività, ma a questo punto 464 00:34:08,570 --> 00:34:12,330 noi non abbiamo fatto niente in altre attività, in modo che non sta andando a ricevere nulla. 465 00:34:12,330 --> 00:34:18,800 Finiamo up che parte prima di passare. 466 00:34:18,800 --> 00:34:25,760 >> Questa attività risultato, quello che dovremo fare è abbiamo bisogno di fare è dovremo- 467 00:34:25,760 --> 00:34:30,070 possiamo anche fare riferimento l'intento in questa attività, 468 00:34:30,070 --> 00:34:33,580 quindi dobbiamo cogliere l'intento, che è davvero semplice. 469 00:34:33,580 --> 00:34:40,780 E 'una funzione inclusa nella classe di attività, 470 00:34:40,780 --> 00:34:47,610 quindi possiamo solo dire "Prendi il messaggio dal intenti". 471 00:34:47,610 --> 00:34:56,260 "Intento myIntent = getIntent." 472 00:34:56,260 --> 00:35:00,030 E questo darà a noi, ora myIntent è un oggetto, 473 00:35:00,030 --> 00:35:05,380 che è un riferimento per l'intento che ci ha portato a questa attività. 474 00:35:05,380 --> 00:35:10,130 MainActivity chiama e dà informazioni in più per provocare attività. 475 00:35:10,130 --> 00:35:14,070 Attività Risultato ora guarda l'intento che ha portato qui, 476 00:35:14,070 --> 00:35:23,540 e siamo in grado di accedere al messaggio che abbiamo creato a l'altro, 477 00:35:23,540 --> 00:35:26,370 getStringExtra, e questo sarà completamento automatico per me. 478 00:35:26,370 --> 00:35:31,190 E poi ricordare, il nostro modo di scovato quel po 'di dati 479 00:35:31,190 --> 00:35:38,400 era dandogli questo campo proprio qui, questa stringa pubblico, 480 00:35:38,400 --> 00:35:42,080 che è il tag per la stringa abbiamo fatto incluse. 481 00:35:42,080 --> 00:35:48,450 >> Se dico MainActivity.Extra_Message 482 00:35:48,450 --> 00:35:52,200 è proprio lì, e questo è un po 'come il nome del parametro 483 00:35:52,200 --> 00:35:55,330 quando siamo passati codice dal controller al modello, 484 00:35:55,330 --> 00:35:57,680 quando dicevamo titolo freccia qualcosa. 485 00:35:57,680 --> 00:36:01,140 E 'lo stesso tipo di idea c'è. 486 00:36:01,140 --> 00:36:07,130 Ora, ricordate questo. 487 00:36:07,130 --> 00:36:12,230 Abbiamo avuto anche questo codice auto creato o generato automaticamente 488 00:36:12,230 --> 00:36:16,410 per l'attività risultato, che comprende la visualizzazione testo in mezzo 489 00:36:16,410 --> 00:36:19,690 che dice ciao mondo. 490 00:36:19,690 --> 00:36:27,510 Potenzialmente Potremmo fare quello più grande. 491 00:36:27,510 --> 00:36:33,980 Facciamolo prima. 492 00:36:33,980 --> 00:36:39,550 Potremmo farlo 40 densità pixel indipendenti. 493 00:36:39,550 --> 00:36:42,670 Vediamo, che è super enorme. Che sarà a posto. 494 00:36:42,670 --> 00:36:48,180 E poi, al fine di fare riferimento a questo testo vista individuale all'interno del nostro codice 495 00:36:48,180 --> 00:36:53,890 abbiamo bisogno di dare un ID, 496 00:36:53,890 --> 00:36:58,350 e per fare questo noi diciamo @ + id, il che significa che assegniamo ID. 497 00:36:58,350 --> 00:37:02,480 Se abbiamo appena detto @ id sarebbe assumere stiamo riferimento a un ID già esistente, 498 00:37:02,480 --> 00:37:07,760 e chiamiamo questo nostro resultTextView. 499 00:37:07,760 --> 00:37:10,570 E notare che in XML non c'è bisogno di un punto e virgola o altro. 500 00:37:10,570 --> 00:37:12,380 Tutto è all'interno di questi tag. 501 00:37:12,380 --> 00:37:15,530 E 'molto simile ad HTML in un sacco di sensi. 502 00:37:15,530 --> 00:37:22,760 >> Ci vuole un po 'di tempo per abituarsi, ma alla fine vi sentirete abbastanza bene con esso. 503 00:37:22,760 --> 00:37:31,320 Cerchiamo di aggiornare il testo per il nostro risultato visualizzazione di testo, 504 00:37:31,320 --> 00:37:35,650 e come abbiamo fatto quando eravamo quel campo di modifica del testo nella nostra altra attività 505 00:37:35,650 --> 00:37:46,630 in MainActivity qui ci sarà anche similmente- 506 00:37:46,630 --> 00:37:54,890 troveremo la visualizzazione tramite ID. 507 00:37:54,890 --> 00:37:59,640 E R, nel caso in cui non ho menzionato prima, è il riferimento per la nostra cartella di risorse, 508 00:37:59,640 --> 00:38:05,350 e poi ID è un riferimento per tutto nella cartella delle risorse, tutti gli ID, 509 00:38:05,350 --> 00:38:10,060 e resultTextView. 510 00:38:10,060 --> 00:38:13,010 E come prima, resultTextView è un oggetto, 511 00:38:13,010 --> 00:38:15,780 che significa che ha tutte queste proprietà associate. 512 00:38:15,780 --> 00:38:20,610 Quando usiamo getText per la modifica del testo in questo campo di testo o la visualizzazione del testo 513 00:38:20,610 --> 00:38:23,980 possiamo effettivamente utilizzare setText, 514 00:38:23,980 --> 00:38:26,960 e poi abbiamo già trovato il messaggio dal intenti, 515 00:38:26,960 --> 00:38:35,760 quindi posso dire che il messaggio, e questo sarà effettivamente impostare il messaggio. 516 00:38:35,760 --> 00:38:41,820 >> Ci vuole un attimo per lanciare, e poi possiamo vedere se non si blocca, 517 00:38:41,820 --> 00:38:48,670 ma domande su questo processo proprio lì, quel tipo di interazione? 518 00:38:48,670 --> 00:38:51,490 In molti modi è semplice. 519 00:38:51,490 --> 00:38:53,960 La ragione per cui sto passando qualcosa di relativamente semplice 520 00:38:53,960 --> 00:38:57,330 è, di nuovo, perché si arriva a vedere l'interazione tra il layout, 521 00:38:57,330 --> 00:38:59,520 il codice sorgente, come si cose di riferimento 522 00:38:59,520 --> 00:39:07,680 e magari avere un po 'l'esposizione a come Java lavora lì. 523 00:39:07,680 --> 00:39:16,500 Se io in realtà digito qualcosa qui, come ohai, e poi clicco sul pulsante, 524 00:39:16,500 --> 00:39:22,260 lancia una nuova attività, e che vista testo dice ohai. 525 00:39:22,260 --> 00:39:27,640 Questo è molto semplice, ma spero che dopo che l'esempio 526 00:39:27,640 --> 00:39:32,310 si ordina di vedere come funziona questa interazione, e ora che pasticcio di file 527 00:39:32,310 --> 00:39:36,870 sul lato sinistro per tutte le cartelle di progetto, si spera si sa dove guardare ora. 528 00:39:36,870 --> 00:39:38,700 Questa è la vostra zona di codice sorgente. 529 00:39:38,700 --> 00:39:41,760 >> Layout è davvero l'unica cosa che dovrete affrontare fino ad includere immagini 530 00:39:41,760 --> 00:39:46,370 e le drawable o qualsiasi altra cosa, e valori, che includeranno le stringhe, 531 00:39:46,370 --> 00:39:51,960 come abbiamo detto, e quindi gli stili è qualcosa che è un po 'come i CSS. 532 00:39:51,960 --> 00:39:56,410 Affrontare quando si vuole, ma fino a quando ti trovi bene con l'aggiunta di un tocco in più 533 00:39:56,410 --> 00:40:02,520 alla vostra applicazione non c'è bisogno di preoccuparsi troppo. 534 00:40:02,520 --> 00:40:07,410 Giusto per concludere un altra cosa che sarà sicuramente da includere- 535 00:40:07,410 --> 00:40:13,010 supponendo che si desidera integrare funzioni interessanti e risparmiare qualche extra di codifica- 536 00:40:13,010 --> 00:40:16,460 sarebbe quella di includere librerie di terze parti. 537 00:40:16,460 --> 00:40:19,840 Ecco il piccolo ragazzo Android con il cappello di Sherlock Holmes. 538 00:40:19,840 --> 00:40:23,040 Questa è un'azione bar biblioteca Sherlock, 539 00:40:23,040 --> 00:40:25,390 che sostanzialmente significa che barra azioni che avete visto in precedenza, 540 00:40:25,390 --> 00:40:29,590 che è ora di serie in Ice Cream Sandwich e Jelly Bean, 541 00:40:29,590 --> 00:40:33,100 Se si desidera portare quel tipo di esperienza utente per gli utenti di versioni precedenti 542 00:40:33,100 --> 00:40:39,290 e salvare se stessi da preoccuparsi di come l'utente sta per navigare 543 00:40:39,290 --> 00:40:42,490 su versioni precedenti, quando quella cosa non è lì è possibile includere questa biblioteca 544 00:40:42,490 --> 00:40:46,770 e poi devi solo riferimento, piuttosto che il default di Android 545 00:40:46,770 --> 00:40:50,250 librerie per la barra delle azioni, si fa riferimento a questa libreria di supporto. 546 00:40:50,250 --> 00:40:53,090 >> Cose come Scoreloop, è fantastico se avete intenzione di includere un gioco. 547 00:40:53,090 --> 00:40:57,280 Esso consente di aggiungere le classifiche ei risultati di giochi. 548 00:40:57,280 --> 00:41:00,900 AdMob è un modo di mettere gli annunci nelle vostre applicazioni 549 00:41:00,900 --> 00:41:02,900 nel caso in cui si vuole fare un po 'di soldi fuori di esso. 550 00:41:02,900 --> 00:41:05,730 Naturalmente, non vi è Facebook e Twitter per integrare lì 551 00:41:05,730 --> 00:41:08,170 Se si desidera condividere facilmente le cose, et cetera. 552 00:41:08,170 --> 00:41:15,120 Dropbox, allo stesso modo, e Google Analytics è che guardando un grafico lì. 553 00:41:15,120 --> 00:41:19,070 Questo sarà molto importante se si vuole realmente vedere che interagisce 554 00:41:19,070 --> 00:41:25,800 con la tua applicazione o chi è, come interagiscono, et cetera. 555 00:41:25,800 --> 00:41:30,650 Google, per impostazione predefinita, si racconta un sacco di statistiche su chi ha installato la tua app 556 00:41:30,650 --> 00:41:35,020 e ciò che i telefoni che hanno, quello versioni del sistema operativo hanno. 557 00:41:35,020 --> 00:41:38,080 Ma se volete vedere chi lo sta usando su una base quotidiana e come lo usano 558 00:41:38,080 --> 00:41:42,860 allora ti consigliamo di includere una sorta di sistema di monitoraggio del genere. 559 00:41:42,860 --> 00:41:44,990 >> Quando si è pronti a distribuire la vostra applicazione 560 00:41:44,990 --> 00:41:46,930 Non ho bisogno di andare in quella in troppa profondità. 561 00:41:46,930 --> 00:41:49,090 Clicca sul link qui, Google Play. 562 00:41:49,090 --> 00:41:51,080 Ha usato essere il mercato Android. 563 00:41:51,080 --> 00:41:53,470 Essi rimarchiati tutto con Google Play, 564 00:41:53,470 --> 00:41:55,230 così ora si presenta a questo. 565 00:41:55,230 --> 00:41:57,140 E 'molto semplice. 566 00:41:57,140 --> 00:42:01,070 È necessario includere una descrizione, alcuni screenshot. 567 00:42:01,070 --> 00:42:05,660 Come ho detto, non c'è alcun processo di approvazione come iOS. 568 00:42:05,660 --> 00:42:07,270 E dove andare da qui? 569 00:42:07,270 --> 00:42:09,450 Vi ho mostrato un esempio molto semplice. 570 00:42:09,450 --> 00:42:13,270 Speriamo che se sembra terribilmente semplice 571 00:42:13,270 --> 00:42:15,740 allora questo è probabilmente un buon segno. 572 00:42:15,740 --> 00:42:20,080 Se affatto sentito un po 'confuso o incerto su ciò che stavo scrivendo 573 00:42:20,080 --> 00:42:26,160 questo è anche bene, ma da qui vai alla guide di Google. 574 00:42:26,160 --> 00:42:28,330 Questo è un ottimo posto per iniziare. 575 00:42:28,330 --> 00:42:31,460 Sarà parlare attraverso ciò che si aspetta in termini di progettazione di applicazioni, 576 00:42:31,460 --> 00:42:33,380 come gli utenti normalmente interagiscono con esso. 577 00:42:33,380 --> 00:42:36,450 E 'molto più in forma libera di iOS, direi, 578 00:42:36,450 --> 00:42:41,330 che sembra vista del tavolo sono-io non lo so, questo è il loro pane e burro. 579 00:42:41,330 --> 00:42:44,690 Tutto è una visione tavolo scorrevole su e giù. 580 00:42:44,690 --> 00:42:48,160 Con Android che sicuramente incoraggiare le persone a guardare la cosa da 581 00:42:48,160 --> 00:42:51,720 tutta una serie di prospettive diverse. 582 00:42:51,720 --> 00:42:56,000 >> Quando si include il kit di sviluppo software di questo ADT 583 00:42:56,000 --> 00:43:03,010 Per impostazione predefinita, si dispone di un insieme di progetti di esempio in Android. 584 00:43:03,010 --> 00:43:05,470 Proprio qui, Android, Android progetto di esempio. 585 00:43:05,470 --> 00:43:11,870 Se clicco su questo, allora posso scegliere una versione per il quale il campione valgono progetti. 586 00:43:11,870 --> 00:43:13,300 C'è un sacco di cose diverse qui. 587 00:43:13,300 --> 00:43:16,690 Si inizia con la compatibilità barra di azione, 588 00:43:16,690 --> 00:43:24,610 giochi accelerometro, backup e ripristino, Bluetooth, costruttore gesto. 589 00:43:24,610 --> 00:43:28,930 Jetboy è un esempio di gioco che ti danno, come è LunarLander. 590 00:43:28,930 --> 00:43:31,250 Ci sono un sacco di applicazioni di esempio qui, 591 00:43:31,250 --> 00:43:35,290 e sono tutti destinati a diversi aspetti delle API di Android, 592 00:43:35,290 --> 00:43:41,520 e l'idea è che, come fate la vostra applicazione 593 00:43:41,520 --> 00:43:44,110 non hai bisogno di imparare tutto su Android per fare un app Android. 594 00:43:44,110 --> 00:43:47,300 Devi solo conoscere le parti che si sta effettivamente andando a utilizzare. 595 00:43:47,300 --> 00:43:49,340 Guardate queste librerie di campioni. 596 00:43:49,340 --> 00:43:51,510 Sentitevi liberi di copiare e incollare il codice e riapplicarlo. 597 00:43:51,510 --> 00:43:53,850 E 'una grande cosa per guardare il codice più difficile 598 00:43:53,850 --> 00:43:57,060 e cercare di capire, il che è ovviamente per questo che in CS50 599 00:43:57,060 --> 00:44:01,510 spesso vi diamo grandi quantità di codice sorgente. 600 00:44:01,510 --> 00:44:04,620 Guardate alcuni di questi, se avete intenzione di utilizzare le librerie simili 601 00:44:04,620 --> 00:44:08,630 e poi applicarlo al proprio codice. 602 00:44:08,630 --> 00:44:10,430 E, naturalmente, ci sono tutorial. 603 00:44:10,430 --> 00:44:12,690 Cerca esercitazioni. 604 00:44:12,690 --> 00:44:17,020 Ho trovato un sacco di buoni on-line che può portare fino a velocità 605 00:44:17,020 --> 00:44:20,080 con quello che frammenti veramente sono e come si possono usare. 606 00:44:20,080 --> 00:44:22,240 >> Alcune di queste nuove cose di design, come frammenti, 607 00:44:22,240 --> 00:44:26,840 davvero non c'è bisogno di essere preoccupati se non stai facendo un 608 00:44:26,840 --> 00:44:30,560 abbastanza grande nel progetto di portata. 609 00:44:30,560 --> 00:44:32,510 Sono cose che Google sta cercando di eliminare gradualmente dentro 610 00:44:32,510 --> 00:44:35,570 StackOverflow è, naturalmente, il vostro amico. 611 00:44:35,570 --> 00:44:37,930 Speriamo che ti ho venduto un po 'su Android, 612 00:44:37,930 --> 00:44:41,640 rendendosi conto che è molto più facile da affrontare in termini di solo il linguaggio di codifica. 613 00:44:41,640 --> 00:44:45,970 Java è direi molto più facile da capire di Objective-C. 614 00:44:45,970 --> 00:44:50,780 Android sta crescendo credo molto di più di iOS. 615 00:44:50,780 --> 00:44:54,890 Voglio dire, i dati sono lì, a parte quello che penso. 616 00:44:54,890 --> 00:44:56,920 Sta andando in giro per un po ', 617 00:44:56,920 --> 00:45:00,880 e sono a pochi anni indietro in termini di loro cicli di progettazione, 618 00:45:00,880 --> 00:45:04,690 quindi è una sorta di comprensibile che stanno ancora lavorando attraverso alcuni di questi 619 00:45:04,690 --> 00:45:09,080 questioni di coerenza, come questo barra di azione è una cosa nuova per loro ancora, 620 00:45:09,080 --> 00:45:16,010 sorta di creazione simile esperienza utente in tutte le loro applicazioni. 621 00:45:16,010 --> 00:45:20,650 Speriamo che si può andare avanti ora e di aprire Eclipse 622 00:45:20,650 --> 00:45:22,870 e fare le vostre proprie applicazioni Android. 623 00:45:22,870 --> 00:45:30,240 >> Qualcuno ha delle domande prima di concludere qualsiasi cosa? 624 00:45:30,240 --> 00:45:34,410 Vi posso dire che la risposta è 42. 625 00:45:34,410 --> 00:45:41,990 Bene, felice di codifica a tutti, e buona fortuna. 626 00:45:41,990 --> 00:45:44,990 [CS50.TV]