Estou tendo dificuldade de como deixar a tela vertical da minha aplicação alinhada.
Eu tenho a aplicação na horizontal, e fica tudo certinho, bem alinhado, porém, quando eu coloco na vertical, a imagem do meio fica totalmente desalinhada.
É o seguinte, coloquei no diretorio drawable-hdpi a imagem back no formato horizontal, e no diretorio drawable-land a imagem back no formato vertical.
As duas com o mesmo nome. Até ai tudo certo.
Só que, ao colocar a imagem logo tb nos dois diretórios, quando vai pra vertical da problema
alguem pode me ajudar?
Por que não usa os atributos android:background dos componentes para isso? Esses o Android resolve sozinhod e acordo com a orientação.
V
vasco.fred
Estava desenhando sim utilizando canvas.
Então como é que fica?
Não sei desse jeito que vc está dizendo
V
vasco.fred
Outra coisa,
o background vai ficar desse jeito que vc falou, e as imagens tb?
Fiquei sem entender.
V
vasco.fred
Marky.Vasconcelos
Consegui fazer o background,
ficou assim, confere?
android:background="@drawable/back"
Tudo ok. no caso do restante das imagens?
Eu tenho um logo que é pra ficar no meio da tela, de acordo com meu codigo ele fica na vertical, porem na horizontal nao fica.
Só não estou entendendo o seguinte,
Essa é minha tela inicial, deu certo.
ai no caso da tela de jogo mesmo que eu vou ter que colocar imagens mais a direita, ou a esquerda, como que vai ficar a questao do rendimensionamento da tela?
Marky.Vasconcelos
Ahh… isso é um jogo, ai a coisa muda.
Normalmente o que os devs fazem é criar o jogo para apenas uma orientação, o que na minha opnião é bem melhor do que se preocupar em ter um layout para os dois.
No seu caso, voce vai precisar verificar a orientação atual e pegar a imagem correta e desenhar no seu componente. O Android só cuida disso na hora que voce vai fazer o load das imagens enquanto inflando.
V
vasco.fred
Marky,
Pode me explicar melhor?
Devs?
V
vasco.fred
Marky ou alguém?
M
malconL
Vai ter que implementar transformação de matrizes, infelizmente não tem isso pronto no android.
Marky.Vasconcelos
Se voce está fazendo um jogo, por que quer suportar landscape e portrait? Isso te obriga a fazer um layout para cada orientação para aproveitar melhor o espaço.
M
malconL
No iOS basta configurar o componente para ocupar toda a tela e fazer:
Android tem que implementar tudo na mão. Não me leve a mal, os aparelhos podem ser fantásticos, mas em termos de API e ferramentas para o desenvolvedor, Android é mais parecido com j2me.
j0nny
Apenas lembrando, não alimente os trolls.
Marky.Vasconcelos
No iOS basta configurar o componente para ocupar toda a tela e fazer:
Android tem que implementar tudo na mão. Não me leve a mal, os aparelhos podem ser fantásticos, mas em termos de API e ferramentas para o desenvolvedor, Android é mais parecido com j2me.
Ta bom, e como voce vai especificar um layout para cada orientação apenas girando a tela?
Deixar apenas uma unica orientação na aplicação é tão facil no Android quanto no iOS.
M
malconL
Bom, não sei qual o jogo em questão, se é indicado ou não usar as duas orientaçoes, provavelmente vc esta certo. Mas…
…pello que entendi “é tão fácil quanto” quer dizer que não existe outra possiblidade a não ser usar um layout para cada tela ou então implementar seu proprio framework e por isso a comparação com j2me.
Marky.Vasconcelos
Para deixar apenas uma orientação no Android, basta invocar o seguinte na sua atividade.
Então vcs querem dizer que quando se trata de jogo, não é tão viável colocar das duas formas?
Marky, esse método faz o que?
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Marky.Vasconcelos
Faz um request para ficar nessa orientação.
E quando é jogos, não faz muito sentido manter as duas orientações, já que voce pode fazer o layout para aproveitar bem mais um tamanho especifico.
V
vasco.fred
Ok.
Aproveitando a situação, gostaria que vcs me ajudassem em outra coisa.
Eu gostaria de fazer uma tela que quando abrisse o jogo aparecesse o logo e dpois fosse pro menu, uma espécie de Splash Window.
No caso, eu implemento o método run na classe que desenha as imagens ou na classe principal que chama as outras?
Também já havia esquecido,
Como que eu faço para clicar em uma imagem feita em canvas?
Marky.Vasconcelos
vasco.fred:
Também já havia esquecido,
Como que eu faço para clicar em uma imagem feita em canvas?
Voce vai ter que fazer isso programaticamente, saber onde os objetos desenhados estão e traduzir o clique no canvas para saber qual imagem é.
Luiz_Aguiar
Dependendo do jogo, fica “injogável” essa mudança de orientação, precisa analisar bem isso, se existe realmente essa necessidade ou se é apenas para ter a “funcionalidade”.
[]s
V
vasco.fred
Ok Marky.
Vou tentar aqui, mas, aproveitando =) tem algum código de exemplo?
Outra coisa, os jogos que vemos em android hj em dia é criado com canvas?
Posso mt bem criar um jogo em canvas e vender?
Marky.Vasconcelos
Pode sim. É possivel criar totalmente no Canvas.
Como também é possivel usar aceleração nativa com OpenGL ES
V
vasco.fred
Agora eu não entendo como que eu vou fazer para que o android entenda, pq tipo, o canvas não é um botão, com isso, não posso criar o setOnClickListener ;
Alguma sugestão?
Seria mais interessante fazer esse menu com ImageButton e apenas o jogo em si com canvas?
Estou pensando em colocar imageButton sem desenhar com canvas, pois nao consigo fazer isso.
O que me diz?
Marky.Vasconcelos
Qualquer um dos dois é viavel.
O problema ali é que voce só está chamando um método.
Voce precisa usar um Intent para abrir outra Activity.
V
vasco.fred
Marky,
Resolvi criar os imageButtons mesmo.
Mas em relação ao exemplo, como ficaria a questão de usar o intent?
Outra coisa,
Tenho uma tela que deve ter um backgroud, um imageButton e um texto escrito com canvas.
Quando eu coloco em Graphical Layout aparece do jeito que eu quero, porém, quando coloco pra rodar, o imaggeButton e o background desaparece, ficando apenas o drawText();
packagecom.br.android;importandroid.app.Activity;importandroid.content.Context;importandroid.content.pm.ActivityInfo;importandroid.content.res.Resources;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.os.Bundle;importandroid.util.AttributeSet;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.ImageButton;publicclassTelaInstrucoesextendsView{Paintpaint;Resourcesres=this.getResources();publicTelaInstrucoes(Contextcontext){super(context);}publicTelaInstrucoes(Contextcontext,AttributeSetattrs){super(context,attrs);}publicTelaInstrucoes(Contextcontext,AttributeSetattrs,intdefStyle){super(context,attrs,defStyle);}publicvoidonDraw(Canvascanvas){paint=newPaint();paint.setColor(Color.WHITE);paint.setTextSize(10);canvas.drawText("Fazendo teste sobre o texto na tela",10,90,paint);canvas.drawText("Fazendo teste sobre o texto na tela linha 2",10,100,paint);}}
Qual é Activity que esta sendo executada, na qual voce quer chamar a segunda?
V
vasco.fred
Marky,
Fiz de um jeito aqui e deu certo.
Vamos para outros problemas =).
É o seguinte.
No meu jogo terão várias bolinhas e eu irei clicar nessas bolinhas ligando umas as outras.
1 - Essas bolinhas serão imageButtons ou Bitmaps?
2 - Como que eu faço pra que ao clicar em uma bolinha e ir arrastando até a outra, exiba um traço que vá acompanhando o dedo?
Obg.
P
PoneyMan
Ai Marky…ele tá dizendo que quer vc como sócio no game dele a ser publicado no Market. Sendo assim, pode ir ajudando mesmo…
V
vasco.fred
boone
Se não quiser ajudar, não atrapalhe.
Marky.Vasconcelos
vasco.fred:
Marky,
1 - Essas bolinhas serão imageButtons ou Bitmaps?
2 - Como que eu faço pra que ao clicar em uma bolinha e ir arrastando até a outra, exiba um traço que vá acompanhando o dedo?
1 - Bitmaps
2 - Basta desenhar uma Linha tendo como extremidades o vetor posição das duas bolinhas.
V
vasco.fred
Marky, eu fiz isso mas não consegui nem desenhar a linhda.