1 00:00:00,000 --> 00:00:02,610 [Powered by Google Translate] [Seminário] [Apps Android (agora com jujubas!)] 2 00:00:02,610 --> 00:00:04,210 [Jordan Jozwiak] [Harvard University] 3 00:00:04,210 --> 00:00:06,780 [Isto é CS50.] [CS50.TV] 4 00:00:06,780 --> 00:00:11,600 >> Olá a todos, e bem vindo ao Apps Android (agora com jujubas!) Seminário. 5 00:00:11,600 --> 00:00:14,530 Chama-se agora com Jelly Beans, é claro, porque 6 00:00:14,530 --> 00:00:17,310 a mais recente versão do sistema operacional é chamado Jelly Bean. 7 00:00:17,310 --> 00:00:22,950 Quando eu falei sobre Android no ano passado e fez isso, basicamente, mesmo seminário 8 00:00:22,950 --> 00:00:29,150 Eu estava apresentando os padrões de design e escolhas estilísticas para Gingerbread, 9 00:00:29,150 --> 00:00:31,250 apesar de Ice Cream Sandwich tinha saído na época, 10 00:00:31,250 --> 00:00:33,680 e isso é algo que nós vamos falar sobre ir para a frente um pouco. 11 00:00:33,680 --> 00:00:35,720 Android, é claro, tem alguns problemas com a fragmentação, 12 00:00:35,720 --> 00:00:40,240 para o mais recente sistema operacional do Google é normalmente 13 00:00:40,240 --> 00:00:44,710 realmente não vai se tornar comum entre os usuários para potencialmente até um ano, infelizmente. 14 00:00:44,710 --> 00:00:49,960 >> Mas desconsiderando isso, vamos falar sobre muitas razões pelas quais 15 00:00:49,960 --> 00:00:53,000 Android é muito melhor do que o iOS. 16 00:00:53,000 --> 00:00:56,410 Ok, vamos falar sobre Android vs iOS, 17 00:00:56,410 --> 00:00:59,770 alguns paradigmas de design, como você vai se configurar em apenas um slide, 18 00:00:59,770 --> 00:01:03,410 ea grande diferença entre este eo ano passado é que eu só quero 19 00:01:03,410 --> 00:01:06,860 zoom através de algumas coisas conceituais que trabalham com 20 00:01:06,860 --> 00:01:09,950 o sistema operacional e, em seguida, entrar em um exemplo muito básico. 21 00:01:09,950 --> 00:01:13,730 Na verdade, apenas o exemplo que o Google descreve para a construção de seu primeiro aplicativo, 22 00:01:13,730 --> 00:01:17,070 e nós vamos passar por isso juntos e apenas descrever. 23 00:01:17,070 --> 00:01:22,100 >> Eu sei que muitos de vocês têm apenas codificado em C, para Java já vai ser 24 00:01:22,100 --> 00:01:27,220 uma perspectiva diferente, e desta forma você vai obter seus pés molhados 25 00:01:27,220 --> 00:01:31,540 e se sentir um pouco mais confortável com ele, esperançoso. 26 00:01:31,540 --> 00:01:35,330 Um resumo rápido, Android vs iOS. 27 00:01:35,330 --> 00:01:39,200 No Android não há essa taxa desenvolvedor único de US $ 25, 28 00:01:39,200 --> 00:01:42,390 nada dessa coisa de $ 100 por ano. 29 00:01:42,390 --> 00:01:45,440 Não há restrições, o que significa que se eu quiser enviar um aplicativo, 30 00:01:45,440 --> 00:01:51,560 Acabei de enviá-lo, e não há nenhum processo de aprovação como existe para iOS. 31 00:01:51,560 --> 00:01:53,890 Você começa a se desenvolver com Java usando Eclipse, 32 00:01:53,890 --> 00:01:57,090 que é multiplataforma, por isso não importa se você tem um Mac, 33 00:01:57,090 --> 00:01:59,600 Windows ou uma máquina Linux. 34 00:01:59,600 --> 00:02:03,730 Claro que, com iOS você tem que usar o Xcode em um Mac, 35 00:02:03,730 --> 00:02:06,930 e Android é usado por muitas mais pessoas, 36 00:02:06,930 --> 00:02:11,580 por isso, se você quiser que seu aplicativo para ter algum tipo de visibilidade, ou talvez 37 00:02:11,580 --> 00:02:14,110 fazer um pouco de dinheiro a partir de anúncios 38 00:02:14,110 --> 00:02:17,450 você é provavelmente mais susceptíveis de beneficiar de Android. 39 00:02:17,450 --> 00:02:20,630 >> E uma coisa que sempre foi conhecido sobre Android 40 00:02:20,630 --> 00:02:25,100 é a quantidade extrema de personalização, enquanto o iOS é muito fixo em seus caminhos 41 00:02:25,100 --> 00:02:29,380 para que eles possam manter a segurança eo controle sobre todos os aspectos pouco 42 00:02:29,380 --> 00:02:34,180 do projeto dentro de seu sistema operacional e os aplicativos individuais. 43 00:02:34,180 --> 00:02:40,180 Android é a forma muito livre, e não há tantas possibilidades mais. 44 00:02:40,180 --> 00:02:42,530 Ok, alguns paradigmas de projeto. 45 00:02:42,530 --> 00:02:49,600 Observe aqui como iOS tem tablets e iPhones e iPod Touches 46 00:02:49,600 --> 00:02:53,840 eles têm de suportar, por exemplo, como uma dúzia de dispositivos, se você quiser apoiar 47 00:02:53,840 --> 00:02:55,450 coisas históricas também. 48 00:02:55,450 --> 00:02:58,410 Com o Android você tem que suportar centenas de dispositivos, 49 00:02:58,410 --> 00:03:01,240 por isso há algumas coisas que o Google vem tentando implementar 50 00:03:01,240 --> 00:03:04,970 para fazer o usuário experimentar um pouco mais consistente, 51 00:03:04,970 --> 00:03:08,560 mas nós também vamos falar sobre como isso significa que há questões de fragmentação 52 00:03:08,560 --> 00:03:11,700 que você sempre tem que estar ciente de apoio. 53 00:03:11,700 --> 00:03:16,140 Fragmentação significa que existem muitos sistemas operativos diferentes, 54 00:03:16,140 --> 00:03:20,330 muitos telefones diferentes com hardware diferente rodando Android, tudo ao mesmo tempo, 55 00:03:20,330 --> 00:03:29,680 de modo que este gráfico aqui remonta há cerca de 6 meses. 56 00:03:29,680 --> 00:03:36,460 Sim, 6 meses, e você pode ver como a banda mais escura 57 00:03:36,460 --> 00:03:39,330 no fundo é Jelly Bean, que saiu durante o verão, 58 00:03:39,330 --> 00:03:42,970 e você pode ver agora, provavelmente, cerca de 2% dos telefones tê-lo. 59 00:03:42,970 --> 00:03:45,520 >> Ice Cream Sandwich foi lançado mais de um ano atrás, 60 00:03:45,520 --> 00:03:47,770 e um quarto dos telefones tê-lo. 61 00:03:47,770 --> 00:03:53,910 Há ainda uma grande quantidade de telefones que estão usando a versão do SO de anos atrás. 62 00:03:53,910 --> 00:03:57,820 Uma coisa que o Google tem tentado fazer para tornar a experiência do usuário 63 00:03:57,820 --> 00:04:01,400 muito mais consistente entre aplicativos está começando com Honeycomb, 64 00:04:01,400 --> 00:04:04,320 que é a versão tablet, então Ice Cream Sandwich e Jelly Bean, 65 00:04:04,320 --> 00:04:06,750 eles estão realmente tentando enfatizar o uso desta barra de ação, 66 00:04:06,750 --> 00:04:10,430 que é o que você pode ver aqui em cima, 67 00:04:10,430 --> 00:04:14,730 tudo aqui, incluindo este botão configurações pouco. 68 00:04:14,730 --> 00:04:16,079 É a escolha de design. 69 00:04:16,079 --> 00:04:18,000 Agora, sempre que você vê os três pontos significa clicar neste, 70 00:04:18,000 --> 00:04:21,880 e haverá um menu drop-down, que tem algum tipo de configurações. 71 00:04:21,880 --> 00:04:28,900 Isso só aparece porque eu cliquei no botão. 72 00:04:28,900 --> 00:04:32,040 Isso é algo que eles estão tentando usar para fazer aplicações um pouco mais consistente 73 00:04:32,040 --> 00:04:39,210 através da placa e assim o usuário tem um melhor senso de experiência uniforme. 74 00:04:39,210 --> 00:04:42,640 >> Ok, então no caso de você não ter feito isso já, ou se você está assistindo em casa 75 00:04:42,640 --> 00:04:50,210 então você pode seguir estes passos para configurar o ambiente de codificação. 76 00:04:50,210 --> 00:04:52,630 Vai envolver indo para o site aqui. 77 00:04:52,630 --> 00:04:56,260 Você pode instalar o Google Android SDK 78 00:04:56,260 --> 00:04:59,130 e seguir algumas descrições lá. 79 00:04:59,130 --> 00:05:01,310 Dizem-lhe tudo. 80 00:05:01,310 --> 00:05:05,160 Eles têm de instalar o SDK, download de Eclipse versão Classic, 81 00:05:05,160 --> 00:05:07,450 embora, é claro, que está programando em Java. 82 00:05:07,450 --> 00:05:12,190 Eles recomendam um presente, e então este ADT, as ferramentas de desenvolvimento do Android, 83 00:05:12,190 --> 00:05:17,300 é um plugin que você instala em Eclipse que permite 84 00:05:17,300 --> 00:05:20,550 ter uma experiência muito mais simples com o Android dentro do Eclipse. 85 00:05:20,550 --> 00:05:24,070 Ele vai lhe dar algumas interfaces gráficas de usuário 86 00:05:24,070 --> 00:05:29,610 para projetar os pontos de vista, e ele vai te dar muito mais apoio 87 00:05:29,610 --> 00:05:34,840 ea capacidade de lançar com o emulador e todo esse tipo de coisa. 88 00:05:34,840 --> 00:05:36,090 Framework de aplicação. 89 00:05:36,090 --> 00:05:41,590 >> Eu quero falar sobre como os projetos dentro de Android são estruturados, 90 00:05:41,590 --> 00:05:44,830 e depois vamos entrar em um exemplo rápido, e espero que 91 00:05:44,830 --> 00:05:48,820 você pode fazer perguntas a qualquer momento e se sentir confortável até o final da mesma. 92 00:05:48,820 --> 00:05:50,090 Temos algum jargão primeiro. 93 00:05:50,090 --> 00:05:55,330 Uma atividade é como a tela que você vê quando você iniciar um aplicativo. 94 00:05:55,330 --> 00:05:57,840 Toda a experiência é a atividade em si, 95 00:05:57,840 --> 00:06:00,790 assim que você poderia pensar nisso como uma tela ou um ponto de vista, 96 00:06:00,790 --> 00:06:04,540 mas na verdade é lado dele o código-fonte. 97 00:06:04,540 --> 00:06:12,680 Nós ainda chamar a parte de interface real do que um ponto de vista. 98 00:06:12,680 --> 00:06:17,230 É uma espécie de como como em pset 7 tivemos o controlador e, em seguida, a vista. 99 00:06:17,230 --> 00:06:20,690 A actividade é mais ou menos o controlador 100 00:06:20,690 --> 00:06:23,360 ea vista é o que estamos fazendo em termos de XML 101 00:06:23,360 --> 00:06:25,260 que está associada com a referida actividade. 102 00:06:25,260 --> 00:06:29,340 Fragmentos são algo que é implementado em Ice Cream Sandwich vai para a frente. 103 00:06:29,340 --> 00:06:36,380 É apenas uma idéia de tomar partes da vista ou a atividade 104 00:06:36,380 --> 00:06:39,990 e dividindo-os em áreas separadas, para que possamos 105 00:06:39,990 --> 00:06:45,030 tornar o código mais útil para estes muitos dispositivos diferentes 106 00:06:45,030 --> 00:06:51,890 que temos de apoiar, e é apenas uma forma de tentar 107 00:06:51,890 --> 00:06:54,290 também o fator mais código. 108 00:06:54,290 --> 00:07:01,090 Serviços são coisas de fundo como a reprodução de música ou direções de navegação potencialmente. 109 00:07:01,090 --> 00:07:05,640 Os provedores de conteúdo, estes são APIs dentro do sistema operacional 110 00:07:05,640 --> 00:07:09,070 que permitem acessar dados compartilhados, tais como informações de contato, 111 00:07:09,070 --> 00:07:12,790 e, em seguida, a intenção é algo que vai usar quando queremos lançar 112 00:07:12,790 --> 00:07:17,210 uma nova atividade de nossa atividade atual. 113 00:07:17,210 --> 00:07:20,980 >> Olá Android, este vai ser um projecto que vamos falar. 114 00:07:20,980 --> 00:07:25,410 Eu vou realmente fazer isso por você, e então nós vamos fazer uma coisa em que clicar em um botão 115 00:07:25,410 --> 00:07:27,650 com algum texto e iniciar uma nova atividade. 116 00:07:27,650 --> 00:07:30,110 Muito simples, mas eu quero passar 117 00:07:30,110 --> 00:07:34,480 que vai entrar em um projeto como este. 118 00:07:34,480 --> 00:07:39,260 Quando você faz o novo projeto você verá dentro de Eclipse 119 00:07:39,260 --> 00:07:41,900 há este projeto chamado Olá Android. 120 00:07:41,900 --> 00:07:43,470 Depois, há um monte de pastas aqui. 121 00:07:43,470 --> 00:07:46,760 O que você está realmente preocupado com são a pasta de origem, 122 00:07:46,760 --> 00:07:54,540 a pasta de recursos, os res, e em certa medida a pasta libs para as bibliotecas. 123 00:07:54,540 --> 00:08:00,070 E só por isso estamos na mesma página com o 124 00:08:00,070 --> 00:08:03,240 Se você fosse criar um novo projeto, 125 00:08:03,240 --> 00:08:08,270 você pode fazer isso aqui, então se eu quiser chamá-lo HelloAndroid, 126 00:08:08,270 --> 00:08:11,100 e, em seguida, ele automaticamente faz um monte de informações para nós. 127 00:08:11,100 --> 00:08:14,110 O nome do pacote é suposto ser um identificador único 128 00:08:14,110 --> 00:08:16,710 que normalmente seria associado com o site, se você tivesse um. 129 00:08:16,710 --> 00:08:24,430 >> Por exemplo, eu vou chamar este net.cs50.helloandroid. 130 00:08:24,430 --> 00:08:30,070 E eu já fiz esse projeto uma vez. 131 00:08:30,070 --> 00:08:40,059 Ok, me desculpe. Vamos chamá-lo HelloCS50. 132 00:08:40,059 --> 00:08:42,929 E então ele vai perguntar coisas como o tipo de ícone que queremos fazer. 133 00:08:42,929 --> 00:08:48,840 Isso tudo é por causa da interface do Android Developer Tools, 134 00:08:48,840 --> 00:08:53,350 o plugin que nós adicionamos a Eclipse, para que possamos escolher coisas como 135 00:08:53,350 --> 00:08:58,320 o ícone que queremos, e que entraria em que profundidade se quisermos. 136 00:08:58,320 --> 00:09:04,360 Mas no final, basta fazer o projeto, 137 00:09:04,360 --> 00:09:07,040 e tudo o que aparece aqui. 138 00:09:07,040 --> 00:09:10,030 Como mostrei na outra tela, 139 00:09:10,030 --> 00:09:14,070 temos a pasta de origem, e eu vou falar sobre o que tudo isso significa que em breve, 140 00:09:14,070 --> 00:09:19,090 mas você pode ver que imediatamente nos leva para a tela HelloCS50. 141 00:09:19,090 --> 00:09:24,690 Existem alguns botões mais aqui para adicionar texto e texto layouts de campo. 142 00:09:24,690 --> 00:09:28,910 É uma espécie de como XCode, mas infelizmente não é tão aerodinâmico. 143 00:09:28,910 --> 00:09:37,790 Mas os clipes será seu amigo e ADT em particular para fazer isso. 144 00:09:37,790 --> 00:09:40,920 >> Ok, a pasta de origem é o local onde 145 00:09:40,920 --> 00:09:43,820 os arquivos Java são realizadas, e isso é realmente o lançamento do seu programa. 146 00:09:43,820 --> 00:09:45,990 É basicamente como os controladores. 147 00:09:45,990 --> 00:09:49,020 A pasta de recursos ou a res é o lugar onde nós vamos manter layouts de tela, 148 00:09:49,020 --> 00:09:54,110 imagens, sons, texto, animação e tudo mais, libs, obviamente, bibliotecas. 149 00:09:54,110 --> 00:10:01,700 E o manifesto, é a maneira que o sistema Android sabe 150 00:10:01,700 --> 00:10:03,130 como interagir com seu aplicativo. 151 00:10:03,130 --> 00:10:07,980 Diz ele sobre permissões e quais atividades serão realmente executados. 152 00:10:07,980 --> 00:10:12,350 É toda a informação essencial que é necessário para executar o aplicativo. 153 00:10:12,350 --> 00:10:17,990 A pasta de origem é-se expandi-lo como você pode ver aqui. 154 00:10:17,990 --> 00:10:23,920 E um exemplo de que um código ficaria, este é o código padrão. 155 00:10:23,920 --> 00:10:27,930 Como nós o chamamos, MainActivity. 156 00:10:27,930 --> 00:10:33,230 Por padrão, temos onCreate, que é uma função que é chamada quando as cargas esta atividade, 157 00:10:33,230 --> 00:10:37,150 assim que você quer chamar onCreate (savedInstanceState). 158 00:10:37,150 --> 00:10:40,440 Isso irá restaurar os bits de informação 159 00:10:40,440 --> 00:10:44,910 no caso de o aplicativo foi interrompida. 160 00:10:44,910 --> 00:10:48,790 >> Há uma atividade gráfico ciclo de vida que você pode olhar para 161 00:10:48,790 --> 00:10:50,380 quando você começa um pouco mais em profundidade nele, 162 00:10:50,380 --> 00:10:56,210 mas o mais importante linha de código existe esta função setContentView 163 00:10:56,210 --> 00:11:00,290 que irá carregar o arquivo de recurso para o layout. 164 00:11:00,290 --> 00:11:03,590 Então, o que onCreate aqui é basicamente fazer é que está dizendo 165 00:11:03,590 --> 00:11:07,010 quando eu criar essa atividade eu quero carregar esse layout. 166 00:11:07,010 --> 00:11:12,030 E vamos falar sobre o que esse layout é em um segundo. 167 00:11:12,030 --> 00:11:16,230 Se tivéssemos que lançar isso aqui parece exatamente como este, 168 00:11:16,230 --> 00:11:22,880 e, por padrão, porque temos o Eclipse ADT fazendo isso e fazê-lo por nós 169 00:11:22,880 --> 00:11:28,210 isso é tudo código clichê que é criado por nós, 170 00:11:28,210 --> 00:11:34,630 e podemos seguir em frente e mudar as coisas que nós gostamos. 171 00:11:34,630 --> 00:11:38,190 A pasta de recursos, como eu disse, este é o lugar onde temos todos os layouts, 172 00:11:38,190 --> 00:11:41,150 drawables em termos de qualquer tipo de imagens- 173 00:11:41,150 --> 00:11:46,360 eles são chamados Drawables-e, em seguida, arquivos de som, menus. 174 00:11:46,360 --> 00:11:51,170 É uma maneira de um monte de XML em um bom fashion classificados. 175 00:11:51,170 --> 00:11:58,030 Como você pode ver, existem. Hdpi, LDPI, MDPI e pastas xhdpi para os drawables. 176 00:11:58,030 --> 00:12:02,220 Estes são diferentes densidades de tela, tão alta densidade de pixels por polegada, 177 00:12:02,220 --> 00:12:05,710 baixa densidade, de média densidade, densidade muito alta. 178 00:12:05,710 --> 00:12:08,900 >> Isto é, uma vez mais, para que possamos suportar todos esses diferentes dispositivos, 179 00:12:08,900 --> 00:12:15,100 e, idealmente, você terá imagens diferentes para cada resolução diferente. 180 00:12:15,100 --> 00:12:20,740 Layouts são onde se incluem todos os diferentes layouts que serão usados ​​em atividades diferentes. 181 00:12:20,740 --> 00:12:24,150 Eles também poderiam incluir layouts para fragmentos, 182 00:12:24,150 --> 00:12:26,670 o que significa, basicamente, atividades parciais. 183 00:12:26,670 --> 00:12:29,610 Se você quer fazer algo legal como sempre que você gira o telefone 184 00:12:29,610 --> 00:12:33,900 você quer ter um layout diferente, você pode fazer layout paisagem como uma pasta diferente, 185 00:12:33,900 --> 00:12:39,000 Android e automaticamente tem um monte dessas regras dentro da pasta de recursos, 186 00:12:39,000 --> 00:12:44,690 assim ele vai saber de olhar para pastas diferentes com base na configuração atual do telefone, 187 00:12:44,690 --> 00:12:46,740 que tipo de hardware que você está usando. 188 00:12:46,740 --> 00:12:52,350 Da mesma forma, este valores v11 aqui e os valores-v14 189 00:12:52,350 --> 00:12:55,460 e os valores padrão esta pasta é para- 190 00:12:55,460 --> 00:13:01,730 assim, os valores de, por si só, este será os valores padrão em todas as versões do sistema operativo. 191 00:13:01,730 --> 00:13:06,390 Por outro lado, e v11 v14 corresponder com Honeycomb 192 00:13:06,390 --> 00:13:08,780 e Ice Cream Sandwich, respectivamente. 193 00:13:08,780 --> 00:13:12,800 Novamente, essas são formas que, dentro dessas pastas são diferentes cadeias 194 00:13:12,800 --> 00:13:17,550 e estilos, para que você possa personalizar a aparência do seu aplicativo 195 00:13:17,550 --> 00:13:22,660 ou potencialmente, até mesmo a sua funcionalidade, apesar de que, provavelmente, seria uma má idéia, 196 00:13:22,660 --> 00:13:25,890 dependendo da versão do sistema operativo. 197 00:13:25,890 --> 00:13:28,760 >> E eu conversamos sobre tudo isso aqui. 198 00:13:28,760 --> 00:13:35,870 Novamente, resgatáveis, matérias, layout, valores. 199 00:13:35,870 --> 00:13:41,380 Os padrões, se entrarmos em Olá Android ou Olá CS50 agora 200 00:13:41,380 --> 00:13:43,310 vai ficar assim. 201 00:13:43,310 --> 00:13:45,800 Ele vai dizer Olá mundo. 202 00:13:45,800 --> 00:13:58,430 Como você pode ver aqui com o texto Android 203 00:13:58,430 --> 00:14:04,420 o texto para este ponto de vista do texto, que é, basicamente, apenas um rótulo, 204 00:14:04,420 --> 00:14:06,900 é o que nós chamamos no iOS. 205 00:14:06,900 --> 00:14:11,580 Ele tem essa notação engraçado @ string / hello_world. 206 00:14:11,580 --> 00:14:16,200 Isto é assim que pudermos, vamos tentar extrair todas as cordas, 207 00:14:16,200 --> 00:14:19,740 todas as strings codificadas em Android em uma pasta separada, 208 00:14:19,740 --> 00:14:23,610 que passa a ser em values.strings. 209 00:14:23,610 --> 00:14:29,300 Se olharmos aqui, podemos ver que temos uma série hard-coded guardado aqui 210 00:14:29,300 --> 00:14:33,910 em Olá mundo, e é chamado Olá mundo, e isso é uma espécie de 211 00:14:33,910 --> 00:14:39,230 decisão de projeto comum em várias plataformas que pretende- 212 00:14:39,230 --> 00:14:41,780 cordas são o tipo de coisas que queremos ser potencialmente capaz de mudar. 213 00:14:41,780 --> 00:14:48,050 Nós não queremos controlar F em nosso arquivo de código fonte em nosso XML. 214 00:14:48,050 --> 00:14:50,760 Queremos ser capazes de mudar isso sempre que temos a chance. 215 00:14:50,760 --> 00:14:53,640 >> Este arquivo XML, strings.xml, é uma maneira de extrair 216 00:14:53,640 --> 00:14:56,710 strings codificadas que seriam de nossos recursos de layout 217 00:14:56,710 --> 00:15:03,530 ou em nosso código fonte. 218 00:15:03,530 --> 00:15:08,190 O manifesto é onde guardamos essa informação essencial sobre o aplicativo. 219 00:15:08,190 --> 00:15:11,050 Ele inclui o nome do pacote. Isso tem de ser um identificador único. 220 00:15:11,050 --> 00:15:16,020 Ao contrário da App Store para iOS os nomes das aplicações 221 00:15:16,020 --> 00:15:19,980 não tem que ser único, e você pode de fato mudar o nome do seu aplicativo 222 00:15:19,980 --> 00:15:23,570 depois de submetê-lo, então se eu começar com Angry Birds, 223 00:15:23,570 --> 00:15:26,840 e então eu fazer uma atualização, e eu não quero lançar uma nova versão 224 00:15:26,840 --> 00:15:34,230 Acho que eu poderia chamá-lo de Angry Birds 2, enquanto eu estou no mesmo ciclo de lançamento. 225 00:15:34,230 --> 00:15:36,780 Seria apenas mostrar-se como uma atualização. 226 00:15:36,780 --> 00:15:39,790 A única coisa que tem de ser único é este o nome do pacote, 227 00:15:39,790 --> 00:15:41,280 que muitas pessoas não vão ver. 228 00:15:41,280 --> 00:15:44,680 Bem, você só veria se estivesse olhando para o código-fonte ou se existe algum tipo de erro. 229 00:15:44,680 --> 00:15:47,580 Os componentes incluem atividades, por isso temos de declarar 230 00:15:47,580 --> 00:15:49,070 qualquer tipo de atividade que usamos. 231 00:15:49,070 --> 00:15:53,430 Esta é uma permissão tipo de coisa. 232 00:15:53,460 --> 00:15:58,150 >> Como o Android não tem esse processo de aplicação rigorosa 233 00:15:58,150 --> 00:16:02,210 para a apresentação de aplicações em vez disso, simplesmente tudo baseado fora de permissões 234 00:16:02,210 --> 00:16:04,300 e declarando coisas no manifesto. 235 00:16:04,300 --> 00:16:06,380 A versão SDK também é importante. 236 00:16:06,380 --> 00:16:10,330 Podemos definir uso como SDK versão mínima coisa. 237 00:16:10,330 --> 00:16:16,010 Obviamente, você quer criar um código 238 00:16:16,010 --> 00:16:18,570 e projeto para os sistemas operacionais mais recentes. 239 00:16:18,570 --> 00:16:20,840 Talvez não seja o mais novo, talvez não Jelly Bean. 240 00:16:20,840 --> 00:16:23,610 Talvez você queira projetar principalmente para Ice Cream Sandwich, 241 00:16:23,610 --> 00:16:27,120 embora sejam praticamente a mesma em termos de decisões de projeto 242 00:16:27,120 --> 00:16:30,550 e as bibliotecas e APIs reais. 243 00:16:30,550 --> 00:16:36,250 Mas ao invés de ter pessoas 244 00:16:36,250 --> 00:16:40,050 do original Android versão Donut como caminho de volta quando, 245 00:16:40,050 --> 00:16:43,420 que ainda acontecem estar usando que tentar fazer o download do aplicativo e, em seguida, dizer 246 00:16:43,420 --> 00:16:46,160 ele não funciona no meu telefone, você pode definir a versão mínima 247 00:16:46,160 --> 00:16:48,620 e que ele seja Gingerbread ou Ice Cream Sandwich 248 00:16:48,620 --> 00:16:53,300 ou o que você sente Enviando confortável. 249 00:16:53,300 --> 00:16:57,170 E este é um exemplo do Manifesto. Podemos olhar para o real em um bit. 250 00:16:57,170 --> 00:17:00,900 >> Ok, vamos seguir em frente com o demo agora. 251 00:17:00,900 --> 00:17:08,900 Este é o demo, se você Google Android construir seu primeiro aplicativo ou algo parecido. 252 00:17:08,900 --> 00:17:12,089 Nós vamos passar por tudo o que está acontecendo lá dentro, 253 00:17:12,089 --> 00:17:17,690 e muito, apenas para uma referência que aqui sabe Java em qualquer medida? 254 00:17:17,690 --> 00:17:28,310 Ok, então Java é uma nova linguagem de codificação para a maioria das pessoas saindo do CS50. 255 00:17:28,310 --> 00:17:31,850 Resumidamente, para ir mais uma vez o que diz aqui, 256 00:17:31,850 --> 00:17:35,580 o que nós queremos fazer é, em vez de ajustar esta aplicação Olá mundo 257 00:17:35,580 --> 00:17:38,620 que tudo que faz é se lança e diz Olá mundo 258 00:17:38,620 --> 00:17:43,580 e ele diz Olá CS50 no topo, porque esse é o nome da atividade 259 00:17:43,580 --> 00:17:47,190 vamos tentar fazer um campo de texto e um botão 260 00:17:47,190 --> 00:17:50,680 para que, quando pressionar este botão levará o texto 261 00:17:50,680 --> 00:17:53,660 do campo de texto e iniciar uma nova atividade, e ele vai dizer 262 00:17:53,660 --> 00:17:58,380 seja o que for que o texto disse na atividade, e isso é relativamente simples. 263 00:17:58,380 --> 00:18:00,650 Não é muito interessante. Você não gostaria de liberar qualquer aplicativo como este. 264 00:18:00,650 --> 00:18:03,880 Mas demonstra algumas coisas importantes do projeto. 265 00:18:03,880 --> 00:18:07,030 >> Nós vamos ter que interagir com o manifesto, com os arquivos de layout, 266 00:18:07,030 --> 00:18:12,440 com o código fonte, e você pode ver como iniciar uma atividade da outra. 267 00:18:19,740 --> 00:18:23,060 Vamos começar com o layout para nossa primeira atividade, 268 00:18:23,060 --> 00:18:27,320 que eu sei que é uma espécie de pequeno, 269 00:18:27,320 --> 00:18:32,660 mas como você pode ver, agora, tudo isso é que tem o nosso logotipo que criamos, 270 00:18:32,660 --> 00:18:36,310 o nome da atividade, e ele diz Olá mundo no centro. 271 00:18:36,310 --> 00:18:40,400 Em vez disso, eu estou indo primeiro para fazer isso em um layout linear, 272 00:18:40,400 --> 00:18:42,350 um layout familiar, e estas são todas as coisas 273 00:18:42,350 --> 00:18:45,870 você pode olhar para cima e vale a pena ir mais em algum momento, em termos dos layouts. 274 00:18:45,870 --> 00:18:47,310 É muito parecido com HTML. 275 00:18:47,310 --> 00:18:52,640 Dissemos que não é realmente vale a pena conhecer em termos de um sentido programático, 276 00:18:52,640 --> 00:18:55,840 mas há tantos layouts diferentes que você pode controlar, 277 00:18:55,840 --> 00:18:57,970 e é como CSS em termos de estilos. 278 00:18:57,970 --> 00:19:01,590 >> Há muita coisa acontecendo apenas em termos de estética aqui, 279 00:19:01,590 --> 00:19:08,930 E sim, vale a pena aprender, mas é o tipo de coisa que você deve olhar para cima 280 00:19:08,930 --> 00:19:11,810 como você vai e você sente que precisa de algo novo. 281 00:19:11,810 --> 00:19:17,030 Eu posso tirar proveito de algumas das ferramentas ADT aqui, pelo menos para começar com. 282 00:19:17,030 --> 00:19:21,930 Eu vou fazer um campo de texto, e eu vou fazer um botão. 283 00:19:21,930 --> 00:19:24,100 Coloque-os um ao lado do outro. 284 00:19:24,100 --> 00:19:28,200 Eles já redimensionar adequadamente. 285 00:19:28,200 --> 00:19:31,320 Desculpe, mais uma vez, voltando à diferença entre o layout linear e disposição relativa, 286 00:19:31,320 --> 00:19:34,830 um layout linear dá um pouco mais de funcionalidade 287 00:19:34,830 --> 00:19:38,720 em termos de preenchimento de espaço e certificando 288 00:19:38,720 --> 00:19:42,790 Posicionamo coisas horizontalmente ou verticalmente. 289 00:19:42,790 --> 00:19:46,130 A grande diferença entre um layout linear e um layout em relação 290 00:19:46,130 --> 00:19:50,250 é a relativa disposição posições tudo em relação a outros pontos de vista, 291 00:19:50,250 --> 00:19:52,630 ea única coisa boa sobre isso é que leva menos tempo para desenhar 292 00:19:52,630 --> 00:19:56,120 porque o sistema operacional olha para todo o código e diz que isso vai 293 00:19:56,120 --> 00:19:58,270 em relação a este aqui, aqui. 294 00:19:58,270 --> 00:20:03,170 Isso significa que ele faz menos medidas do que um monte de layouts lineares aninhadas, 295 00:20:03,170 --> 00:20:06,840 que eu teria que fazer se eu queria que as coisas vão verticalmente aqui. 296 00:20:06,840 --> 00:20:10,510 >> Eu já tenho algumas coisas acontecendo na horizontal, então eu precisaria de um layout linear diferente 297 00:20:10,510 --> 00:20:14,560 para inserí-las na vertical, mas se eu estivesse fazendo um layout parente eu poderia dizer 298 00:20:14,560 --> 00:20:18,140 manter esta para a esquerda, isto para a direita e estas coisas abaixo. 299 00:20:18,140 --> 00:20:21,850 Mas porque eu quero que eles enchem agora eu vou usar um layout linear, 300 00:20:21,850 --> 00:20:24,510 e você pode vê-lo já faz um monte dessas coisas para nós. 301 00:20:24,510 --> 00:20:28,890 Todas as exibições precisa ter uma propriedade de largura e altura, 302 00:20:28,890 --> 00:20:33,410 e isso acontece a ter um peso de 1, e este tem um peso de 1 303 00:20:33,410 --> 00:20:36,050 de modo que ele preenche a totalidade do espaço. 304 00:20:36,050 --> 00:20:38,460 Mas a largura ea altura são as mais importantes. 305 00:20:38,460 --> 00:20:45,880 Este campo ID aqui não é importante no layout real 306 00:20:45,880 --> 00:20:49,060 a menos que nós estamos usando um esquema relativo e dizer que podemos referenciar 307 00:20:49,060 --> 00:20:52,990 uma vista em posição de referência para o outro. 308 00:20:52,990 --> 00:20:56,170 Se tivéssemos um layout em relação poderíamos dizer esta posição abaixo deste 309 00:20:56,170 --> 00:20:59,390 ou acima deste ID, mas este ID será importante 310 00:20:59,390 --> 00:21:01,660 quando estamos a usá-lo em nosso código, porque podemos referenciar 311 00:21:01,660 --> 00:21:05,610 esses pontos de vista individuais desta maneira. 312 00:21:05,610 --> 00:21:10,350 >> E então você pode ver o requestFocus tag, que é algo que você provavelmente viu em pset 7. 313 00:21:10,350 --> 00:21:15,370 Houve uma tag foco automático ou algo nesse sentido para um dos campos. 314 00:21:15,370 --> 00:21:22,100 E uma coisa, é claro, não podemos fazer como em HTML, 315 00:21:22,100 --> 00:21:25,660 e observe uma das coisas agradáveis ​​sobre ADT é que autocompletes aqui. 316 00:21:25,660 --> 00:21:29,930 Talvez não tão bem como o fez no XCode, mas ele faz, no entanto, 317 00:21:29,930 --> 00:21:32,860 e poderíamos dizer dica e, em seguida, dar-lhe algum tipo de corda 318 00:21:32,860 --> 00:21:37,070 como escrever uma mensagem, 319 00:21:37,070 --> 00:21:41,300 e se eu dar-lhe um momento, também notar que eu tenho um pequeno erro aqui 320 00:21:41,300 --> 00:21:44,610 dizendo que devemos usar um recurso de cadeia para isso, 321 00:21:44,610 --> 00:21:48,820 então se eu deixá-lo fazer algum do trabalho duro para mim 322 00:21:48,820 --> 00:21:57,320 Eu posso selecionar essa string, fazer refrator Android e extrato de corda Android. 323 00:21:57,320 --> 00:22:00,570 Eu posso dar-lhe esse nome, escreva uma mensagem, 324 00:22:00,570 --> 00:22:04,180 eo que ele fez agora é substituído essa seqüência hard-coded 325 00:22:04,180 --> 00:22:07,980 com uma referência à seqüência no arquivo xml da string., 326 00:22:07,980 --> 00:22:10,200 o que significa que agora é aqui. 327 00:22:10,200 --> 00:22:15,560 >> E eu sei que parece um pouco mais de trabalho trivial e como, neste ponto, 328 00:22:15,560 --> 00:22:17,840 mas quando você tem um monte de coisas, um monte de cordas, 329 00:22:17,840 --> 00:22:20,750 que é realmente importante, particularmente para a localização 330 00:22:20,750 --> 00:22:26,920 porque, como mencionei anteriormente, o Android é um sistema operacional muito utilizado no mundo 331 00:22:26,920 --> 00:22:35,950 que você pode simplesmente fazê-en valores ou valores-sp 332 00:22:35,950 --> 00:22:44,320 ou algo para o inglês ou espanhol ou outras línguas. 333 00:22:44,320 --> 00:22:50,210 E então você provavelmente não ter tido essa experiência ainda 334 00:22:50,210 --> 00:22:53,030 uma vez que não fez muito JavaScript em termos de programação web, 335 00:22:53,030 --> 00:22:56,850 mas também podemos fazer neste campo chamado onClick do botão, 336 00:22:56,850 --> 00:23:02,350 e esta é uma maneira de fazer referência dentro de nosso layout 337 00:23:02,350 --> 00:23:06,570 que queremos que uma determinada função a ser chamado em nosso código fonte. 338 00:23:06,570 --> 00:23:09,420 Vou chamar essa sendMessage, 339 00:23:09,420 --> 00:23:13,390 e, a fim de fazer este trabalho o que significa na atividade principal aqui 340 00:23:13,390 --> 00:23:19,180 Vou ter que criar uma função que é público 341 00:23:19,180 --> 00:23:22,250 de modo que possa ser acessado pelo esquema. 342 00:23:22,250 --> 00:23:25,930 É vazio, porque você simplesmente não quer que ele retorne nada. 343 00:23:25,930 --> 00:23:37,760 Vamos chamar-lhe sendMessage, e ele tem uma visão, 344 00:23:37,760 --> 00:23:43,690 , que é um tipo de contexto que pode ancorar este método 345 00:23:43,690 --> 00:23:47,160 esse ponto de vista individual quando estamos executando-o. 346 00:23:47,160 --> 00:23:50,090 >> E eu não sei se você notou, bem, você não tenha notado, 347 00:23:50,090 --> 00:24:02,370 mas neste momento aqui 348 00:24:02,370 --> 00:24:06,930 este ponto de vista é um tipo que ainda não foi incluído, 349 00:24:06,930 --> 00:24:10,630 e, claro, todos sabem do CS50 sobre não incluindo os tipos. 350 00:24:10,630 --> 00:24:13,120 A coisa agradável sobre como o Eclipse IDE é que 351 00:24:13,120 --> 00:24:17,520 se você esquecer de incluir um tipo que vai sublinhar com um pouco de vermelho rabiscada 352 00:24:17,520 --> 00:24:19,680 e, em seguida, dar-lhe a opção de importar a vista. 353 00:24:19,680 --> 00:24:23,130 Uma maneira rápida de fazer isso é controle de mudança O, e vai importar 354 00:24:23,130 --> 00:24:27,070 todos os arquivos que ele precisa. 355 00:24:27,070 --> 00:24:33,670 Agora que temos essa função sendMessage, 356 00:24:33,670 --> 00:24:46,560 que vai enviar mensagem do MainActivity para uma nova atividade, 357 00:24:46,560 --> 00:24:55,230 vamos ter que usar a intenção de lançar a nova atividade a partir de um presente, 358 00:24:55,230 --> 00:25:02,240 então provavelmente vamos querer criar uma constante global ou também particularmente uma constante pública 359 00:25:02,240 --> 00:25:06,240 que vai nos ajudar a saber como vamos fazer referência a string 360 00:25:06,240 --> 00:25:09,090 porque quando nós criamos uma intenção que não estamos apenas chamando uma nova atividade, 361 00:25:09,090 --> 00:25:11,520 mas também podemos dar-lhe um conjunto de informações. 362 00:25:11,520 --> 00:25:14,720 Um pacote é na verdade o termo que usa o Android, 363 00:25:14,720 --> 00:25:21,470 e é uma forma de dizer dar-lhe dados adicionais, que não pode ser de um tipo de dados muito sofisticado, 364 00:25:21,470 --> 00:25:24,510 mas podemos definitivamente incluir booleanos ou cordas ou ints. 365 00:25:24,510 --> 00:25:29,750 Esse tipo de coisa. 366 00:25:29,750 --> 00:25:34,230 >> Sinta-se livre para perguntar sobre qualquer uma destas eliminatórias aqui, 367 00:25:34,230 --> 00:25:36,900 público final, estático. 368 00:25:36,900 --> 00:25:38,610 Público é o importante. 369 00:25:38,610 --> 00:25:47,090 Isso significa que podemos acessar esta variável de outros arquivos de código fonte 370 00:25:47,090 --> 00:25:49,590 por exemplo, quando criamos uma nova atividade. 371 00:25:49,590 --> 00:25:52,190 Podemos referenciar a string dentro deste arquivo. 372 00:25:52,190 --> 00:25:57,160 Se é privado, isso significa que ele é limitado a este arquivo individual aqui. 373 00:25:57,160 --> 00:26:02,430 Mas nós vamos chamar isso de algo como mensagem extra. 374 00:26:16,260 --> 00:26:23,300 Agora nós fizemos essa função e, se clicar no botão, esta função será chamada. 375 00:26:23,300 --> 00:26:27,970 Mas nós não fizemos nada, obviamente, com a função. 376 00:26:27,970 --> 00:26:33,130 O que nós queremos fazer agora é criar uma nova atividade, 377 00:26:33,130 --> 00:26:35,350 a atividade que vai ser realmente lançado. 378 00:26:35,350 --> 00:26:44,330 Em Eclipse, podemos dizer, a atividade Android novo, atividade em branco. 379 00:26:44,330 --> 00:26:46,530 Podemos dar-lhe um nome. 380 00:26:46,530 --> 00:26:57,050 Vamos chamá-lo de nossa atividade resultado. 381 00:26:57,050 --> 00:27:04,430 E então este campo pai hierárquico é uma forma de especificar 382 00:27:04,430 --> 00:27:08,180 como as actividades estão relacionados uns com os outros. 383 00:27:08,180 --> 00:27:11,020 Porque este será iniciado a partir da outra atividade 384 00:27:11,020 --> 00:27:27,520 devemos especificar que ele tem a principal atividade pai. 385 00:27:27,520 --> 00:27:31,220 >> E eu poderia ter clicado no próximo campo lá, o que nos teria dito 386 00:27:31,220 --> 00:27:33,830 alguns campos opcionais que também se incluem, 387 00:27:33,830 --> 00:27:38,800 mas a coisa agradável sobre ADT, mais uma vez, é que se eu rolar aqui 388 00:27:38,800 --> 00:27:45,740 no Manifesto lembre-se que tudo isso realmente foi incluído por padrão 389 00:27:45,740 --> 00:27:48,930 quando criou o projeto, 390 00:27:48,930 --> 00:27:53,090 e agora porque usamos este criar uma nova atividade ao invés de apenas 391 00:27:53,090 --> 00:27:58,610 adicionando nosso próprio arquivo de classe porque nós fomos através da sua interface gráfica para fazer isso 392 00:27:58,610 --> 00:28:01,930 já adicionado tudo isso para o manifesto para nós, 393 00:28:01,930 --> 00:28:06,020 o que só significa que agora o sistema operacional não vai reclamar 394 00:28:06,020 --> 00:28:09,400 quando tentamos lançar esta atividade. 395 00:28:09,400 --> 00:28:14,620 E também, é claro, deu-lhe um rótulo, que também aparece em strings. 396 00:28:14,620 --> 00:28:17,340 Ele faz um monte de coisas no back-end para nós. 397 00:28:17,340 --> 00:28:20,140 De qualquer forma, agora que temos esta atividade resultado, bem como, 398 00:28:20,140 --> 00:28:23,810 o arquivo de código fonte real na pasta de origem, 399 00:28:23,810 --> 00:28:33,540 e você pode ver a abordar brevemente esta- 400 00:28:33,540 --> 00:28:37,790 porque disse isso sobre a mãe hierárquica 401 00:28:37,790 --> 00:28:46,640 ele deu esse android.r.ide.home campo neste onOption coisa selecionado. 402 00:28:46,640 --> 00:28:49,020 >> O que isto está basicamente dizendo é que há um botão de menu agora 403 00:28:49,020 --> 00:28:53,110 que no canto superior esquerdo da tela 404 00:28:53,110 --> 00:29:02,220 se eu voltar para o PowerPoint em que falou pela primeira vez sobre a barra de ação 405 00:29:02,220 --> 00:29:05,380 por causa do pai hierárquica agora há uma pequena seta de volta aqui 406 00:29:05,380 --> 00:29:10,610 e isso é clicável por isso, devemos ser capazes de, depois de rodar este app- 407 00:29:10,610 --> 00:29:15,360 voltar, e é uma maneira de salvar-nos um pouco de código lá. 408 00:29:26,220 --> 00:29:40,180 Agora, dentro deste, bem, parece estar reclamando sobre isso por um momento. 409 00:29:40,180 --> 00:29:43,910 Vamos comentar isso. 410 00:29:43,910 --> 00:29:48,260 Agora, a fim de realmente interagir com estas duas actividades, 411 00:29:48,260 --> 00:29:55,020 temos que criar uma intenção que inclui todos esses dados. 412 00:29:55,020 --> 00:29:58,950 Em sendMessage agora vou cruzar com alguns pedaços de código 413 00:29:58,950 --> 00:30:00,700 e explicar que como eu ir. 414 00:30:00,700 --> 00:30:06,280 Uma intenção, como eu disse, é uma maneira de lançar uma atividade de outro. 415 00:30:06,280 --> 00:30:10,000 Intenção é o tipo. Estamos criando um minhaIntencao variável. 416 00:30:10,000 --> 00:30:13,980 >> E isso é realmente um objeto, é por isso que temos que chamar de novo. 417 00:30:13,980 --> 00:30:18,500 É comum o uso de Java lá, o que pode demorar um pouco de tempo para se acostumar. 418 00:30:18,500 --> 00:30:23,900 Isso significa que estamos usando a atividade ou o MainActivity classe, 419 00:30:23,900 --> 00:30:28,630 ea intenção dessa forma leva a atividade que vai de 420 00:30:28,630 --> 00:30:36,060 ea atividade que vai, que chamamos de ResultActivity, 421 00:30:36,060 --> 00:30:38,170 e que é a sua própria classe. 422 00:30:38,170 --> 00:30:41,720 Incluir isso. 423 00:30:41,720 --> 00:30:47,370 E então, como eu mencionei antes, nós demos esse ID ao campo de texto de edição 424 00:30:47,370 --> 00:30:53,710 ea exibição de texto, por isso, a fim de capturar programaticamente 425 00:30:53,710 --> 00:31:01,860 o texto que existe no EDITTEXT 426 00:31:01,860 --> 00:31:06,710 usamos esta função chamada findViewById, 427 00:31:06,710 --> 00:31:13,660 que é semelhante a algo que você vai usar ao tentar obter os campos do DOM. 428 00:31:13,660 --> 00:31:17,560 Talvez Davi fala sobre isso na palestra. 429 00:31:17,560 --> 00:31:26,600 Mas é apenas uma forma de obter os-é por isso que marcar essas coisas com esses campos. 430 00:31:26,600 --> 00:31:31,110 Id.editText1. 431 00:31:31,110 --> 00:31:35,220 Já está autocompleting para mim lá. 432 00:31:35,220 --> 00:31:42,010 >> E então vamos também incluir-este EDITTEXT agora que temos o campo 433 00:31:42,010 --> 00:31:47,640 dentro do nosso programa, tudo o que fez foi basicamente findViewById 434 00:31:47,640 --> 00:31:50,870 Você pode pensar nisso como nos dar uma referência a esse EDITTEXT. 435 00:31:50,870 --> 00:31:54,570 Agora queremos obter a seqüência ou a mensagem 436 00:31:54,570 --> 00:32:00,670 dentro desse EDITTEXT que podemos fazer usando o 437 00:32:00,670 --> 00:32:03,360 você poderia pensar EDITTEXT como um struct- 438 00:32:03,360 --> 00:32:07,600 chamamos isso de um objeto em Java com um monte de diferentes métodos 439 00:32:07,600 --> 00:32:10,650 ou campos e atributos ligados a ele. 440 00:32:10,650 --> 00:32:15,510 Quando eu digo EDITTEXT. dá-me a oportunidade de acesso a 441 00:32:15,510 --> 00:32:19,770 um método como getText, que receberá o texto atual 442 00:32:19,770 --> 00:32:23,990 em que EDITTEXT e depois converter esse explicitamente 443 00:32:23,990 --> 00:32:26,520 a uma corda, e nós salvamos a mensagem. 444 00:32:26,520 --> 00:32:32,730 Agora nós realmente queremos fazer algo com essa intenção que criamos há poucos momentos. 445 00:32:32,730 --> 00:32:40,250 Vou colocar extras, como é chamado na intenção, 446 00:32:40,250 --> 00:32:43,330 que, mais uma vez, como eu disse antes, esta é uma maneira de criar o pacote 447 00:32:43,330 --> 00:32:45,980 com um monte de dados. 448 00:32:45,980 --> 00:32:50,920 Mensagem extra é a nossa marca, de modo que sabemos o que estamos economizando este abaixo, 449 00:32:50,920 --> 00:32:56,700 e então eu estou incluindo a mensagem. 450 00:32:56,700 --> 00:33:04,870 >> E então nós podemos realmente começar a atividade, dando-lhe o minhaIntencao parâmetro. 451 00:33:04,870 --> 00:33:10,630 E isso vai realmente iniciar a atividade, por isso desde que eu atualizado para o Windows 8 452 00:33:10,630 --> 00:33:15,870 pode haver alguns erros que aparecem momentaneamente, mas tente ignorá-los. 453 00:33:28,010 --> 00:33:30,310 E este é o emulador Android. 454 00:33:30,310 --> 00:33:33,540 Esperemos que o código vai realmente aparecer em um momento. 455 00:33:33,540 --> 00:33:36,680 Mais uma vez, ignorando todas essas pequenas coisas. 456 00:33:36,680 --> 00:33:42,290 Mas o emulador Android você pode emular qualquer versão do sistema operacional 457 00:33:42,290 --> 00:33:45,180 desde os primeiros queridos, Donut, Gingerbread. 458 00:33:45,180 --> 00:33:49,640 Este é Jelly Bean 4.1. 459 00:33:49,640 --> 00:33:53,150 Mas como você pode ver agora, isso é algo que fizemos. 460 00:33:53,150 --> 00:33:55,780 Isto tem a MainActivity, o EDITTEXT, o botão. 461 00:33:55,780 --> 00:34:01,550 Eu posso escrever algo aqui, mas o que estamos perdendo neste momento? 462 00:34:01,550 --> 00:34:05,190 Fizemos a campo no MainActivity que vai enviar a mensagem 463 00:34:05,190 --> 00:34:08,570 a outra atividade, mas neste momento 464 00:34:08,570 --> 00:34:12,330 não ter feito nada na outra atividade, de modo que não vai receber nada. 465 00:34:12,330 --> 00:34:18,800 Vamos terminar essa parte antes de seguir em frente. 466 00:34:18,800 --> 00:34:25,760 >> Esta atividade de resultado, o que você precisa fazer é que você precisa fazer é precisaremos- 467 00:34:25,760 --> 00:34:30,070 também podemos referenciar a intenção nesta atividade, 468 00:34:30,070 --> 00:34:33,580 por isso temos de captar a intenção, que é muito simples. 469 00:34:33,580 --> 00:34:40,780 É uma função incluída na classe de atividade, 470 00:34:40,780 --> 00:34:47,610 para que possamos dizer "Get a mensagem da intenção." 471 00:34:47,610 --> 00:34:56,260 "Intenção minhaIntencao = getIntent". 472 00:34:56,260 --> 00:35:00,030 E isso vai dar-nos-agora minhaIntencao é um objeto, 473 00:35:00,030 --> 00:35:05,380 que é uma referência à intenção que nos levou a esta atividade. 474 00:35:05,380 --> 00:35:10,130 MainActivity chama e dá a informação extra para resultar atividade. 475 00:35:10,130 --> 00:35:14,070 Atividade resultado agora olha para a intenção que levou aqui, 476 00:35:14,070 --> 00:35:23,540 e podemos acessar a mensagem de que nós criamos no outro, 477 00:35:23,540 --> 00:35:26,370 getStringExtra, e isso vai autocomplete para mim. 478 00:35:26,370 --> 00:35:31,190 E então lembre-se, da maneira que marcou aquele pedaço de dados 479 00:35:31,190 --> 00:35:38,400 era, dando-lhe este campo aqui, esta cadeia pública, 480 00:35:38,400 --> 00:35:42,080 que é a tag para a cadeia que realmente incluídos. 481 00:35:42,080 --> 00:35:48,450 >> Se eu disser MainActivity.Extra_Message 482 00:35:48,450 --> 00:35:52,200 é logo ali, e isso é mais ou menos como o nome do parâmetro 483 00:35:52,200 --> 00:35:55,330 quando passamos código do controlador para o modelo, 484 00:35:55,330 --> 00:35:57,680 quando nós diríamos título flecha alguma coisa. 485 00:35:57,680 --> 00:36:01,140 É o mesmo tipo de idéia lá. 486 00:36:01,140 --> 00:36:07,130 Agora, lembre-se disso. 487 00:36:07,130 --> 00:36:12,230 Tivemos também esta auto criado ou auto código gerado 488 00:36:12,230 --> 00:36:16,410 para a actividade resultado, que inclui o ponto de vista de texto no meio 489 00:36:16,410 --> 00:36:19,690 que diz: Olá mundo. 490 00:36:19,690 --> 00:36:27,510 Que poderia fazer que maior. 491 00:36:27,510 --> 00:36:33,980 Vamos fazer isso primeiro. 492 00:36:33,980 --> 00:36:39,550 Poderíamos fazê-lo 40 densidade pixels independentes. 493 00:36:39,550 --> 00:36:42,670 Vamos ver, isso é super enorme. Isso vai ficar bem. 494 00:36:42,670 --> 00:36:48,180 E, em seguida, a fim de referenciar este ponto de vista de texto individual dentro do nosso código 495 00:36:48,180 --> 00:36:53,890 teremos que dar a ele uma identificação, 496 00:36:53,890 --> 00:36:58,350 e, a fim de fazer o que dizemos @ + id, o que significa que atribuí-la ID. 497 00:36:58,350 --> 00:37:02,480 Se nós apenas dissemos @ id seria assumir que estamos fazendo referência a um ID que já existe, 498 00:37:02,480 --> 00:37:07,760 e vamos chamar essa nossa resultTextView. 499 00:37:07,760 --> 00:37:10,570 E notem que, em XML, não há necessidade de ponto e vírgula ou qualquer coisa. 500 00:37:10,570 --> 00:37:12,380 Tudo está dentro dessas tags. 501 00:37:12,380 --> 00:37:15,530 É muito semelhante ao HTML em uma série de sentidos. 502 00:37:15,530 --> 00:37:22,760 >> Leva um pouco de tempo para se acostumar, mas eventualmente você vai se sentir muito confortável com ele. 503 00:37:22,760 --> 00:37:31,320 Vamos atualizar o texto para a nossa visão de texto resultado, 504 00:37:31,320 --> 00:37:35,650 e como fizemos quando estávamos recebendo esse campo de edição de texto em nossa outra atividade 505 00:37:35,650 --> 00:37:46,630 em MainActivity Aqui vamos também da mesma forma- 506 00:37:46,630 --> 00:37:54,890 vamos encontrar o ponto de vista pelo ID. 507 00:37:54,890 --> 00:37:59,640 E R, no caso de eu não mencionei isso antes, é a referência para a nossa pasta de recursos, 508 00:37:59,640 --> 00:38:05,350 e, em seguida, ID é uma referência para tudo na pasta de recursos, todos os IDs, 509 00:38:05,350 --> 00:38:10,060 e resultTextView. 510 00:38:10,060 --> 00:38:13,010 E assim como antes, resultTextView é um objeto, 511 00:38:13,010 --> 00:38:15,780 o que significa que tem todas estas propriedades associados. 512 00:38:15,780 --> 00:38:20,610 Quando usamos getText para a edição de texto para este campo de texto ou a exibição de texto 513 00:38:20,610 --> 00:38:23,980 podemos realmente usar setText, 514 00:38:23,980 --> 00:38:26,960 e então já encontrou a mensagem da intenção, 515 00:38:26,960 --> 00:38:35,760 para que eu possa dizer a mensagem, e isso vai realmente definir a mensagem. 516 00:38:35,760 --> 00:38:41,820 >> É um momento para lançar, em seguida, podemos ver se é ou não cai, 517 00:38:41,820 --> 00:38:48,670 mas qualquer dúvida sobre esse processo ali mesmo, esse tipo de interação? 518 00:38:48,670 --> 00:38:51,490 De muitas maneiras, é simples. 519 00:38:51,490 --> 00:38:53,960 A razão pela qual eu estou passando por algo relativamente simples 520 00:38:53,960 --> 00:38:57,330 é, novamente, porque você começa a ver a interação entre o layout, 521 00:38:57,330 --> 00:38:59,520 o código-fonte, como é que as coisas referência 522 00:38:59,520 --> 00:39:07,680 e talvez ter um pouco de exposição à forma como Java trabalha lá. 523 00:39:07,680 --> 00:39:16,500 Se eu realmente escrever algo aqui, como ohai, e então clique no botão, 524 00:39:16,500 --> 00:39:22,260 lança uma nova atividade, e que a visão texto diz ohai. 525 00:39:22,260 --> 00:39:27,640 Isso é muito simples, mas espero que depois disso exemplo 526 00:39:27,640 --> 00:39:32,310 você meio que ver como essa interação funciona, e agora que a bagunça de arquivos 527 00:39:32,310 --> 00:39:36,870 no lado esquerdo de todas essas pastas do projeto, esperamos que você sabe onde olhar agora. 528 00:39:36,870 --> 00:39:38,700 Esta é a sua área de código-fonte. 529 00:39:38,700 --> 00:39:41,760 >> Layout é realmente a única coisa que você vai lidar com até incluir imagens 530 00:39:41,760 --> 00:39:46,370 e os drawables ou qualquer outra coisa, e os valores, que incluem cordas, 531 00:39:46,370 --> 00:39:51,960 como já mencionamos, e, em seguida, estilos é algo que é uma espécie de como CSS. 532 00:39:51,960 --> 00:39:56,410 Abordá-la quando quiser, mas até que você se sinta confortável com a adição de toque extra 533 00:39:56,410 --> 00:40:02,520 para a sua aplicação, não há necessidade de se preocupar muito com isso. 534 00:40:02,520 --> 00:40:07,410 Só para encerrar uma outra coisa que você certamente vai querer incluir- 535 00:40:07,410 --> 00:40:13,010 supondo que você deseja integrar recursos legais e poupar alguns extras codificação- 536 00:40:13,010 --> 00:40:16,460 seria incluir bibliotecas terceiro partido. 537 00:40:16,460 --> 00:40:19,840 Aqui é o cara Android pouco com o chapéu de Sherlock Holmes. 538 00:40:19,840 --> 00:40:23,040 Esta é uma barra de ação Sherlock biblioteca, 539 00:40:23,040 --> 00:40:25,390 o que significa, basicamente, que barra de ação que você viu anteriormente, 540 00:40:25,390 --> 00:40:29,590 que agora é padrão em Ice Cream Sandwich e Jelly Bean, 541 00:40:29,590 --> 00:40:33,100 Se você quiser trazer esse tipo de experiência do usuário para os usuários em versões antigas 542 00:40:33,100 --> 00:40:39,290 e salvar-se de se preocupar com a forma como o usuário vai navegar 543 00:40:39,290 --> 00:40:42,490 em versões mais antigas quando a coisa não está lá você pode incluir esta biblioteca 544 00:40:42,490 --> 00:40:46,770 e então você apenas tem que referência em vez do Android padrão 545 00:40:46,770 --> 00:40:50,250 bibliotecas para a barra de ação, você faz referência a esta biblioteca de apoio. 546 00:40:50,250 --> 00:40:53,090 >> Coisas como Scoreloop, é ótimo se você está indo para incluir um jogo. 547 00:40:53,090 --> 00:40:57,280 Ele permite que você adicione quadros de líderes e conquistas para games. 548 00:40:57,280 --> 00:41:00,900 A AdMob é uma maneira de colocar anúncios em seus aplicativos 549 00:41:00,900 --> 00:41:02,900 no caso de você querer fazer um pouco de dinheiro com isso. 550 00:41:02,900 --> 00:41:05,730 Claro, existe Facebook e Twitter para integrar lá 551 00:41:05,730 --> 00:41:08,170 se você quiser compartilhar as coisas com facilidade, et cetera. 552 00:41:08,170 --> 00:41:15,120 Dropbox, da mesma forma, e Google Analytics é que o gráfico olhar lá. 553 00:41:15,120 --> 00:41:19,070 Isso vai ser muito importante se você realmente quer ver quem está interagindo 554 00:41:19,070 --> 00:41:25,800 com seu aplicativo ou quem é, como eles interagem, et cetera. 555 00:41:25,800 --> 00:41:30,650 Google, por padrão, diz-lhe um monte de estatísticas sobre que tenha instalado o aplicativo 556 00:41:30,650 --> 00:41:35,020 e que os telefones que eles têm, as versões de sistemas operacionais que eles têm. 557 00:41:35,020 --> 00:41:38,080 Mas se você quiser ver quem está usando-o em uma base diária e como usá-lo 558 00:41:38,080 --> 00:41:42,860 então você vai querer incluir algum tipo de sistema de rastreamento assim. 559 00:41:42,860 --> 00:41:44,990 >> Quando você estiver pronto para distribuir seu aplicativo 560 00:41:44,990 --> 00:41:46,930 Eu não preciso de ir para que em muita profundidade. 561 00:41:46,930 --> 00:41:49,090 Clique no link aqui, Google Play. 562 00:41:49,090 --> 00:41:51,080 Ela costumava ser o mercado Android. 563 00:41:51,080 --> 00:41:53,470 Eles rebatizada tudo com Google Play, 564 00:41:53,470 --> 00:41:55,230 então agora você se submete a isso. 565 00:41:55,230 --> 00:41:57,140 É muito simples. 566 00:41:57,140 --> 00:42:01,070 Você tem que incluir uma descrição, algumas screenshots. 567 00:42:01,070 --> 00:42:05,660 Como eu disse, não há nenhum processo de aprovação como iOS. 568 00:42:05,660 --> 00:42:07,270 E para onde ir a partir daqui? 569 00:42:07,270 --> 00:42:09,450 Eu mostrei-lhe um exemplo muito simples. 570 00:42:09,450 --> 00:42:13,270 Esperemos que se parece terrivelmente simples 571 00:42:13,270 --> 00:42:15,740 então isso é provavelmente um bom sinal. 572 00:42:15,740 --> 00:42:20,080 Se você em tudo me senti um pouco confuso ou inseguro sobre exatamente o que eu estava escrevendo 573 00:42:20,080 --> 00:42:26,160 que também é bom, mas a partir daqui ir ao Google Guides. 574 00:42:26,160 --> 00:42:28,330 Este é um ótimo lugar para começar. 575 00:42:28,330 --> 00:42:31,460 Ele vai falar com você através do que eles esperam em termos de design do aplicativo, 576 00:42:31,460 --> 00:42:33,380 como os utilizadores normalmente interagem com ela. 577 00:42:33,380 --> 00:42:36,450 É muito mais de forma livre do que iOS, eu diria, 578 00:42:36,450 --> 00:42:41,330 que parece vistas da tabela são-Eu não sei, isso é o seu pão e manteiga. 579 00:42:41,330 --> 00:42:44,690 Tudo é uma exibição de tabela deslizando para cima e para baixo. 580 00:42:44,690 --> 00:42:48,160 Com Android eles definitivamente incentivar as pessoas a olhar para ele a partir de 581 00:42:48,160 --> 00:42:51,720 um monte de diferentes perspectivas. 582 00:42:51,720 --> 00:42:56,000 >> Quando você inclui o kit de desenvolvimento de software neste ADT 583 00:42:56,000 --> 00:43:03,010 Por padrão, você tem um monte de exemplos de projetos em Android. 584 00:43:03,010 --> 00:43:05,470 Aqui, Android, Android Sample Project. 585 00:43:05,470 --> 00:43:11,870 Se eu clicar sobre isso, então eu posso escolher a versão para a qual a amostra de projetos de aplicar. 586 00:43:11,870 --> 00:43:13,300 Há um monte de coisas diferentes aqui. 587 00:43:13,300 --> 00:43:16,690 Ela começa com a compatibilidade barra de ação, 588 00:43:16,690 --> 00:43:24,610 jogo acelerômetro, backup e restauração, Bluetooth, construtor gesto. 589 00:43:24,610 --> 00:43:28,930 Jetboy é um jogo de amostra que eles lhe dão, como é LunarLander. 590 00:43:28,930 --> 00:43:31,250 Há um monte de aplicativos de exemplo aqui, 591 00:43:31,250 --> 00:43:35,290 e todos eles estão destinados a diferentes aspectos da API do Android, 592 00:43:35,290 --> 00:43:41,520 ea idéia é que, como você faz o seu pedido 593 00:43:41,520 --> 00:43:44,110 você não precisa saber tudo sobre o Android para fazer um app Android. 594 00:43:44,110 --> 00:43:47,300 Você só tem que aprender sobre as partes que você está realmente vai usar. 595 00:43:47,300 --> 00:43:49,340 Olhe para estas bibliotecas de samples. 596 00:43:49,340 --> 00:43:51,510 Sinta-se livre para copiar e colar o código e reaplicá-lo. 597 00:43:51,510 --> 00:43:53,850 É uma grande coisa para olhar para o código mais difícil 598 00:43:53,850 --> 00:43:57,060 e tentar compreendê-lo, o que é, naturalmente, porque em CS50 599 00:43:57,060 --> 00:44:01,510 que muitas vezes dão-lhe grandes quantidades de código fonte. 600 00:44:01,510 --> 00:44:04,620 Vejam-se alguns destes se você estiver indo para usar bibliotecas semelhantes 601 00:44:04,620 --> 00:44:08,630 e, em seguida, aplicá-lo em seu próprio código. 602 00:44:08,630 --> 00:44:10,430 E, claro, existem tutoriais. 603 00:44:10,430 --> 00:44:12,690 Procurar tutoriais. 604 00:44:12,690 --> 00:44:17,020 Eu encontrei um monte de bons on-line que pode levá-lo até a velocidade 605 00:44:17,020 --> 00:44:20,080 com que fragmentos realmente são e como você pode usá-los. 606 00:44:20,080 --> 00:44:22,240 >> Algumas dessas novas coisas de design, como fragmentos, 607 00:44:22,240 --> 00:44:26,840 você realmente não tem que estar preocupado com a menos que você está fazendo uma 608 00:44:26,840 --> 00:44:30,560 muito grande no escopo do projeto. 609 00:44:30,560 --> 00:44:32,510 São coisas que o Google está tentando eliminar dentro 610 00:44:32,510 --> 00:44:35,570 Stackoverflow é, naturalmente, o seu amigo. 611 00:44:35,570 --> 00:44:37,930 Espero que eu vendi-lhe um pouco sobre o Android, 612 00:44:37,930 --> 00:44:41,640 percebendo que é muito mais fácil de se aproximar em termos de apenas a linguagem de codificação. 613 00:44:41,640 --> 00:44:45,970 Java é que eu diria muito mais fácil de entender do que Objective-C. 614 00:44:45,970 --> 00:44:50,780 Android está crescendo Eu acho que muito mais do que o iOS. 615 00:44:50,780 --> 00:44:54,890 Quer dizer, os dados estão lá também, além do que eu penso. 616 00:44:54,890 --> 00:44:56,920 Vai ser em torno de um tempo, 617 00:44:56,920 --> 00:45:00,880 e eles são poucos anos atrás em termos de seus ciclos de projeto, 618 00:45:00,880 --> 00:45:04,690 por isso é uma espécie de compreensível que eles ainda estão trabalhando através de alguns destes 619 00:45:04,690 --> 00:45:09,080 questões de consistência, como esta barra de ação é uma coisa nova para eles, ainda assim, 620 00:45:09,080 --> 00:45:16,010 tipo de criação de experiência de usuário similar em todos os seus apps. 621 00:45:16,010 --> 00:45:20,650 Espero que você pode ir em frente agora e abrir Eclipse 622 00:45:20,650 --> 00:45:22,870 e fazer seus próprios aplicativos Android. 623 00:45:22,870 --> 00:45:30,240 >> Alguém tem alguma pergunta antes de encerrar com alguma coisa? 624 00:45:30,240 --> 00:45:34,410 Posso dizer que a resposta é 42. 625 00:45:34,410 --> 00:45:41,990 Bem, todo mundo feliz, e boa sorte codificação. 626 00:45:41,990 --> 00:45:44,990 [CS50.TV]