Telas Horizontais e verticais no android

Também já havia esquecido,
Como que eu faço para clicar em uma imagem feita em canvas?

[quote=vasco.fred]Também já havia esquecido,
Como que eu faço para clicar em uma imagem feita em canvas?
[/quote]

Voce vai ter que fazer isso programaticamente, saber onde os objetos desenhados estão e traduzir o clique no canvas para saber qual imagem é.

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

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?

Pode sim. É possivel criar totalmente no Canvas.

Como também é possivel usar aceleração nativa com OpenGL ES

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?


menuNovoJogo = BitmapFactory.decodeResource(res,R.drawable.novojogo);

menuNovoJogo.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
	
				
			}
		});

E se eu o criar como um ImageButton, tb da problema


Imagebutton = (ImageButton) findViewById(R.drawable.novojogo);

public void onDraw(Canvas canvas){

		   button.draw(canvas);
}

Voce pode implementar o onTouchListener para sua View, e não para o Bitmap.

Mas voce ainda vai ter que pegar o x,y e descobrir em qual componente o usuario esta tocando.

Ok,
mas existe alguma outra maneira?
Pq eu fiz isso e nao deu mt certo.
Estou testando primeiro pra conseguir clicar na tela e fazer algo

 float posX = 200;
public void onDraw(Canvas canvas){
	  
		   canvas.drawBitmap(menuNovoJogo, posX, 100, paint);
}

public boolean onTouch(View v, MotionEvent event) {
		switch(event.getAction()){
			case MotionEvent.ACTION_DOWN:{
				posX = event.getX();
				break;
			}
		}
		
		return true;
	}

E então,
alguem sabe me dizer como fazer com que eu possa deixar um bitmap como um botão?

Tentei utilizar um imageButton, porém, ele nao desenha com canvas.

Alguém pode me dar uma luz a respeito?

 float posX = 200;
public void onDraw(Canvas canvas){
	  
		   canvas.drawBitmap(menuNovoJogo, posX, 100, paint);
}

public boolean onTouch(View v, MotionEvent event) {
		switch(event.getAction()){
			case MotionEvent.ACTION_DOWN:{
                               if(event.getX() > posX && event.getX() < posX + imagem.getWidth()){ //Clicou na area da imagem }
				break;
			}
		}
	
		return true;
	}

Mas é preciso verificar o height com o y também.

seria assim?

floa posX = 200;
float posY = 100;

public boolean onTouch(View v, MotionEvent event) {  
		switch(event.getAction()){  
			case MotionEvent.ACTION_DOWN:{  
				if(event.getX() > posX && event.getX() < posX + menuNovoJogo.getWidth() && (event.getY() > posY && event.getY() < posY + menuNovoJogo.getWidth()) ){ 
						posX = 500;
				}  
			break;  
			}  
		}  

		return true;  
	}  

se for assim, não aconteceu nada;

Se ele entrar no if o usuario clicou no menu, e voce deve executar a ação que deseja.

Não aconteceu nada por que a unica coisa que voce fez dentro do if foi atribuir 500 a posX

E agora?
Será que fiz algo errado?
Estou desesperado.
Desculpa Marky te aperriar =)

public boolean onTouch(View v, MotionEvent event) {  
		switch(event.getAction()){  
			case MotionEvent.ACTION_DOWN:{  
				if(event.getX() > posX && event.getX() < posX + menuNovoJogo.getWidth() && (event.getY() > posY && event.getY() < posY + menuNovoJogo.getWidth()) ){ 
						new RedeDroid().carregaTelaPrincipal();
				}  
			break;  
			}  
		}  
public class RedeDroid extends Activity {

	   
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        carregaTelaMenu();
        
     
    }
    

    public void carregaTelaMenu(){
		setContentView(R.layout.menu);
		
    }

    public void carregaTelaPrincipal(){
		setContentView(R.layout.telaJogo);
    }

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?

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.

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();

package com.br.android;




import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;

import android.os.Bundle;
import android.util.AttributeSet;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;

public class TelaInstrucoes extends View {
	Paint paint;
	Resources res = this.getResources();
	
	public TelaInstrucoes(Context context) {
		super(context);
	
		
	}
	public TelaInstrucoes(Context context, AttributeSet attrs) {
		super(context, attrs);
	
	}
	public TelaInstrucoes(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		
		
	}
    public void onDraw(Canvas canvas){
    	paint = new Paint();
    	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);
    }
    
 
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:background="@drawable/back"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" android:id="@layout/telainstrucoes">


<AbsoluteLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/AbsoluteLayout02">
<ImageView android:layout_width="wrap_content" android:layout_x="160dip" android:layout_y="5dip" android:layout_height="wrap_content" android:src="@drawable/logomenu" android:id="@+id/ImageView01"></ImageView>
<ImageView android:id="@+id/ImageView02" android:layout_width="wrap_content" android:layout_x="10dip" android:layout_y="70dip" android:layout_height="wrap_content" android:src="@drawable/instrucoestela"></ImageView>
<com.br.android.TelaInstrucoes
	 android:layout_width="fill_parent"
	 android:layout_height="fill_parent" >
</com.br.android.TelaInstrucoes>
</AbsoluteLayout>


</LinearLayout>

A parte do canvas consegui resolver.

Em relação ao Intent, ainda não consegui.
Pode me ajudar?

Executa isso de dentro da sua atividade que quer chamar a outra.

startActivity(new Intent(this, RedeDroid.class));

Marky,
Deu muito certo não.

button = (Button) findViewById(R.id.botaoOk);
	    	
	  	button.setOnClickListener(new View.OnClickListener() {
				
				public void onClick(View v) {
					new RedeDroid().carregarTelaNovoJogo();
				}
			});
	    }
public void carregarTelaNovoJogo(){
	
		startActivity(new Intent(this,TelaNovoJogo.class));  
	}
	

Qual é Activity que esta sendo executada, na qual voce quer chamar a segunda?