[Powered by Google Translate] [Seminário] [Apps Android (agora com jujubas!)] [Jordan Jozwiak] [Harvard University] [Isto é CS50.] [CS50.TV] Olá a todos, e bem vindo ao Apps Android (agora com jujubas!) Seminário. Chama-se agora com Jelly Beans, é claro, porque a mais recente versão do sistema operacional é chamado Jelly Bean. Quando eu falei sobre Android no ano passado e fez isso, basicamente, mesmo seminário Eu estava apresentando os padrões de design e escolhas estilísticas para Gingerbread, apesar de Ice Cream Sandwich tinha saído na época, e isso é algo que nós vamos falar sobre ir para a frente um pouco. Android, é claro, tem alguns problemas com a fragmentação, para o mais recente sistema operacional do Google é normalmente realmente não vai se tornar comum entre os usuários para potencialmente até um ano, infelizmente. Mas desconsiderando isso, vamos falar sobre muitas razões pelas quais Android é muito melhor do que o iOS. Ok, vamos falar sobre Android vs iOS, alguns paradigmas de design, como você vai se configurar em apenas um slide, ea grande diferença entre este eo ano passado é que eu só quero zoom através de algumas coisas conceituais que trabalham com o sistema operacional e, em seguida, entrar em um exemplo muito básico. Na verdade, apenas o exemplo que o Google descreve para a construção de seu primeiro aplicativo, e nós vamos passar por isso juntos e apenas descrever. Eu sei que muitos de vocês têm apenas codificado em C, para Java já vai ser uma perspectiva diferente, e desta forma você vai obter seus pés molhados e se sentir um pouco mais confortável com ele, esperançoso. Um resumo rápido, Android vs iOS. No Android não há essa taxa desenvolvedor único de US $ 25, nada dessa coisa de $ 100 por ano. Não há restrições, o que significa que se eu quiser enviar um aplicativo, Acabei de enviá-lo, e não há nenhum processo de aprovação como existe para iOS. Você começa a se desenvolver com Java usando Eclipse, que é multiplataforma, por isso não importa se você tem um Mac, Windows ou uma máquina Linux. Claro que, com iOS você tem que usar o Xcode em um Mac, e Android é usado por muitas mais pessoas, por isso, se você quiser que seu aplicativo para ter algum tipo de visibilidade, ou talvez fazer um pouco de dinheiro a partir de anúncios você é provavelmente mais susceptíveis de beneficiar de Android. E uma coisa que sempre foi conhecido sobre Android é a quantidade extrema de personalização, enquanto o iOS é muito fixo em seus caminhos para que eles possam manter a segurança eo controle sobre todos os aspectos pouco do projeto dentro de seu sistema operacional e os aplicativos individuais. Android é a forma muito livre, e não há tantas possibilidades mais. Ok, alguns paradigmas de projeto. Observe aqui como iOS tem tablets e iPhones e iPod Touches eles têm de suportar, por exemplo, como uma dúzia de dispositivos, se você quiser apoiar coisas históricas também. Com o Android você tem que suportar centenas de dispositivos, por isso há algumas coisas que o Google vem tentando implementar para fazer o usuário experimentar um pouco mais consistente, mas nós também vamos falar sobre como isso significa que há questões de fragmentação que você sempre tem que estar ciente de apoio. Fragmentação significa que existem muitos sistemas operativos diferentes, muitos telefones diferentes com hardware diferente rodando Android, tudo ao mesmo tempo, de modo que este gráfico aqui remonta há cerca de 6 meses. Sim, 6 meses, e você pode ver como a banda mais escura no fundo é Jelly Bean, que saiu durante o verão, e você pode ver agora, provavelmente, cerca de 2% dos telefones tê-lo. Ice Cream Sandwich foi lançado mais de um ano atrás, e um quarto dos telefones tê-lo. Há ainda uma grande quantidade de telefones que estão usando a versão do SO de anos atrás. Uma coisa que o Google tem tentado fazer para tornar a experiência do usuário muito mais consistente entre aplicativos está começando com Honeycomb, que é a versão tablet, então Ice Cream Sandwich e Jelly Bean, eles estão realmente tentando enfatizar o uso desta barra de ação, que é o que você pode ver aqui em cima, tudo aqui, incluindo este botão configurações pouco. É a escolha de design. Agora, sempre que você vê os três pontos significa clicar neste, e haverá um menu drop-down, que tem algum tipo de configurações. Isso só aparece porque eu cliquei no botão. Isso é algo que eles estão tentando usar para fazer aplicações um pouco mais consistente através da placa e assim o usuário tem um melhor senso de experiência uniforme. Ok, então no caso de você não ter feito isso já, ou se você está assistindo em casa então você pode seguir estes passos para configurar o ambiente de codificação. Vai envolver indo para o site aqui. Você pode instalar o Google Android SDK e seguir algumas descrições lá. Dizem-lhe tudo. Eles têm de instalar o SDK, download de Eclipse versão Classic, embora, é claro, que está programando em Java. Eles recomendam um presente, e então este ADT, as ferramentas de desenvolvimento do Android, é um plugin que você instala em Eclipse que permite ter uma experiência muito mais simples com o Android dentro do Eclipse. Ele vai lhe dar algumas interfaces gráficas de usuário para projetar os pontos de vista, e ele vai te dar muito mais apoio ea capacidade de lançar com o emulador e todo esse tipo de coisa. Framework de aplicação. Eu quero falar sobre como os projetos dentro de Android são estruturados, e depois vamos entrar em um exemplo rápido, e espero que você pode fazer perguntas a qualquer momento e se sentir confortável até o final da mesma. Temos algum jargão primeiro. Uma atividade é como a tela que você vê quando você iniciar um aplicativo. Toda a experiência é a atividade em si, assim que você poderia pensar nisso como uma tela ou um ponto de vista, mas na verdade é lado dele o código-fonte. Nós ainda chamar a parte de interface real do que um ponto de vista. É uma espécie de como como em pset 7 tivemos o controlador e, em seguida, a vista. A actividade é mais ou menos o controlador ea vista é o que estamos fazendo em termos de XML que está associada com a referida actividade. Fragmentos são algo que é implementado em Ice Cream Sandwich vai para a frente. É apenas uma idéia de tomar partes da vista ou a atividade e dividindo-os em áreas separadas, para que possamos tornar o código mais útil para estes muitos dispositivos diferentes que temos de apoiar, e é apenas uma forma de tentar também o fator mais código. Serviços são coisas de fundo como a reprodução de música ou direções de navegação potencialmente. Os provedores de conteúdo, estes são APIs dentro do sistema operacional que permitem acessar dados compartilhados, tais como informações de contato, e, em seguida, a intenção é algo que vai usar quando queremos lançar uma nova atividade de nossa atividade atual. Olá Android, este vai ser um projecto que vamos falar. Eu vou realmente fazer isso por você, e então nós vamos fazer uma coisa em que clicar em um botão com algum texto e iniciar uma nova atividade. Muito simples, mas eu quero passar que vai entrar em um projeto como este. Quando você faz o novo projeto você verá dentro de Eclipse há este projeto chamado Olá Android. Depois, há um monte de pastas aqui. O que você está realmente preocupado com são a pasta de origem, a pasta de recursos, os res, e em certa medida a pasta libs para as bibliotecas. E só por isso estamos na mesma página com o Se você fosse criar um novo projeto, você pode fazer isso aqui, então se eu quiser chamá-lo HelloAndroid, e, em seguida, ele automaticamente faz um monte de informações para nós. O nome do pacote é suposto ser um identificador único que normalmente seria associado com o site, se você tivesse um. Por exemplo, eu vou chamar este net.cs50.helloandroid. E eu já fiz esse projeto uma vez. Ok, me desculpe. Vamos chamá-lo HelloCS50. E então ele vai perguntar coisas como o tipo de ícone que queremos fazer. Isso tudo é por causa da interface do Android Developer Tools, o plugin que nós adicionamos a Eclipse, para que possamos escolher coisas como o ícone que queremos, e que entraria em que profundidade se quisermos. Mas no final, basta fazer o projeto, e tudo o que aparece aqui. Como mostrei na outra tela, temos a pasta de origem, e eu vou falar sobre o que tudo isso significa que em breve, mas você pode ver que imediatamente nos leva para a tela HelloCS50. Existem alguns botões mais aqui para adicionar texto e texto layouts de campo. É uma espécie de como XCode, mas infelizmente não é tão aerodinâmico. Mas os clipes será seu amigo e ADT em particular para fazer isso. Ok, a pasta de origem é o local onde os arquivos Java são realizadas, e isso é realmente o lançamento do seu programa. É basicamente como os controladores. A pasta de recursos ou a res é o lugar onde nós vamos manter layouts de tela, imagens, sons, texto, animação e tudo mais, libs, obviamente, bibliotecas. E o manifesto, é a maneira que o sistema Android sabe como interagir com seu aplicativo. Diz ele sobre permissões e quais atividades serão realmente executados. É toda a informação essencial que é necessário para executar o aplicativo. A pasta de origem é-se expandi-lo como você pode ver aqui. E um exemplo de que um código ficaria, este é o código padrão. Como nós o chamamos, MainActivity. Por padrão, temos onCreate, que é uma função que é chamada quando as cargas esta atividade, assim que você quer chamar onCreate (savedInstanceState). Isso irá restaurar os bits de informação no caso de o aplicativo foi interrompida. Há uma atividade gráfico ciclo de vida que você pode olhar para quando você começa um pouco mais em profundidade nele, mas o mais importante linha de código existe esta função setContentView que irá carregar o arquivo de recurso para o layout. Então, o que onCreate aqui é basicamente fazer é que está dizendo quando eu criar essa atividade eu quero carregar esse layout. E vamos falar sobre o que esse layout é em um segundo. Se tivéssemos que lançar isso aqui parece exatamente como este, e, por padrão, porque temos o Eclipse ADT fazendo isso e fazê-lo por nós isso é tudo código clichê que é criado por nós, e podemos seguir em frente e mudar as coisas que nós gostamos. A pasta de recursos, como eu disse, este é o lugar onde temos todos os layouts, drawables em termos de qualquer tipo de imagens- eles são chamados Drawables-e, em seguida, arquivos de som, menus. É uma maneira de um monte de XML em um bom fashion classificados. Como você pode ver, existem. Hdpi, LDPI, MDPI e pastas xhdpi para os drawables. Estes são diferentes densidades de tela, tão alta densidade de pixels por polegada, baixa densidade, de média densidade, densidade muito alta. Isto é, uma vez mais, para que possamos suportar todos esses diferentes dispositivos, e, idealmente, você terá imagens diferentes para cada resolução diferente. Layouts são onde se incluem todos os diferentes layouts que serão usados ​​em atividades diferentes. Eles também poderiam incluir layouts para fragmentos, o que significa, basicamente, atividades parciais. Se você quer fazer algo legal como sempre que você gira o telefone você quer ter um layout diferente, você pode fazer layout paisagem como uma pasta diferente, Android e automaticamente tem um monte dessas regras dentro da pasta de recursos, assim ele vai saber de olhar para pastas diferentes com base na configuração atual do telefone, que tipo de hardware que você está usando. Da mesma forma, este valores v11 aqui e os valores-v14 e os valores padrão esta pasta é para- assim, os valores de, por si só, este será os valores padrão em todas as versões do sistema operativo. Por outro lado, e v11 v14 corresponder com Honeycomb e Ice Cream Sandwich, respectivamente. Novamente, essas são formas que, dentro dessas pastas são diferentes cadeias e estilos, para que você possa personalizar a aparência do seu aplicativo ou potencialmente, até mesmo a sua funcionalidade, apesar de que, provavelmente, seria uma má idéia, dependendo da versão do sistema operativo. E eu conversamos sobre tudo isso aqui. Novamente, resgatáveis, matérias, layout, valores. Os padrões, se entrarmos em Olá Android ou Olá CS50 agora vai ficar assim. Ele vai dizer Olá mundo. Como você pode ver aqui com o texto Android o texto para este ponto de vista do texto, que é, basicamente, apenas um rótulo, é o que nós chamamos no iOS. Ele tem essa notação engraçado @ string / hello_world. Isto é assim que pudermos, vamos tentar extrair todas as cordas, todas as strings codificadas em Android em uma pasta separada, que passa a ser em values.strings. Se olharmos aqui, podemos ver que temos uma série hard-coded guardado aqui em Olá mundo, e é chamado Olá mundo, e isso é uma espécie de decisão de projeto comum em várias plataformas que pretende- cordas são o tipo de coisas que queremos ser potencialmente capaz de mudar. Nós não queremos controlar F em nosso arquivo de código fonte em nosso XML. Queremos ser capazes de mudar isso sempre que temos a chance. Este arquivo XML, strings.xml, é uma maneira de extrair strings codificadas que seriam de nossos recursos de layout ou em nosso código fonte. O manifesto é onde guardamos essa informação essencial sobre o aplicativo. Ele inclui o nome do pacote. Isso tem de ser um identificador único. Ao contrário da App Store para iOS os nomes das aplicações não tem que ser único, e você pode de fato mudar o nome do seu aplicativo depois de submetê-lo, então se eu começar com Angry Birds, e então eu fazer uma atualização, e eu não quero lançar uma nova versão Acho que eu poderia chamá-lo de Angry Birds 2, enquanto eu estou no mesmo ciclo de lançamento. Seria apenas mostrar-se como uma atualização. A única coisa que tem de ser único é este o nome do pacote, que muitas pessoas não vão ver. Bem, você só veria se estivesse olhando para o código-fonte ou se existe algum tipo de erro. Os componentes incluem atividades, por isso temos de declarar qualquer tipo de atividade que usamos. Esta é uma permissão tipo de coisa. Como o Android não tem esse processo de aplicação rigorosa para a apresentação de aplicações em vez disso, simplesmente tudo baseado fora de permissões e declarando coisas no manifesto. A versão SDK também é importante. Podemos definir uso como SDK versão mínima coisa. Obviamente, você quer criar um código e projeto para os sistemas operacionais mais recentes. Talvez não seja o mais novo, talvez não Jelly Bean. Talvez você queira projetar principalmente para Ice Cream Sandwich, embora sejam praticamente a mesma em termos de decisões de projeto e as bibliotecas e APIs reais. Mas ao invés de ter pessoas do original Android versão Donut como caminho de volta quando, que ainda acontecem estar usando que tentar fazer o download do aplicativo e, em seguida, dizer ele não funciona no meu telefone, você pode definir a versão mínima e que ele seja Gingerbread ou Ice Cream Sandwich ou o que você sente Enviando confortável. E este é um exemplo do Manifesto. Podemos olhar para o real em um bit. Ok, vamos seguir em frente com o demo agora. Este é o demo, se você Google Android construir seu primeiro aplicativo ou algo parecido. Nós vamos passar por tudo o que está acontecendo lá dentro, e muito, apenas para uma referência que aqui sabe Java em qualquer medida? Ok, então Java é uma nova linguagem de codificação para a maioria das pessoas saindo do CS50. Resumidamente, para ir mais uma vez o que diz aqui, o que nós queremos fazer é, em vez de ajustar esta aplicação Olá mundo que tudo que faz é se lança e diz Olá mundo e ele diz Olá CS50 no topo, porque esse é o nome da atividade vamos tentar fazer um campo de texto e um botão para que, quando pressionar este botão levará o texto do campo de texto e iniciar uma nova atividade, e ele vai dizer seja o que for que o texto disse na atividade, e isso é relativamente simples. Não é muito interessante. Você não gostaria de liberar qualquer aplicativo como este. Mas demonstra algumas coisas importantes do projeto. Nós vamos ter que interagir com o manifesto, com os arquivos de layout, com o código fonte, e você pode ver como iniciar uma atividade da outra. Vamos começar com o layout para nossa primeira atividade, que eu sei que é uma espécie de pequeno, mas como você pode ver, agora, tudo isso é que tem o nosso logotipo que criamos, o nome da atividade, e ele diz Olá mundo no centro. Em vez disso, eu estou indo primeiro para fazer isso em um layout linear, um layout familiar, e estas são todas as coisas você pode olhar para cima e vale a pena ir mais em algum momento, em termos dos layouts. É muito parecido com HTML. Dissemos que não é realmente vale a pena conhecer em termos de um sentido programático, mas há tantos layouts diferentes que você pode controlar, e é como CSS em termos de estilos. Há muita coisa acontecendo apenas em termos de estética aqui, E sim, vale a pena aprender, mas é o tipo de coisa que você deve olhar para cima como você vai e você sente que precisa de algo novo. Eu posso tirar proveito de algumas das ferramentas ADT aqui, pelo menos para começar com. Eu vou fazer um campo de texto, e eu vou fazer um botão. Coloque-os um ao lado do outro. Eles já redimensionar adequadamente. Desculpe, mais uma vez, voltando à diferença entre o layout linear e disposição relativa, um layout linear dá um pouco mais de funcionalidade em termos de preenchimento de espaço e certificando Posicionamo coisas horizontalmente ou verticalmente. A grande diferença entre um layout linear e um layout em relação é a relativa disposição posições tudo em relação a outros pontos de vista, ea única coisa boa sobre isso é que leva menos tempo para desenhar porque o sistema operacional olha para todo o código e diz que isso vai em relação a este aqui, aqui. Isso significa que ele faz menos medidas do que um monte de layouts lineares aninhadas, que eu teria que fazer se eu queria que as coisas vão verticalmente aqui. Eu já tenho algumas coisas acontecendo na horizontal, então eu precisaria de um layout linear diferente para inserí-las na vertical, mas se eu estivesse fazendo um layout parente eu poderia dizer manter esta para a esquerda, isto para a direita e estas coisas abaixo. Mas porque eu quero que eles enchem agora eu vou usar um layout linear, e você pode vê-lo já faz um monte dessas coisas para nós. Todas as exibições precisa ter uma propriedade de largura e altura, e isso acontece a ter um peso de 1, e este tem um peso de 1 de modo que ele preenche a totalidade do espaço. Mas a largura ea altura são as mais importantes. Este campo ID aqui não é importante no layout real a menos que nós estamos usando um esquema relativo e dizer que podemos referenciar uma vista em posição de referência para o outro. Se tivéssemos um layout em relação poderíamos dizer esta posição abaixo deste ou acima deste ID, mas este ID será importante quando estamos a usá-lo em nosso código, porque podemos referenciar esses pontos de vista individuais desta maneira. E então você pode ver o requestFocus tag, que é algo que você provavelmente viu em pset 7. Houve uma tag foco automático ou algo nesse sentido para um dos campos. E uma coisa, é claro, não podemos fazer como em HTML, e observe uma das coisas agradáveis ​​sobre ADT é que autocompletes aqui. Talvez não tão bem como o fez no XCode, mas ele faz, no entanto, e poderíamos dizer dica e, em seguida, dar-lhe algum tipo de corda como escrever uma mensagem, e se eu dar-lhe um momento, também notar que eu tenho um pequeno erro aqui dizendo que devemos usar um recurso de cadeia para isso, então se eu deixá-lo fazer algum do trabalho duro para mim Eu posso selecionar essa string, fazer refrator Android e extrato de corda Android. Eu posso dar-lhe esse nome, escreva uma mensagem, eo que ele fez agora é substituído essa seqüência hard-coded com uma referência à seqüência no arquivo xml da string., o que significa que agora é aqui. E eu sei que parece um pouco mais de trabalho trivial e como, neste ponto, mas quando você tem um monte de coisas, um monte de cordas, que é realmente importante, particularmente para a localização porque, como mencionei anteriormente, o Android é um sistema operacional muito utilizado no mundo que você pode simplesmente fazê-en valores ou valores-sp ou algo para o inglês ou espanhol ou outras línguas. E então você provavelmente não ter tido essa experiência ainda uma vez que não fez muito JavaScript em termos de programação web, mas também podemos fazer neste campo chamado onClick do botão, e esta é uma maneira de fazer referência dentro de nosso layout que queremos que uma determinada função a ser chamado em nosso código fonte. Vou chamar essa sendMessage, e, a fim de fazer este trabalho o que significa na atividade principal aqui Vou ter que criar uma função que é público de modo que possa ser acessado pelo esquema. É vazio, porque você simplesmente não quer que ele retorne nada. Vamos chamar-lhe sendMessage, e ele tem uma visão, , que é um tipo de contexto que pode ancorar este método esse ponto de vista individual quando estamos executando-o. E eu não sei se você notou, bem, você não tenha notado, mas neste momento aqui este ponto de vista é um tipo que ainda não foi incluído, e, claro, todos sabem do CS50 sobre não incluindo os tipos. A coisa agradável sobre como o Eclipse IDE é que se você esquecer de incluir um tipo que vai sublinhar com um pouco de vermelho rabiscada e, em seguida, dar-lhe a opção de importar a vista. Uma maneira rápida de fazer isso é controle de mudança O, e vai importar todos os arquivos que ele precisa. Agora que temos essa função sendMessage, que vai enviar mensagem do MainActivity para uma nova atividade, vamos ter que usar a intenção de lançar a nova atividade a partir de um presente, então provavelmente vamos querer criar uma constante global ou também particularmente uma constante pública que vai nos ajudar a saber como vamos fazer referência a string porque quando nós criamos uma intenção que não estamos apenas chamando uma nova atividade, mas também podemos dar-lhe um conjunto de informações. Um pacote é na verdade o termo que usa o Android, e é uma forma de dizer dar-lhe dados adicionais, que não pode ser de um tipo de dados muito sofisticado, mas podemos definitivamente incluir booleanos ou cordas ou ints. Esse tipo de coisa. Sinta-se livre para perguntar sobre qualquer uma destas eliminatórias aqui, público final, estático. Público é o importante. Isso significa que podemos acessar esta variável de outros arquivos de código fonte por exemplo, quando criamos uma nova atividade. Podemos referenciar a string dentro deste arquivo. Se é privado, isso significa que ele é limitado a este arquivo individual aqui. Mas nós vamos chamar isso de algo como mensagem extra. Agora nós fizemos essa função e, se clicar no botão, esta função será chamada. Mas nós não fizemos nada, obviamente, com a função. O que nós queremos fazer agora é criar uma nova atividade, a atividade que vai ser realmente lançado. Em Eclipse, podemos dizer, a atividade Android novo, atividade em branco. Podemos dar-lhe um nome. Vamos chamá-lo de nossa atividade resultado. E então este campo pai hierárquico é uma forma de especificar como as actividades estão relacionados uns com os outros. Porque este será iniciado a partir da outra atividade devemos especificar que ele tem a principal atividade pai. E eu poderia ter clicado no próximo campo lá, o que nos teria dito alguns campos opcionais que também se incluem, mas a coisa agradável sobre ADT, mais uma vez, é que se eu rolar aqui no Manifesto lembre-se que tudo isso realmente foi incluído por padrão quando criou o projeto, e agora porque usamos este criar uma nova atividade ao invés de apenas adicionando nosso próprio arquivo de classe porque nós fomos através da sua interface gráfica para fazer isso já adicionado tudo isso para o manifesto para nós, o que só significa que agora o sistema operacional não vai reclamar quando tentamos lançar esta atividade. E também, é claro, deu-lhe um rótulo, que também aparece em strings. Ele faz um monte de coisas no back-end para nós. De qualquer forma, agora que temos esta atividade resultado, bem como, o arquivo de código fonte real na pasta de origem, e você pode ver a abordar brevemente esta- porque disse isso sobre a mãe hierárquica ele deu esse android.r.ide.home campo neste onOption coisa selecionado. O que isto está basicamente dizendo é que há um botão de menu agora que no canto superior esquerdo da tela se eu voltar para o PowerPoint em que falou pela primeira vez sobre a barra de ação por causa do pai hierárquica agora há uma pequena seta de volta aqui e isso é clicável por isso, devemos ser capazes de, depois de rodar este app- voltar, e é uma maneira de salvar-nos um pouco de código lá. Agora, dentro deste, bem, parece estar reclamando sobre isso por um momento. Vamos comentar isso. Agora, a fim de realmente interagir com estas duas actividades, temos que criar uma intenção que inclui todos esses dados. Em sendMessage agora vou cruzar com alguns pedaços de código e explicar que como eu ir. Uma intenção, como eu disse, é uma maneira de lançar uma atividade de outro. Intenção é o tipo. Estamos criando um minhaIntencao variável. E isso é realmente um objeto, é por isso que temos que chamar de novo. É comum o uso de Java lá, o que pode demorar um pouco de tempo para se acostumar. Isso significa que estamos usando a atividade ou o MainActivity classe, ea intenção dessa forma leva a atividade que vai de ea atividade que vai, que chamamos de ResultActivity, e que é a sua própria classe. Incluir isso. E então, como eu mencionei antes, nós demos esse ID ao campo de texto de edição ea exibição de texto, por isso, a fim de capturar programaticamente o texto que existe no EDITTEXT usamos esta função chamada findViewById, que é semelhante a algo que você vai usar ao tentar obter os campos do DOM. Talvez Davi fala sobre isso na palestra. Mas é apenas uma forma de obter os-é por isso que marcar essas coisas com esses campos. Id.editText1. Já está autocompleting para mim lá. E então vamos também incluir-este EDITTEXT agora que temos o campo dentro do nosso programa, tudo o que fez foi basicamente findViewById Você pode pensar nisso como nos dar uma referência a esse EDITTEXT. Agora queremos obter a seqüência ou a mensagem dentro desse EDITTEXT que podemos fazer usando o você poderia pensar EDITTEXT como um struct- chamamos isso de um objeto em Java com um monte de diferentes métodos ou campos e atributos ligados a ele. Quando eu digo EDITTEXT. dá-me a oportunidade de acesso a um método como getText, que receberá o texto atual em que EDITTEXT e depois converter esse explicitamente a uma corda, e nós salvamos a mensagem. Agora nós realmente queremos fazer algo com essa intenção que criamos há poucos momentos. Vou colocar extras, como é chamado na intenção, que, mais uma vez, como eu disse antes, esta é uma maneira de criar o pacote com um monte de dados. Mensagem extra é a nossa marca, de modo que sabemos o que estamos economizando este abaixo, e então eu estou incluindo a mensagem. E então nós podemos realmente começar a atividade, dando-lhe o minhaIntencao parâmetro. E isso vai realmente iniciar a atividade, por isso desde que eu atualizado para o Windows 8 pode haver alguns erros que aparecem momentaneamente, mas tente ignorá-los. E este é o emulador Android. Esperemos que o código vai realmente aparecer em um momento. Mais uma vez, ignorando todas essas pequenas coisas. Mas o emulador Android você pode emular qualquer versão do sistema operacional desde os primeiros queridos, Donut, Gingerbread. Este é Jelly Bean 4.1. Mas como você pode ver agora, isso é algo que fizemos. Isto tem a MainActivity, o EDITTEXT, o botão. Eu posso escrever algo aqui, mas o que estamos perdendo neste momento? Fizemos a campo no MainActivity que vai enviar a mensagem a outra atividade, mas neste momento não ter feito nada na outra atividade, de modo que não vai receber nada. Vamos terminar essa parte antes de seguir em frente. Esta atividade de resultado, o que você precisa fazer é que você precisa fazer é precisaremos- também podemos referenciar a intenção nesta atividade, por isso temos de captar a intenção, que é muito simples. É uma função incluída na classe de atividade, para que possamos dizer "Get a mensagem da intenção." "Intenção minhaIntencao = getIntent". E isso vai dar-nos-agora minhaIntencao é um objeto, que é uma referência à intenção que nos levou a esta atividade. MainActivity chama e dá a informação extra para resultar atividade. Atividade resultado agora olha para a intenção que levou aqui, e podemos acessar a mensagem de que nós criamos no outro, getStringExtra, e isso vai autocomplete para mim. E então lembre-se, da maneira que marcou aquele pedaço de dados era, dando-lhe este campo aqui, esta cadeia pública, que é a tag para a cadeia que realmente incluídos. Se eu disser MainActivity.Extra_Message é logo ali, e isso é mais ou menos como o nome do parâmetro quando passamos código do controlador para o modelo, quando nós diríamos título flecha alguma coisa. É o mesmo tipo de idéia lá. Agora, lembre-se disso. Tivemos também esta auto criado ou auto código gerado para a actividade resultado, que inclui o ponto de vista de texto no meio que diz: Olá mundo. Que poderia fazer que maior. Vamos fazer isso primeiro. Poderíamos fazê-lo 40 densidade pixels independentes. Vamos ver, isso é super enorme. Isso vai ficar bem. E, em seguida, a fim de referenciar este ponto de vista de texto individual dentro do nosso código teremos que dar a ele uma identificação, e, a fim de fazer o que dizemos @ + id, o que significa que atribuí-la ID. Se nós apenas dissemos @ id seria assumir que estamos fazendo referência a um ID que já existe, e vamos chamar essa nossa resultTextView. E notem que, em XML, não há necessidade de ponto e vírgula ou qualquer coisa. Tudo está dentro dessas tags. É muito semelhante ao HTML em uma série de sentidos. Leva um pouco de tempo para se acostumar, mas eventualmente você vai se sentir muito confortável com ele. Vamos atualizar o texto para a nossa visão de texto resultado, e como fizemos quando estávamos recebendo esse campo de edição de texto em nossa outra atividade em MainActivity Aqui vamos também da mesma forma- vamos encontrar o ponto de vista pelo ID. E R, no caso de eu não mencionei isso antes, é a referência para a nossa pasta de recursos, e, em seguida, ID é uma referência para tudo na pasta de recursos, todos os IDs, e resultTextView. E assim como antes, resultTextView é um objeto, o que significa que tem todas estas propriedades associados. Quando usamos getText para a edição de texto para este campo de texto ou a exibição de texto podemos realmente usar setText, e então já encontrou a mensagem da intenção, para que eu possa dizer a mensagem, e isso vai realmente definir a mensagem. É um momento para lançar, em seguida, podemos ver se é ou não cai, mas qualquer dúvida sobre esse processo ali mesmo, esse tipo de interação? De muitas maneiras, é simples. A razão pela qual eu estou passando por algo relativamente simples é, novamente, porque você começa a ver a interação entre o layout, o código-fonte, como é que as coisas referência e talvez ter um pouco de exposição à forma como Java trabalha lá. Se eu realmente escrever algo aqui, como ohai, e então clique no botão, lança uma nova atividade, e que a visão texto diz ohai. Isso é muito simples, mas espero que depois disso exemplo você meio que ver como essa interação funciona, e agora que a bagunça de arquivos no lado esquerdo de todas essas pastas do projeto, esperamos que você sabe onde olhar agora. Esta é a sua área de código-fonte. Layout é realmente a única coisa que você vai lidar com até incluir imagens e os drawables ou qualquer outra coisa, e os valores, que incluem cordas, como já mencionamos, e, em seguida, estilos é algo que é uma espécie de como CSS. Abordá-la quando quiser, mas até que você se sinta confortável com a adição de toque extra para a sua aplicação, não há necessidade de se preocupar muito com isso. Só para encerrar uma outra coisa que você certamente vai querer incluir- supondo que você deseja integrar recursos legais e poupar alguns extras codificação- seria incluir bibliotecas terceiro partido. Aqui é o cara Android pouco com o chapéu de Sherlock Holmes. Esta é uma barra de ação Sherlock biblioteca, o que significa, basicamente, que barra de ação que você viu anteriormente, que agora é padrão em Ice Cream Sandwich e Jelly Bean, Se você quiser trazer esse tipo de experiência do usuário para os usuários em versões antigas e salvar-se de se preocupar com a forma como o usuário vai navegar em versões mais antigas quando a coisa não está lá você pode incluir esta biblioteca e então você apenas tem que referência em vez do Android padrão bibliotecas para a barra de ação, você faz referência a esta biblioteca de apoio. Coisas como Scoreloop, é ótimo se você está indo para incluir um jogo. Ele permite que você adicione quadros de líderes e conquistas para games. A AdMob é uma maneira de colocar anúncios em seus aplicativos no caso de você querer fazer um pouco de dinheiro com isso. Claro, existe Facebook e Twitter para integrar lá se você quiser compartilhar as coisas com facilidade, et cetera. Dropbox, da mesma forma, e Google Analytics é que o gráfico olhar lá. Isso vai ser muito importante se você realmente quer ver quem está interagindo com seu aplicativo ou quem é, como eles interagem, et cetera. Google, por padrão, diz-lhe um monte de estatísticas sobre que tenha instalado o aplicativo e que os telefones que eles têm, as versões de sistemas operacionais que eles têm. Mas se você quiser ver quem está usando-o em uma base diária e como usá-lo então você vai querer incluir algum tipo de sistema de rastreamento assim. Quando você estiver pronto para distribuir seu aplicativo Eu não preciso de ir para que em muita profundidade. Clique no link aqui, Google Play. Ela costumava ser o mercado Android. Eles rebatizada tudo com Google Play, então agora você se submete a isso. É muito simples. Você tem que incluir uma descrição, algumas screenshots. Como eu disse, não há nenhum processo de aprovação como iOS. E para onde ir a partir daqui? Eu mostrei-lhe um exemplo muito simples. Esperemos que se parece terrivelmente simples então isso é provavelmente um bom sinal. Se você em tudo me senti um pouco confuso ou inseguro sobre exatamente o que eu estava escrevendo que também é bom, mas a partir daqui ir ao Google Guides. Este é um ótimo lugar para começar. Ele vai falar com você através do que eles esperam em termos de design do aplicativo, como os utilizadores normalmente interagem com ela. É muito mais de forma livre do que iOS, eu diria, que parece vistas da tabela são-Eu não sei, isso é o seu pão e manteiga. Tudo é uma exibição de tabela deslizando para cima e para baixo. Com Android eles definitivamente incentivar as pessoas a olhar para ele a partir de um monte de diferentes perspectivas. Quando você inclui o kit de desenvolvimento de software neste ADT Por padrão, você tem um monte de exemplos de projetos em Android. Aqui, Android, Android Sample Project. Se eu clicar sobre isso, então eu posso escolher a versão para a qual a amostra de projetos de aplicar. Há um monte de coisas diferentes aqui. Ela começa com a compatibilidade barra de ação, jogo acelerômetro, backup e restauração, Bluetooth, construtor gesto. Jetboy é um jogo de amostra que eles lhe dão, como é LunarLander. Há um monte de aplicativos de exemplo aqui, e todos eles estão destinados a diferentes aspectos da API do Android, ea idéia é que, como você faz o seu pedido você não precisa saber tudo sobre o Android para fazer um app Android. Você só tem que aprender sobre as partes que você está realmente vai usar. Olhe para estas bibliotecas de samples. Sinta-se livre para copiar e colar o código e reaplicá-lo. É uma grande coisa para olhar para o código mais difícil e tentar compreendê-lo, o que é, naturalmente, porque em CS50 que muitas vezes dão-lhe grandes quantidades de código fonte. Vejam-se alguns destes se você estiver indo para usar bibliotecas semelhantes e, em seguida, aplicá-lo em seu próprio código. E, claro, existem tutoriais. Procurar tutoriais. Eu encontrei um monte de bons on-line que pode levá-lo até a velocidade com que fragmentos realmente são e como você pode usá-los. Algumas dessas novas coisas de design, como fragmentos, você realmente não tem que estar preocupado com a menos que você está fazendo uma muito grande no escopo do projeto. São coisas que o Google está tentando eliminar dentro Stackoverflow é, naturalmente, o seu amigo. Espero que eu vendi-lhe um pouco sobre o Android, percebendo que é muito mais fácil de se aproximar em termos de apenas a linguagem de codificação. Java é que eu diria muito mais fácil de entender do que Objective-C. Android está crescendo Eu acho que muito mais do que o iOS. Quer dizer, os dados estão lá também, além do que eu penso. Vai ser em torno de um tempo, e eles são poucos anos atrás em termos de seus ciclos de projeto, por isso é uma espécie de compreensível que eles ainda estão trabalhando através de alguns destes questões de consistência, como esta barra de ação é uma coisa nova para eles, ainda assim, tipo de criação de experiência de usuário similar em todos os seus apps. Espero que você pode ir em frente agora e abrir Eclipse e fazer seus próprios aplicativos Android. Alguém tem alguma pergunta antes de encerrar com alguma coisa? Posso dizer que a resposta é 42. Bem, todo mundo feliz, e boa sorte codificação. [CS50.TV]