Boa noite leitores,
Hoje vi no Twitter uma ótima oportunidade para desenvolvedores Mobile. A Empresa de telefonia móvel Oi iniciou um projeto que irá selecionar os melhores aplicativos mobile com foco nas Olímpiadas e na Copa do Mundo que teremos nesses próximos anos. Vale a pena conferir e quem sabe até se candidatar.
Para isso, acesse o link http://www.oi.com.br/ArquivosEstaticos/oi/Programa-Oi-Inovacao/index.html
Mostrando postagens com marcador Android. Mostrar todas as postagens
Mostrando postagens com marcador Android. Mostrar todas as postagens
quinta-feira, 27 de outubro de 2011
quarta-feira, 26 de outubro de 2011
A simplicidade de Angry Birds alavanca seu sucesso?
Bom dia leitores,
Desculpem a demora em postar novamente, mas o trabalho, a faculdade, meu livro (Territórios), meus estudos particulares e minha vida social tem tornado quase impossível postar. Eu sei que ainda estou devendo a última parte do BrainTrainer, mas prometo que logo que tiver um pouco mais de tempo, voltarei a postar com maior regularidade.
Hoje, no entanto, resolvi falar um pouco sobre Angry Birds da Rovio e do seu enorme sucesso, tanto que até foi confirmado uma versão cinematográfica da guerra entre "passarinhos" e "porquinhos".
Consegui no serviço um celular com Android e resolvi testar o famoso jogo que todos falavam a respeito chamado Angry Birds. Tratando o jogo cruamente, nada no Angry Birds seria sinônimo de sucesso nos dias atuais. O gráfico é no estilo "desenhando a mão" e sem muita diversidade de cores o que há muito tempo já foi substituído pelas milhares de cores que nem ao menos tenho capacidade de diferenciar. A complexidade do jogo também é extremamente simples. Seu objetivo é destruir os porquinhos malvados que roubaram os ovos dos passarinhos. Simples, não?
Pois é. Angry Birds, na verdade, não passa de um jogo casual, mas como um jogo casual alcançou tanto os jogadores casuais quanto até mesmo os hardcores. E o segredo disso pode ser justamente o simples.
Como jogador, tenho saudades dos antigos clássicos como Mario e Sonic. Contudo, também não posso deixar de entender a mudança de aspectos dos jogos porque tudo muda. O que me desanima bastante nos jogos atuais é o fracasso em mesclar excelentes gráficos com jogabilidade divertida, sons estonteantes e viciantes, etc.
Angry Birds não tem os gráficos de última geração, mas a 'tosquice' dos gráficos o torna tão divertido que até mesmo já existem bichinhos de pelúcia dos Angry Birds. Os sons não são trilhas sonoras de orquestras sinfônicas, mas os efeitos são engraçados aproximando-se aos de Worms. A jogabilidade é extremamente simples, basta "puxar" o passarinho no estilingue e lançá-lo nos porquinhos. No entanto, os ladrõezinhos estão, na maioria das vezes, em lugares bem complicados de serem pegos.
Por isso, para quem gosta de jogos, Angry Birds faz juz ao sucesso repentino. Outro ponto positivo é o preço. Na AppStore, com apenas $0,99 você pode adquirir o jogo enquanto no Google Market ele é gratuito (logicamente é necessário ter os respectivos sistemas operacionais para rodar o jogo).
Link para baixar Angry Birds no Android Market.
Link para baixar Angry Birds no AppStore.
NOTAS:
Trilha sonora: 7
Efeitos sonoros: 9
Jogabilidade: 10
Gráficos: 9
Média: 8,75
Desculpem a demora em postar novamente, mas o trabalho, a faculdade, meu livro (Territórios), meus estudos particulares e minha vida social tem tornado quase impossível postar. Eu sei que ainda estou devendo a última parte do BrainTrainer, mas prometo que logo que tiver um pouco mais de tempo, voltarei a postar com maior regularidade.
Hoje, no entanto, resolvi falar um pouco sobre Angry Birds da Rovio e do seu enorme sucesso, tanto que até foi confirmado uma versão cinematográfica da guerra entre "passarinhos" e "porquinhos".
Consegui no serviço um celular com Android e resolvi testar o famoso jogo que todos falavam a respeito chamado Angry Birds. Tratando o jogo cruamente, nada no Angry Birds seria sinônimo de sucesso nos dias atuais. O gráfico é no estilo "desenhando a mão" e sem muita diversidade de cores o que há muito tempo já foi substituído pelas milhares de cores que nem ao menos tenho capacidade de diferenciar. A complexidade do jogo também é extremamente simples. Seu objetivo é destruir os porquinhos malvados que roubaram os ovos dos passarinhos. Simples, não?
Pois é. Angry Birds, na verdade, não passa de um jogo casual, mas como um jogo casual alcançou tanto os jogadores casuais quanto até mesmo os hardcores. E o segredo disso pode ser justamente o simples.
Como jogador, tenho saudades dos antigos clássicos como Mario e Sonic. Contudo, também não posso deixar de entender a mudança de aspectos dos jogos porque tudo muda. O que me desanima bastante nos jogos atuais é o fracasso em mesclar excelentes gráficos com jogabilidade divertida, sons estonteantes e viciantes, etc.
Angry Birds não tem os gráficos de última geração, mas a 'tosquice' dos gráficos o torna tão divertido que até mesmo já existem bichinhos de pelúcia dos Angry Birds. Os sons não são trilhas sonoras de orquestras sinfônicas, mas os efeitos são engraçados aproximando-se aos de Worms. A jogabilidade é extremamente simples, basta "puxar" o passarinho no estilingue e lançá-lo nos porquinhos. No entanto, os ladrõezinhos estão, na maioria das vezes, em lugares bem complicados de serem pegos.
Por isso, para quem gosta de jogos, Angry Birds faz juz ao sucesso repentino. Outro ponto positivo é o preço. Na AppStore, com apenas $0,99 você pode adquirir o jogo enquanto no Google Market ele é gratuito (logicamente é necessário ter os respectivos sistemas operacionais para rodar o jogo).
Link para baixar Angry Birds no Android Market.
Link para baixar Angry Birds no AppStore.
NOTAS:
Trilha sonora: 7
Efeitos sonoros: 9
Jogabilidade: 10
Gráficos: 9
Média: 8,75
sexta-feira, 23 de setembro de 2011
Nvidia - Projeto Kal-El: Glowball
Boa tarde a todos,
J'a faz um bom tempo que n~ao posto nada, n~ao e'?
Bom, estou com pouco tempo e ainda sem internet em casa, por isso n~ao consigo mais postar. Hoje, como 'e sexta e sendo uma exceç~ao, resolvi postar algo. No entanto, vou ser breve. At'e porque n~ao tem muito o que comentar sobre o v'ideo de demonstraç~ao do demo do projeto Kal-El chamado Glowball
'E sinceramente fant'astico.
J'a faz um bom tempo que n~ao posto nada, n~ao e'?
Bom, estou com pouco tempo e ainda sem internet em casa, por isso n~ao consigo mais postar. Hoje, como 'e sexta e sendo uma exceç~ao, resolvi postar algo. No entanto, vou ser breve. At'e porque n~ao tem muito o que comentar sobre o v'ideo de demonstraç~ao do demo do projeto Kal-El chamado Glowball
'E sinceramente fant'astico.
sexta-feira, 16 de setembro de 2011
Square-enix reavivando grandes clássicos para Android
Boa tarde leitores,
Como amante dos antigos rpgs como Chrono Trigger, Secret of Mana, Final Fantasy entre tantos outros da geração do SuperNes, foi com grande satisfação que li a notícia no TechCrunch sobre o projeto da Square de desenvolver para o Android alguns dos seus grandes clássicos, em especial Chrono Trigger, o qual joguei milhares de vezes "zerando" e conhecendo todos os possíveis finais muito mais de uma vez.
Espero que o lançamento ocorra logo e que minha tablet também não tarde muito a chegar, afinal a greve dos Correios acabou me pegando em cheio...
Abaixo algumas informações sobre Chrono Trigger com algumas imagens. Espero que curtam e para ler a notícia na íntegra, clique aqui.
História tirada da Wikipedia:
O jogo tem inicio no Reino Guardia, no ano 1.000 AD, Crono é acordado por sua mãe e logo depois ele vai para a Feira do Milênio. Lá, ele conhece uma garota chamada Marle, que se torna sua amiga, e passam a andar juntos.
Na feira eles são convidados a testar a nova invenção de Lucca, melhor amiga de Crono. Essa maquina é um teletransporte, que Crono testa com sucesso, porém Marle ao testa-la, observa que o seu pingente começa a brilhar no instante do funcionamento da máquina, e, de repente, ela é sugada para dentro de um misterioso portal. Lucca então verifica que um portal dimensional foi aberto e Crono decide ir atras de Marle. Ao sair do portal Crono está na "Idade Média" (Middle Ages, 600 DC), onde ele descobre que está no passado e se dirige ao castelo de Guardia. Lá fica sabendo que a 'Rainha Leene, que estava desaparecida, foi encontrada.
Contudo ele descobre que a Rainha Leene encontrada, era na verdade Marle. Lucca também vem para essa época e Marle começa a desaparecer do seu plano de existência. Lucca conclui que Marle na verdade era a Princesa Nadia do tempo deles, e provavelmente uma descendente da Rainha Leene. Como a corte de Guardia encontrou Marle pensando ser Leene, as buscas pela rainha foram suspensas, o que levaria a morte de Leene em um futuro próximo, e por consequência, a de sua descendência inteira, incluindo a própria Marle. Crono e Lucca vão então em busca da verdadeira rainha, para então consertar a história. Eles conseguem cumprir a missão com a ajuda de Frog, um homem-sapo.
Usando a Gate Key de Lucca, Crono leva Marle de volta ao Castelo Guardia de seu tempo. Entretanto, o Chanceler de Guardia acusa Crono de tentar sequestrar a princesa. Como resultado, o chanceler condena Crono à morte. Com a ajuda de Lucca, ele consegue fugir da prisão, e Marle foge junto com eles para um portal que estava escondido na floresta que rodeia o castelo.
Viajando no portal, eles vão parar no futuro (2.300 D.C.), onde o mundo está em ruínas. De um computador dessa época eles vêem um vídeo do ano de 1999 A.D., que mostra um parasita alienígena, chamado Lavos, emergindo do fundo do planeta, e o destruindo completamente. Então, Marle convence Crono e Lucca a continuarem a viajar pelo tempo, a fim de evitar que Lavos destrua o futuro.
Pelo desenrolar do jogo novos amigos entram no time de Crono, como o robô nomeado Robo, uma mulher da pré-história chamada Ayla, e um homem-sapo chamado Frog. Opcionalmente, Magus, um dos antagonistas do jogo, pode entrar no time.
É isso. Para quem tiver a oportunidade de jogar Chrono Trigger, não a deixe escapar. O jogo está no patamar máximo tratando-se de games rpg.
Mais um grande abraço
Como amante dos antigos rpgs como Chrono Trigger, Secret of Mana, Final Fantasy entre tantos outros da geração do SuperNes, foi com grande satisfação que li a notícia no TechCrunch sobre o projeto da Square de desenvolver para o Android alguns dos seus grandes clássicos, em especial Chrono Trigger, o qual joguei milhares de vezes "zerando" e conhecendo todos os possíveis finais muito mais de uma vez.
Espero que o lançamento ocorra logo e que minha tablet também não tarde muito a chegar, afinal a greve dos Correios acabou me pegando em cheio...
Abaixo algumas informações sobre Chrono Trigger com algumas imagens. Espero que curtam e para ler a notícia na íntegra, clique aqui.
História tirada da Wikipedia:
O jogo tem inicio no Reino Guardia, no ano 1.000 AD, Crono é acordado por sua mãe e logo depois ele vai para a Feira do Milênio. Lá, ele conhece uma garota chamada Marle, que se torna sua amiga, e passam a andar juntos.
Na feira eles são convidados a testar a nova invenção de Lucca, melhor amiga de Crono. Essa maquina é um teletransporte, que Crono testa com sucesso, porém Marle ao testa-la, observa que o seu pingente começa a brilhar no instante do funcionamento da máquina, e, de repente, ela é sugada para dentro de um misterioso portal. Lucca então verifica que um portal dimensional foi aberto e Crono decide ir atras de Marle. Ao sair do portal Crono está na "Idade Média" (Middle Ages, 600 DC), onde ele descobre que está no passado e se dirige ao castelo de Guardia. Lá fica sabendo que a 'Rainha Leene, que estava desaparecida, foi encontrada.
Contudo ele descobre que a Rainha Leene encontrada, era na verdade Marle. Lucca também vem para essa época e Marle começa a desaparecer do seu plano de existência. Lucca conclui que Marle na verdade era a Princesa Nadia do tempo deles, e provavelmente uma descendente da Rainha Leene. Como a corte de Guardia encontrou Marle pensando ser Leene, as buscas pela rainha foram suspensas, o que levaria a morte de Leene em um futuro próximo, e por consequência, a de sua descendência inteira, incluindo a própria Marle. Crono e Lucca vão então em busca da verdadeira rainha, para então consertar a história. Eles conseguem cumprir a missão com a ajuda de Frog, um homem-sapo.
Usando a Gate Key de Lucca, Crono leva Marle de volta ao Castelo Guardia de seu tempo. Entretanto, o Chanceler de Guardia acusa Crono de tentar sequestrar a princesa. Como resultado, o chanceler condena Crono à morte. Com a ajuda de Lucca, ele consegue fugir da prisão, e Marle foge junto com eles para um portal que estava escondido na floresta que rodeia o castelo.
Viajando no portal, eles vão parar no futuro (2.300 D.C.), onde o mundo está em ruínas. De um computador dessa época eles vêem um vídeo do ano de 1999 A.D., que mostra um parasita alienígena, chamado Lavos, emergindo do fundo do planeta, e o destruindo completamente. Então, Marle convence Crono e Lucca a continuarem a viajar pelo tempo, a fim de evitar que Lavos destrua o futuro.
Pelo desenrolar do jogo novos amigos entram no time de Crono, como o robô nomeado Robo, uma mulher da pré-história chamada Ayla, e um homem-sapo chamado Frog. Opcionalmente, Magus, um dos antagonistas do jogo, pode entrar no time.
![]() |
| Capa do original para Super Nes |
| Entrada do jogo |
![]() |
| A diversidade de finais e a história de cada personagem são um dos pontos fortes do jogo |
![]() |
| Batalha final contra Lavos |
É isso. Para quem tiver a oportunidade de jogar Chrono Trigger, não a deixe escapar. O jogo está no patamar máximo tratando-se de games rpg.
Mais um grande abraço
RPG Destinia para Android
Bom dia leitores,
Ontem vi uma notícia muito legal e gostaria de ter postado ontem, mas como não foi possível devido a falta de tempo, decidi postar hoje sobre um rpg de produção do Gamevil's e que deve ser lançado em breve apesar de nenhuma data ter sido definida.
Destinia é um jogo de RPG também voltado a ação tornando as batalhas mais dinâmicas. No jogo, o jogador é Duke, um soldado imperial que foi preso após não acatar uma ordem imperial de assassinar civis inocentes. Na prisão, Duke é tratado pela princesa Cristal até se recuperar completamente. Os dois decidem formar uma aliança para escaparem da prisão e lutar contra o império. Quando Duke volta à sua cidade natal na esperança de encontrar sua paixão de infância, Lena, ele descobre que sua cidade foi brutalmente ocupada pelas forças imperiais. Por todo o caminho de Duke, perigos inimagináveis espreitam prontos para acabar com a vida do nosso herói.
Para aqueles que gostam de disputar contra os amigos, um sistema de PvP pode render alguns instantes de diversão e zoação com o amigo mais fraco.
Para aumentar "um pouco mais" a cascata de saliva que deve estar saindo da boca de vocês, aqui vai algumas imagens retiradas do site oficial do jogo (us.gamevil.com) e também um vídeo.
Boa diversão!
P.S) As imagens e vídeo referem-se a versão para iPhone e iPod Touch, mas espero que a versão do Android não deixe a desejar para dos seus "primos"
Ontem vi uma notícia muito legal e gostaria de ter postado ontem, mas como não foi possível devido a falta de tempo, decidi postar hoje sobre um rpg de produção do Gamevil's e que deve ser lançado em breve apesar de nenhuma data ter sido definida.
Destinia é um jogo de RPG também voltado a ação tornando as batalhas mais dinâmicas. No jogo, o jogador é Duke, um soldado imperial que foi preso após não acatar uma ordem imperial de assassinar civis inocentes. Na prisão, Duke é tratado pela princesa Cristal até se recuperar completamente. Os dois decidem formar uma aliança para escaparem da prisão e lutar contra o império. Quando Duke volta à sua cidade natal na esperança de encontrar sua paixão de infância, Lena, ele descobre que sua cidade foi brutalmente ocupada pelas forças imperiais. Por todo o caminho de Duke, perigos inimagináveis espreitam prontos para acabar com a vida do nosso herói.
Para aqueles que gostam de disputar contra os amigos, um sistema de PvP pode render alguns instantes de diversão e zoação com o amigo mais fraco.
Para aumentar "um pouco mais" a cascata de saliva que deve estar saindo da boca de vocês, aqui vai algumas imagens retiradas do site oficial do jogo (us.gamevil.com) e também um vídeo.
Boa diversão!
P.S) As imagens e vídeo referem-se a versão para iPhone e iPod Touch, mas espero que a versão do Android não deixe a desejar para dos seus "primos"
quinta-feira, 15 de setembro de 2011
Jogo BrainTrainer para Android – Parte 2
Bom dia a todos,
Primeiro de tudo,
desculpem a demora aí de quase uma semana para postar a segunda
parte do tutorial de como montar um jogo no estilo BrainTrainer
apenas utilizando elementos que já falamos aqui no blog e alguns
conceitos de programação, mas minha rotina está uma doidera e
quase não tive tempo de estudar Android, que o diga montar um post
mais elaborado, mas agora vamos para o que interessa: o Layout!
Lembrando que sou
péssimo em layout, então se vocês, leitores, acharem melhor
trabalhar de uma outra maneira o layout, sem problemas. Aqui passo
apenas o básico, no meu caso tratando-se de layout, seria meu
avançado ¬¬
Vamos listar os
elementos que teremos:
- Um campo <TextView> para a String “Score:”;
- Um campo <TextView> que exibirá o valor da pontuação do jogador;
- Um campo <TextView> que exibirá o valor referente ao primeiro número;
- Um campo <TextView> que exibirá o sinal da operação de acordo com o que tiver sido sorteado;
- Um campo <TextView> que exibirá o valor referente ao segundo número;
- Um campo <EditText> para o usuário digitar a resposta;
- Um campo <Button> onde o usuário irá clicar para enviar a resposta ao sistema e este iniciar as verificações.
Primeiro iremos pensar
nos dois campos que se referem a String “Score:”.
Iremos colocá-los lado a lado. Ou seja, precisaremos de uma maneira
de ao invés de alinhá-los verticalmente, alinhá-los
horizontalmente. Para isso, iremos criar dentro do
principal, outro com uma pequena diferença: ao invés de utilizarmos o atributo android:orientation=“vertical”, utilizaremos o valor da
orientação do layout como horizontal resultando
[i]android:orientation=“horizontal”.
Dentro desse layout
iremos adicionar os dois referentes a pontuação do
jogador. Atente no fato de que precisamos criar um nome de 'id' para
o que exibirá o valor da pontuação do jogador. No
meu caso, utilizei o nome 'score_text', mas isso fica de acordo com
cada um, lembrando que alterando o nome do 'id' no main.xml o
nome no código-fonte também deverá ser alterado. O código xml
ficará similar ao da imagem abaixo:
![]() |
| Layout 'header' com orientação horizontal e dois |
Certo. Então criamos o
'header' do nosso jogo. Agora precisamos criar o corpo dele no qual
será exibido os dois números juntamente com o sinal da operação.
Como no passo anterior,
precisaremos criar um com orientação
'horizontal'. Isso porque queremos que apareça o primeiro número,
ao lado dele o sinal e do lado do sinal mostraremos o segundo número.
O código fica semelhante ao do layout anterior, por isso não irei
explicar detalhado.
![]() |
| Layout 'body' com orientação horizontal e três |
E por último nosso
layout onde estará o <EditText> e o <Button>. Contudo, o
<LinearLayout> que utilizaremos para os dois componentes
citados terá a orientação 'vertical' assim como seu pai.
![]() |
| Layout 'user' com orientação vertical, um <EditText> e um <Button> |
Agora sim. Depois de
terminarmos nosso layout podemos rodar o código e ver como ficou.
Provavelmente algo semelhante a imagem abaixo será exibido e se você
chegou até aqui, agora é só programar as funcionalidades e teremos
um BrainTrainer básico para jogar.
![]() |
| Layout final |
Até a próxima e um
grande abraço para todos.
segunda-feira, 12 de setembro de 2011
Votem "Dancing Android Robot Man" p/ o quadro Dança dos Famosos
Não deixem de votar para o android participar do próximo "Dança dos Famosos" \o/
O marcante R-Type retorna agora para Android
É nostálgico, eu sei.
Para quem viveu nos anos 90 e teve a oportunidade de conhecer R-Type,
um jogo futurista com gráficos ótimos para a época, com certeza
entendem quando digo que quase senti lágrimas escorrerem pelos meus
olhos ao deparar com a notícia que R-Type estará disponível para
Android.
![]() |
| Capa do jogo R-Type |
R-Type foi produzido em
1987 (isso mesmo, bem no ano que nasci) e, pelo menos para mim,
conheceu sua época de ouro nos anos 90. Ainda que hoje em dia os
gráficos estejam muito defasados, R-Type tem o que muitos jogos da
época passada tem: simplicidade caminhando junto com a diversão.
Não estou dizendo que os jogos de hoje são chatos, até porque no
post anterior publiquei um jogo atual (Muffin Knight),
mas também não sou muito fã de jogos 3D.
Como a maioria dos jogos antigos, zerá-lo era quase uma epopéia. Nunca consegui apesar de passar horas na frente da TV e ficar de castigo sem recreio e sem poder brincar na rua por não fazer as tarefas de casa passadas pelas professoras.
Para
fãs de jogos com menos de 20 anos e que não chegaram a conhecer
R-Type, recomendo. Também para os mais velhos que nunca jogaram irão
se surpreender.
sábado, 10 de setembro de 2011
Muffin Knight
Bom dia leitores,
Não vai ser hoje que irei postar a segunda parte do jogo BrainTrainer que havia prometido. Irei explicar o motivo:
Essa semana tem sido muuuito corrida. Outra coisa foi que resolvi tentar mais uma vez utilizar o eclipse para desenvolver para Android e pasmém: não é que eu consegui?!
Pois é, então vou deixar o MotoDev Studio um pouco de lado já que adoro programar no eclipse.
Também tenho uma ótima novidade (pelo menos pra mim):
COMPREI UM TABLET COM ANDROID!!!
Ainda não é definitivo já que comprei no mercado livre e o pagamento vai ser feito apenas na segunda, mas mesmo assim estou muito ansioso para começar a testar minhas aplicações nele.
O tablet é o Tablet Orange Tb002 - Android 2.1 Wifi 3g. Espero que ele seja bom =D
Mas vamos ao assunto do post. Irei falar sobre um jogo que vi ontem e me pareceu ser muito divertido. Vocês logo perceberão que sou fã de jogos 2D e tenho certa birra com jogos em 3D (tudo bem, sei que é errado, mas os 2D são muito mais divertidos).
O jogo se chama Muffin Knight ou traduzindo para o português: Cavaleiro Muffin. Para quem não sabe, Muffin são aqueles bolinhos pequeninos que parecem mais mini-bolos...não sei muito bem como explicar, então aí vai uma imagem, mas nada de babar em cima do teclado.
Pois é, delícia não?
Muffin Knight, pelo vídeo também parece ser uma delícia de jogo. No jogo você é um cavaleiro e à medida que você recolhe os Muffins nas diversas fases, novos poderes e transformações são permitidas ao personagem. Os controles são simples tendo apenas o pulo e atacar.
Abaixo segue o vídeo do jogo e clique aqui caso queira ler a resenha feita pelo site Androinica.com
Não vai ser hoje que irei postar a segunda parte do jogo BrainTrainer que havia prometido. Irei explicar o motivo:
Essa semana tem sido muuuito corrida. Outra coisa foi que resolvi tentar mais uma vez utilizar o eclipse para desenvolver para Android e pasmém: não é que eu consegui?!
Pois é, então vou deixar o MotoDev Studio um pouco de lado já que adoro programar no eclipse.
Também tenho uma ótima novidade (pelo menos pra mim):
COMPREI UM TABLET COM ANDROID!!!
Ainda não é definitivo já que comprei no mercado livre e o pagamento vai ser feito apenas na segunda, mas mesmo assim estou muito ansioso para começar a testar minhas aplicações nele.
O tablet é o Tablet Orange Tb002 - Android 2.1 Wifi 3g. Espero que ele seja bom =D
Mas vamos ao assunto do post. Irei falar sobre um jogo que vi ontem e me pareceu ser muito divertido. Vocês logo perceberão que sou fã de jogos 2D e tenho certa birra com jogos em 3D (tudo bem, sei que é errado, mas os 2D são muito mais divertidos).
O jogo se chama Muffin Knight ou traduzindo para o português: Cavaleiro Muffin. Para quem não sabe, Muffin são aqueles bolinhos pequeninos que parecem mais mini-bolos...não sei muito bem como explicar, então aí vai uma imagem, mas nada de babar em cima do teclado.
![]() | ||
| Delícia de Muffin!!!! |
Pois é, delícia não?
Muffin Knight, pelo vídeo também parece ser uma delícia de jogo. No jogo você é um cavaleiro e à medida que você recolhe os Muffins nas diversas fases, novos poderes e transformações são permitidas ao personagem. Os controles são simples tendo apenas o pulo e atacar.
Abaixo segue o vídeo do jogo e clique aqui caso queira ler a resenha feita pelo site Androinica.com
quinta-feira, 8 de setembro de 2011
GetJar Gold disponibiliza apps free
Boa tarde leitores,
Eu sei que hoje já postei, mas não podia deixar passar essa excelente notícia para quem curte o Android.
Pouco depois da Amazon anunciar a promoção da sua AppStore na qual eles darão créditos aos desenvolvedores de apps para Android, o site GetJar anunciou que irá oferecer apps grátis para os usuário do Android. No entanto, para quem pensa que serão oferecidos apenas apps de qualidade duvidosa estarão enganados, pois títulos consagrados como AngryBirds estará disponível para download free.
Como não sei se isso irá durar muito tempo, é melhor aproveitar e já baixar as apps desejadas.
Para ler a notícia oficial, basta acessar o link clicando aqui.
Um grande abraço a todos.
Eu sei que hoje já postei, mas não podia deixar passar essa excelente notícia para quem curte o Android.
Pouco depois da Amazon anunciar a promoção da sua AppStore na qual eles darão créditos aos desenvolvedores de apps para Android, o site GetJar anunciou que irá oferecer apps grátis para os usuário do Android. No entanto, para quem pensa que serão oferecidos apenas apps de qualidade duvidosa estarão enganados, pois títulos consagrados como AngryBirds estará disponível para download free.
Como não sei se isso irá durar muito tempo, é melhor aproveitar e já baixar as apps desejadas.
Para ler a notícia oficial, basta acessar o link clicando aqui.
Um grande abraço a todos.
Jogo BrainTrainer para Android - Parte 1
Bom dia a todos,
Neste post iremos falar
sobre como fazer um joguinho no estilo BrainTrainer,
ou traduzindo ao pé da letra, Treinador de Cérebro. Para não ter
que ficar dando print das telas, irei postar o código inteiro para
download. Assim também facilitamos o tráfego no blog. Outro ponto
importante é que iremos dividir o assunto deste post em três. No
primeiro iremos discutir um pouco sobre o estilo de jogo ao qual
BrainTrainer segue. No
segundo, montaremos o layout do game, isto é, codificaremos o
arquivo 'main.xml'.
Aqui gostaria de deixar uma ressalva: eu
sou péssimo em layout, então o jogo, como vocês poderão notar,
irá ficar com uma cara péssima, mas a jogabilidade ficará boa
(assim espero).
E por último iremos tratar do código da classe principal.
Então
vamos falar um pouco sobre o BrainTrainer
e a ideia que seguiremos para implementar nosso jogo, afinal é muito
importante antes de começar a programar, definir o que será
implementado, as funcionalidades e outras coisas que no meio da
implementação pode nos dar dor de cabeça caso não a tenhamos
definido de maneira sucinta.
BrainTrainer,
em linhas gerais, consiste num jogo de perguntas rápidas no qual o
usuário deve responder o mais rápido que conseguir, logicamente
acertando as questões. No nosso game, no entanto, não iremos
trabalhar com um limite de tempo, mas caso você, leitor, deseje
tornar o jogo mais desafiante, pode fazê-lo facilmente apenas com o
conhecimento em Java e na classe Timer. Já joguei jogos nesse estilo
desde memorizar sequências a fazer cálculos e meu preferido era
justamente o último citado. Então vamos definir alguns pontos
importantes do nosso jogo:
- Teremos dois números que serão sorteados aleatoriamente num intervalo de 1 ao 10. Podemos mais tarde aumentar esse intervalo para tornar o desafio mais difícil, contudo vamos deixar com esse intervalo mesmo.
- A definição da operação também deverá ser aleatória. Iremos trabalhar com três delas, então precisaremos sortear entre três números, no qual cada um representará uma determinada operação.
- O jogo terá uma pontuação. Para facilitar, faremos com que a pontuação seja incrementada em 50 nos acertos e decrementada o mesmo tanto nos erros.
- Um campo de entrada para o usuário digitar a resposta da expressão que será sorteada.
Nosso jogo será basicamente isso, então para implementá-lo, iremos
utilizar duas variáveis para armazenar cada número sorteado
separadamente. Outra variável irá armazenar o “valor” do sinal
da expressão. Como teremos um “score”, iremos precisar de uma
variável para armazenar o valor correspondente.
Definido os elementos do nosso jogo, poderemos passar para o layout
que será visto no próximo post. Uma ótima semana para todos.
Abraços.
terça-feira, 6 de setembro de 2011
Jogo Password para Android
Olá leitores,
Como prometido, hoje
irei fazer jus ao nome do blog. Iremos criar um joguinho simples
conhecido como senha
utilizando os elementos que trabalhamos no post anterior. Então mãos
à obra.
Primeiro
precisamos trabalhar nosso esquema de jogo. Sabemos que teremos que
“sortear” um conjunto de números, esses números variam de 0
(zero) ao 9 e podem se repetir. Teremos que “pegar” de alguma
maneira a sequência de números digitados pelo usuário e
compará-los a cadeia de números que representam nossa senha. Depois
de comparar, caso o usuário tenha acertado, informamos que ele
venceu o jogo. Caso erre, precisamos mostrar ao usuário as seguintes
informações:
- Número existe e está na posição correta;
- Número existe mas está na posição incorreta;
- Número não existe.
Definindo
nosso esquema de jogo, podemos começar a pensar no layout.
No
meu caso, eu escolhi enviar uma mensagem ao usuário informando as
regras do jogo. Em seguida, teremos mais uma mensagem indicando a
sequência secreta. É importante anotar aqui que essa sequência
precisa ser secreta.
Ou seja, precisamos mascará-la. Como faremos isso mostrarei no
código no momento que chegarmos na parte respectiva. Após os dois
textos, iremos inserir uma campo de entrada onde o usuário deverá
digitar a sequência que ele imagina ser a secreta. Mais uma
importante anotação: A
sequência secreta são números de 0 (zero) ao 9, então devemos
restringir os valores de entrada para estes números. Também
veremos como fazer isso através do código. Por último,
acrescentaremos o botão de confirmação. Agora vamos para o código
do arquivo “main.xml”.
![]() |
| Tutorial explicando o jogo |
![]() |
| Texto que irá "exibir" a sequência secreta |
![]() |
| Campo de entrada do usuário |
![]() |
| Botão de confirmação |
Na
primeira imagem, não há muita novidade assim como na quarta. Na
segunda, adicionamos um 'id' ao <TextView>. Na terceira
definimos nossos dados de entrada como dígitos de 0 (zero) ao 9
através da linha 'android:digits=“0123456789”'.
Esse fato é importante porque senão poderíamos adicionar letras e
símbolos, o que não é do nosso interesse, pelo menos nessa fase.
Depois de trabalhar nosso layout, está na hora de partirmos para o
arquivo .java, podemos também executar o app para vermos como está
nosso layout.
Teremos que importar todas as bibliotecas que importamos no post
passado.
![]() |
| Imports necessários para aplicação |
Em seguida, vamos para o corpo da nossa classe principal.
Iremos declarar duas variáveis que farão a ligação com os
elementos <EditText> e <TextView> que declaramos no
arquivo “main.xml” chamados user_sequence e password_txt,
respectivamente. Também vamos precisar de uma variável String
chamada password_sequence que irá armazenar o valor real da
sequência secreta de caracteres que serão sorteados randomicamente
variando de 0 (zero) ao 9 como definimos no começo do post. Outra
variável será a intitulada rounds que como o nome já diz
irá contar o número de rodadas que o usuário precisará jogar para
acertar a sequência.
![]() |
| Declaração das variáveis |
Agora iremos dar um “pulo” no código. Para definir a sequência
de caracteres secretos, por questão de limpeza do código e também
facilidade, vamos criar uma função específica para criar nossa
sequência secreta.
Para criar a sequência de senha, a ideia é extremamente simples.
Vamos criar uma variável String para nos auxiliar. Nossa função
irá retornar o valor armazenado por essa variável auxiliar. Dei o
nome dela de pass_sequence. Vamos criar também uma variável
para definir o tamanho da sequência, isso porque podemos mais tarde
criar níveis de dificuldade que aumentarão o número de caracteres
secretos. Por enquanto, deixaremos com o valor 4. Com um loop que vai
do 0 (zero) ao tamanho da sequência, no nosso caso o valor é 4,
vamos calcular um número randômico que vai de 0 (zero) ao 9 através
da linha pass_sequence += Math.round(Math.random() * 10 ).
Depois apenas retornamos o valor resultante de pass_sequence.
![]() |
| Função createPasswordSequence() |
Agora que criamos nossa função para criar a sequência de
caracteres secretos, vamos voltar ao código principal onde iremos
atribuir o valor de retorno da função mencionada na variável
password_sequence. Lembra quando falei que teríamos que
arrumar um jeito de “mascarar” nossa senha? Pois é, não sei se
é a melhor maneira, mas foi a que me veio na cabeça no momento que
estava programando. Criei uma variável auxiliar do tipo String que
possui o mesmo tamanho de password_sequence com uma diferença:
a variável aux terá apenas como valor o símbolo “*”. E
como faremos para verificar se a sequência do usuário é igual ao
do programa? Pois é, nós poderemos compará-la diretamente com
password_sequence pois esta variável não será mostrada ao
usuário, consequentemente ele não terá como manipulá-la.
![]() |
| Inicialização da sequência de caracteres |
Pronto. Já temos nossa sequência de caracteres. Para facilitar o
entendimento do usuário, vamos mostrar a variável aux
precedida de uma informação. Em seguida, vamos linkar nosso
botão criado no main.xml com um botão no código-fonte.
![]() |
| Linkando <TextView> e <Button> |
Chegamos no momento de tratar a interação do usuário com nosso
game. O usuário irá digitar uma sequência e apertar o botão para
verificar se a senha está correta, certo? Então precisamos criar um
listener para o botão e é o que faremos agora. Contudo, não basta
apenas adicionar um listener ao botão. Precisamos verificar se o que
o usuário digitou é igual ao que foi criado pelo aplicativo. Então
vamos “pular” mais uma vez até nossa função de verificação
que também criamos.
Explicá-la não será uma tarefa simples. Como vimos, além de
verificarmos se está correta a sequência ou não, também
precisamos enviar ao usuário uma resposta com os códigos que
listamos na tela da aplicação. Para realizarmos a verificação,
vamos ter que criar um loop duplo com condicionais.
Para começar, vamos pelo mais fácil. O caso de o dígito existir e
estar na posição correta. Fazemos essa verificação através da
primeira condicional. Caso o dígito exista e está na posição
correta, o segundo loop não será executado otimizando dessa maneira
a performance da nossa aplicação. Agora no caso do dígito não
estar na ordem correta (observe que ainda não sabemos se o dígito
simplesmente não existe naquela sequência ou se ele existe mas está
em outra posição) precisamos rodar o loop interno.
Se vocês repararem bem, criei uma variável booleana para definir se
o dígito existe ou não. Pode parecer sem sentido, mas a ideia
ficará mais clara quando avançarmos um pouco mais no código.
Entramos no loop e verificamos um a um se algum dígito da variável
password_sequence corresponde a algum dígito da cadeia
digitada pelo usuário. Caso exista o dígito igual, iremos setar
como verdadeiro a variável has_item e quebraremos o loop.
Agora imagine que chegamos ao fim do loop e não encontramos nenhum
dígito que fosse igual entre as duas sequências. O que o programa
fará? Ele entrará na condição na qual has_item continua
com o valor falso. Então teremos nossa função de verificação
funcionando perfeitamente e de maneira otimizada.
![]() |
| Função verifyPasswordErrorSequence() responsável em retornar uma cadeia de caracteres com os códigos 'char' para instruir o jogador dos erros e acertos |
Voltamos para nosso método onCreate(...) para criar a ação
do botão. Ela será basicamente a mesma do último post, contudo, no
caso da entrada do usuário for igual a senha sorteada, uma mensagem
de vitória será lançada e o jogo recomeçará com nova senha
secreta. No caso das senhas não baterem, a sequência de caracteres
com os códigos respectivos da posição e existência de cada
caractere será exibido.
![]() |
| Caso do usuário ter acertado a sequência |
Bom, agora é só executar e se divertir quebrando a cabeça para
acertar as sequências de senhas. Espero que este post torne-se útil
para vocês.
Caso alguém tenha joguinhos para sugerir, basta enviar e-mail para
mim (andreikeda87@gmail.com).
Obrigado pelas visitas e sintam-se a vontade para comentar e também
seguir o blog.
Um grande abraço e até a próxima quando iremos fazer mais um
joguinho utilizando apenas <EditText> e <Button>
terça-feira, 30 de agosto de 2011
Trabalhando com EditText e Button [ATUALIZADO]
Olá leitores do blog,
Como mencionei no post anterior, hoje nós iremos avançar um pouco mais na complexidade da app adicionando elementos como botão e campos para entrada do usuário.
Vamos começar criando um novo projeto. Vou chamá-lo de Post003Project. Depois selecionaremos a checkbox referente ao Android 2.3.3. Em seguida chamaremos nossa app de Post003App e nossa main Activity de Post003Activity como mostram as duas figuras abaixo:
![]() |
| Nome do Projeto |
![]() |
| Escolha da versão do SDK, nome da app e nome da main Activity, respectivamente |
Ok. Depois de criar o projeto, teremos a aplicação padrão exibindo o nome da app no emulador do Android. Vocês ainda lembram do arquivo xml que mencionei no post passado? Pois é, usaremos ele nessa app, por isso vamos navegar até a pasta “res/layout” e abrir o arquivo “main.xml”. Ele deve estar mais ou menos como na figura abaixo:
!OBSERVAÇÃO! Não consegui utilizar o framework para trabalhar com o “main.xml” diretamente através de uma interface similar ao Swing. Por isso, a imagem que postei será igual a quando você clicar na aba “main.xml” ao lado da “Graphical Layout”.
![]() |
| Arquivo main.xml |
Legal, não? Antes de começar a escrever no xml, vamos explicar um pouco sobre o que já está definido no arquivo e que pertença ao nosso escopo de programação para Android, por isso, caso você não conheça xml, então é melhor antes procurar saber e estudar como estruturar um xml. Mas voltando ao assunto. Nesse xml encontramos uma classe que nos é nova. Ela se chama LinearLayout. Ela já estava na nossa aplicação, mas como não abrimos o arquivo “main.xml” do nosso HelloWorld então não pudemos 'ver' a classe. Contudo, mesmo sem vê-la, ela estava lá.
Já o TextView utilizamos para mostrar ao usuário nossa mensagem de boas vindas. Se vocês prestarem bem atenção, o texto do TextView está setado com o valor “@string/hello”, mas se você rodar a aplicação, não verá nada similar a isso na tela de exibição. E por quê? A resposta é simples. O valor é nada mais, nada menos do que uma constante definida no arquivo “string.xml” que está localizado na pasta “values” dentro de “res”. Se você abrir o arquivo “string.xml”, verá o verdadeiro valor a que a constante se refere.
Vamos começar a 'criar' nosso layout.
Primeiro, vamos criar mais uma tag TextView abaixo da primeira tag TextView para que possamos informar ao usuário o que esperamos que ele faça. Vamos atribuir os mesmos valores que a tag anterior alterando apenas o texto. No meu caso, defini-lo como “Escreva qualquer coisa ao lado:”. O xml irá ficar semelhante a este:
![]() |
| Arquivo xml com novo TextView |
Feito isso, vamos ver como está nossa aplicação. Abra o .java da sua aplicação e aperto o botão “Run” na barra de ferramentas. Escolha para executar como Android Project e espere o emulador iniciar. Quando a aplicação for executada, vocês verão algo semelhante a imagem abaixo:
![]() |
| Aplicação executando ainda sem campo de entrada e botão |
Agora vamos voltar ao nosso arquivo “main.xml”. Está na hora de adicionarmos um campo para o usuário entrar com alguma informação. Vamos supor que nossa app gosta de cumprimentar os usuários, então nada melhor do que saber o nome do usuário. Vamos alterar nosso texto da última TextView para “Qual seu nome?”. Texto alterado? Se você quiser rodar a app para ver a alteração, tudo bem, mas vou pular esse passo.
Está na hora de adicionarmos o campo de entrada. Abaixo do final da tag TextView, iremos adicionar a tag <EditText>. Um atributo muito importante nessa tag é o 'id' porque com ele que referenciamos este campo especifico dentro do código da classe Activity principal. Repare bem na linha que definimos o 'id' do nosso texto: android:id=“@+id/name_text”. O que estamos dizendo nessa linha para o compilador da app é que esse objeto da classe EditText deve ser referenciado por name_text .Abaixo segue a imagem de como ficará o novo “main.xml”.
![]() |
| main.xml agora com a tag <EditText> adicionada |
Outro atributo “novo” é o android:hint. Usamos ele para dar dicas da utilidade do determinado campo.
Agora que já temos nosso campo para entrada do usuário, vamos rodar mais uma vez a app.
Você irá notar que abaixo do texto “Qual seu nome?” surgiu um novo objeto. Este objeto é justamente nosso campo de entrada definido através da tag <EditText>. Ao interagir com o campo de entrada você provavelmente vai notar que nada além da sua ação de escrever acontece. Tendo percebido esse problema, fica muito claro que precisamos de mais elementos para tornar nossa app no mínimo funcional. Veja na imagem abaixo:
![]() |
| App com campo para entrada de usuário |
Minimize o emulador e vamos voltar ao “main.xml”. Se você notou, nós estamos voltando muitas vezes a esse arquivo, então é óbvio a importância dele na nossa aplicação. Por isso, tente mantê-lo sempre limpo e bem formatado. Afinal, código limpo e estruturado torna o entendimento mais simples e muitas vezes até evitando erros bobos.
Já que temos nosso campo de entrada do usuário, agora precisamos dar um jeito de manipular essa informação através de alguma interação. Qual delas? Provavelmente a mais simples é com botão e é com ele que vamos trabalhar agora.
Abaixo da tag <EditText> vamos adicionar a tag <Button> similar ao <EditText> com exceção do atributo android:hint que vamos dispensar. No atributo android:text vamos colocar o texto “OK” para que o usuário tenha alguma noção do que seja aquele elemento. Finalmente terminamos nosso trabalho com o arquivo “main.xml” que ficará mais ou menos assim.
![]() |
| Nossa app com layout completo |
Note que mesmo com o botão, nosso programa continua sem interatividade. Agora está na hora de mudarmos um pouco de linguagem. Vamos sair do XML e partir para o Java. Para isso, abra o arquivo .java da main Activity.
A ideia aqui será a seguinte:
- Precisamos criar uma maneira de recuperar o valor digitado pelo usuário no campo de entrada quando ele clicar no botão “OK”.
- De acordo com esse valor, vamos dar as boas vindas através de uma instância da classe AlertDialog.
Não vou detalhar o código linha por linha, pois a maioria é puramente o Java comum. Contudo, alguns comandos merecem certo destaque.
![]() |
| Código-fonte |
Vocês lembram de uma classe gerada automaticamente pela IDE que servia como uma interface entre o XML e o Java que mencionei no primeiro post? Pois é, a utilidade dela está no nosso código exatamente quando chamamos a função findViewById(R.id.xxx). Esta função busca dentro do arquivo “main.xml” o elemento com o atributo 'id' semelhante ao digitado no parâmentro 'R.id.xxx' onde 'xxx' é o nome que demos ao elemento no “main.xml”. Vamos navegar para o “main.xml” e buscar o valor que demos para o botão da nossa app: “@+id/ok_btn”, certo? Então substituímos o 'xxx' por 'ok_btn' e declaramos um objeto filha da classe Button dentro do Java instanciando com as definições que definimos dentro do “main.xml”. Muito prático, não? Também achei.
Ainda há também o AlertDialog que criamos, mas não irei me estender em explicações sobre suas funcionalidades, mas para quem quiser saber mais recomendo navegar pelos fóruns de Android e principalmente na documentação da linguagem. Recomendo também estudar os atributos do layout, pois é com eles que deixamos nossa app mais elegante.
Espero que todos tenham apreciado o post e tenham aprendido mais um pouco. Para finalizar o print da app executando depois que inserimos o nome e apertamos no botão “OK”.
![]() |
| App 'finalizado' rodando |
Um grande abraço e boa semana.
Esqueci de avisar que no próximo post irei colocar um pequeno jogo estilo senha. Para quem não conhece, é um jogo onde o jogador deve adivinhar uma sequência de números sorteados aleatoriamente.
Esqueci de avisar que no próximo post irei colocar um pequeno jogo estilo senha. Para quem não conhece, é um jogo onde o jogador deve adivinhar uma sequência de números sorteados aleatoriamente.
domingo, 28 de agosto de 2011
Primeira app: Hello World!
Boa noite a todos,
Como falei no primeiro post do blog, neste irei exemplificar a implementação de um Hello World no Android. Eu sei que é algo extremamente simples, mas para começar, nada como algo simples. Antes, no entanto, irei falar um pouco da IDE que estou utilizando que é o MotoDev Studio da Motorola. Costumo programar em Java utilizando o eclipse e também é possível programar para Android utilizando o eclipse com a condição de importar algumas bibliotecas e plugins que não entendi direito como fazia. Então para não estragar meu eclipse, preferi baixar outra IDE e experimentar. Felizmente, as apps feitas no MotoDev Studio podem ser utilizados em qualquer aparelho que possua Android (no início pensei que apenas poderia utilizar as apps num Motorola) e os plugins e bibliotecas necessárias para programar utilizando SDK já vem acopladas a IDE.
Como pode-se ver na imagem acima, a interface do MotoDev é quase idêntica ao do eclipse, o que de início torna mais fácil a familiarização com a ferramenta.
![]() |
| Interface MotoDev Studio |
Para começarmos um novo projeto, basta fazer como no eclipse. Em Novo Projeto (New Project), escolha a opção Projeto Android utilizando Studio para Android (Android Project Using Studio for Android) e a tela de configuração vai abrir.
![]() |
| Janela para criação de novo projeto |
Digite o nome do projeto e escolha a versão da API que deseja utilizar. Mais embaixo será necessário definir o nome da aplicação, o pacote, o nome da Activity e a versão mínima do SDK. É importante observar que a versão mínima do SDK deve estar de acordo com a escolhida no checkbox acima. Quando você clicar para o projeto ser criado, você poderá ver que a própria IDE já criou uma classe com o nome que você especificou e que essa classe estende uma classe chamada Activity. Em posts adiante, falarei um pouco mais sobre essa classe. Se você navegar na pasta chamada 'res' → 'layout', um arquivo xml intitulado main.xml responsável em trabalhar o layout da aplicação através das tags de xml, mas também só iremos detalhá-lo um pouco melhor em posts adiante. Se você navegar na pasta 'gen' e for através do pacote determinado na criação do projeto, você encontrará um arquivo chamado R.java. Esse arquivo funciona semelhante a uma interface entre o código Java e o XML citado anteriormente e não pode ser alterado manualmente. Ainda há também o arquivo 'AndroidManifest.xml' que guarda as informações referentes a nossa aplicação.
Então navegue até a pasta onde está o código-fonte da classe que você criou. Ela vai estar em 'src'. Abra o .java referente a sua classe e um código-fonte semelhante a esse será exibido.
![]() |
| Código-fonte da classe principal |
Algumas explicações simples já que de início consideramos que você já tenha um certo conhecimento em Java.
Pode-se ver o pacote da classe e o import das bibliotecas necessárias para execução da app. Para melhores detalhes sobre cada classe, olhar a documentação da linguagem. Em seguida, temos nossa classe. No meu caso, chamei-a de 'MainActivity' e esta classe estende a classe Activity. Em seguida temos um @override de um método chamado 'onCreate(arg argument)'. O método onCreate() é um dos métodos definidos pela classe Activity. Ainda há onPause(), onStart(), entre outros. Há um gráfico bem interessante no tutorial de Felipe Silveira explicando os métodos da classe Activity. Para acessar, só clicar aqui.
Vamos fazer um teste e rodar o programa com a configuração inicial. Clique em “Run” e execute como uma aplicação Android.
Detalhe para essa parte que o emulador levará um tempo para iniciar. Aparecerá Android escrito na tela e depois de alguns minutos o “celular” estará pronto para uso. Desbloqueie-o arrastando o botão verde com o cadeado até o ponto marcado. Você verá que sua aplicação será iniciada. Uma tela preta exibindo o nome da sua aplicação estará no canto superior esquerdo da tela. Agora vamos voltar ao código-fonte.
!CUIDADO! Não feche o emulador. Apenas minimize-o senão você terá que esperar ele reiniciar novamente cada vez que abri-lo e isso não é legal. Acreditem, fechei-o várias vezes antes de entender que ele demorava para iniciar e que depois de iniciado bastava em recompilar o código-fonte que o emulador o executava novamente.
Está na hora de fazermos nossa primeira app e vocês verão como é simples. Para isso, vamos adicionar um import ao pacote “android.widget.TextView”. Em seguida vamos para o método onCreate(Bundle savedInstaceState). Abaixo da linha “super.onCreate(savedInstanceState)”, vamos adicionar um objeto da classe TextView através da linha “TextView view = new TextView(this)”. Na linha seguinte, deve estar “setContentView(R.layout.main), correto? Teremos que alterar essa linha porque queremos que a app exiba uma mensagem que iremos definir ao invés de exibir o nome da aplicação. Então vamos fazer o seguinte, ao invés de “setContentView(R.layout.main)”, vamos colocar “setContentView(view)”, onde o parâmetro definido pela variável view é justamente o objeto que criamos na linha superior. Contudo, se executarmos o programa, nenhuma mensagem aparecerá e por quê? Bom, se você olhar o código-fonte com certeza descobrirá. Nós criamos um objeto da classe TextView e fizemos para a aplicação 'mostrá-lo'. No entanto, não definimos nenhum valor para esse objeto, por isso antes do “setContentView(view)” iremos adicionar a linha “view.setText('Hello World!')”. O código-fonte deve ficar semelhante a imagem abaixo.
![]() |
| Código-fonte HelloWorld! |
Então agora só nos falta testar a app e ver se ela está funcionando corretamente. Execute-a e abra o emulador. A mensagem definida por você estará lá no mesmo lugar que antes aparecia o nome da aplicação como mostra a imagem abaixo.
![]() |
| Emulador com nossa primeira app |
Legal, não? Para nós programadores pode até ser quando estamos começando numa linguagem, contudo para os usuários nada disso é legal. Eles esperam sempre muito mais. Por isso, no próximo post, trabalharemos com entrada do usuário assim como botão e tela de aviso. Após o próximo post vou tentar colocar dois códigos-fonte de dois joguinhos simples utilizando apenas entrada de usuário, botão e tela de aviso, afinal o blog trata de jogos para Android =P. Lembrando que as informações que eu passo aqui não são tudo de autoria minha. Minhas referências estão sendo tutoriais que encontro pela internet e depois de testar coloco aqui meu entendimento em relação ao assunto descrito. Gostaria de aproveitar e agradecer aos programadores que não se limitam a apenas saber e sim a disseminar o conhecimento para que outros também possam usufruir dele. Por isso, um abraço para Felipe Silveira e Luciano Alves pelos tutoriais que estou utilizando nesse meu começo com Android.
Para os leitores também um grande abraço e até o próximo post.
Assinar:
Postagens (Atom)






































