Ver mensagens sem resposta | Ver tópicos ativos Hoje é 20 Nov 2019, 22:15



Responder Tópico  [ 25 Mensagens ] 
 [TUTORIAL] Mover Objeto na tela 
Autor Mensagem
Android application
Android application
Avatar de usuário

Data de registro: 27 Dez 2007, 18:17
Mensagens: 76
Mensagem [TUTORIAL] Mover Objeto na tela
Será demonstrado abaixo, como mover um objeto (imagem) na tela do Android. É importante frisar que nesse sucinto tutorial não será criado qualquer jogo ou algo do tipo. Pois bem, nosso tutorial será baseado em mover um aviãozinho para qualquer lugar da tela (respeitando os limites da mesma). Nosso cenário terá como fundo uma cidade.

Para darmos início, crie um projeto Android na IDE de sua preferência e logo em seguinte uma Atividade com o nome: MoverObjeto, sua implementação será a seguinte:

1º Passo


package www.portalandroid.org;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class MoverObjeto extends Activity {

    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        //remove o título da janela
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        //define o layout a ser utilizado
        setContentView(R.layout.main);
    }
}
 


2º Passo

Iremos agora, criar o nosso layout (main):


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

<www.portalandroid.org.TelaPrincipal
    android:id="@+id/TelaPrincipal"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/fundo"
    />

</LinearLayout>
 


3º Passo

Note que o layout main faz referência a uma classe chamada TelaPrincipal, portanto, iremos cria-la e extende-la (extends) a View:


package www.portalandroid.org;

import java.util.Map;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.View;

public class TelaPrincipal extends View {

    // quantidade de pixel que queremos quando movimentarmos (precionando as teclas) o objeto em qualquer direção.
    private static int tamanho_do_movimento = 5;
    // dimensões de tela do dispositivo
    private int larguraTela, alturaTela;
    // posições da imagem que moveremos
    private int posicaoX, posicaoY;
    // imagem que utilizaremos
    private Drawable aviao;
    // dimensão da imagem que utilizaremos
    private int larguraDoAviao, alturaDoAviao;
   
    // Construtor da nossa classe
    public TelaPrincipal(Context context, AttributeSet attrs, Map inflateParams) {
        super(context, attrs, inflateParams);
       
        // Obtem a referência da imagem
        aviao = context.getResources().getDrawable(R.drawable.aviao);
        larguraDoAviao = aviao.getIntrinsicWidth();
        alturaDoAviao = aviao.getIntrinsicHeight();    

        setFocusable(true);
    }
   
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        // TODO Auto-generated method stub
        super.onSizeChanged(w, h, oldw, oldh);
       
        larguraTela = w;
        alturaTela = h;
        posicaoX = (larguraTela / 2)-(larguraDoAviao/2);
        posicaoY = (alturaTela / 2)-(alturaDoAviao/2);
    }

    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        aviao.setBounds(posicaoX, posicaoY, posicaoX+larguraDoAviao, posicaoY+alturaDoAviao);
        aviao.draw(canvas);
        invalidate(posicaoX-tamanho_do_movimento, posicaoY-tamanho_do_movimento, posicaoX+larguraDoAviao+tamanho_do_movimento, posicaoY+alturaDoAviao+tamanho_do_movimento);
    }

    public boolean onKeyDown(int keyCode, KeyEvent event) {
       
        boolean botao_pressionado = true;
       
        switch(keyCode){
        case KeyEvent.KEYCODE_DPAD_UP:
            posicaoY-=tamanho_do_movimento;
            break;
        case KeyEvent.KEYCODE_DPAD_DOWN:
            posicaoY+=tamanho_do_movimento;
            break;
        case KeyEvent.KEYCODE_DPAD_LEFT:
            posicaoX-=tamanho_do_movimento;
            break;
        case KeyEvent.KEYCODE_DPAD_RIGHT:
            posicaoX+=tamanho_do_movimento;
            break;
        default:
            // se chegar aqui, significa que não foi pressionado os botões válidos para mover a imagem
            botao_pressionado = false;
            break;
        }
       
        // se a imagem sair fora da tela, corrigimos as posições para que não saia fora
       
        if(posicaoY<0)
            posicaoY=0;
        if(posicaoX<0)
            posicaoX=0;
        if(posicaoY>alturaTela-alturaDoAviao)
            posicaoY=alturaTela-alturaDoAviao;
        if(posicaoX>larguraTela-larguraDoAviao)
            posicaoX=larguraTela-larguraDoAviao;
       
        return botao_pressionado;
    }
}
 



4º Passo

Compile e veja o resultado:

Imagem

Para a criação de jogos, outros conceitos podem ser aplicado, como: colisão de objetos e inteligência artificial.

obs.: em anexo segue as imagens necessárias para o tutorial. Tais imagens devem ser movidas para o diretório /res/drawable


Você não tem permissões suficientes para ver os arquivos anexados nesta mensagem.

_________________
http://www.portalandroid.org - Tudo sobre o Android.


14 Abr 2008, 19:17
Perfil WWW
What is Android?
What is Android?

Data de registro: 13 Out 2008, 19:02
Mensagens: 1
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Gostei mundo ai do forum, tenho uma duvida quanto a este exemplo. No construtor da classe a variavel inflateParams informa um erro de nao foi determinado referências para o tipo de mpas genericos, devido a isso no codigo super(context, attrs, inflateParams); ele informa que o construtor está indefinido




import java.util.Map;
// Construtor da nossa classe
    public TelaPrincipal(Context context, AttributeSet attrs, Map inflateParams) {
        super(context, attrs, inflateParams);
       
        // Obtem a referência da imagem
        aviao = context.getResources().getDrawable(R.drawable.aviao);
        larguraDoAviao = aviao.getIntrinsicWidth();
        alturaDoAviao = aviao.getIntrinsicHeight();    

        setFocusable(true);
    }



Algúem poderia me ajudar?

Grato


21 Out 2008, 17:13
Perfil
What is Android?
What is Android?

Data de registro: 24 Out 2008, 01:06
Mensagens: 5
Mensagem Re: [TUTORIAL] Mover Objeto na tela
eles tiraram o atributo Map inflateParams do construtor.
Faz o seguinte, deixa o construtor assim:

public TelaPrincipal(Context context, AttributeSet attrs) {
        super(context, attrs);
        // Obtem a referência da imagem
        aviao = context.getResources().getDrawable(R.drawable.aviao);
        larguraDoAviao = aviao.getIntrinsicWidth();
        alturaDoAviao = aviao.getIntrinsicHeight();    

        setFocusable(true);
    }


26 Out 2008, 12:15
Perfil
What is a Activity?
What is a Activity?

Data de registro: 04 Nov 2008, 14:17
Mensagens: 11
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Olá pessoal,

Consegui executar este cod, porém só estou conseguindo mover o avião utilizando as setas do teclado. Não teria como mover o objeto com o mouse?

Abraços!


02 Fev 2009, 18:36
Perfil
What is DDMS?
What is DDMS?

Data de registro: 27 Mar 2009, 13:41
Mensagens: 33
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Eu procurei bastante na classe KeyEvent, não tem como mexer com o mouse a classe é exclusiva para teclas então fui em outras classes para tentar ver se havia alguma que lidasse com eventos do movimento do mouse, mas também não achei nada. Se alguém conseguir achar alguma coisa me diga. Eu procurei no android docs: http://www.androidjavadoc.com/m3-rc37a/ ... mmary.html


23 Abr 2009, 11:54
Perfil
Anatomy of an App
Anatomy of an App

Data de registro: 17 Set 2008, 18:04
Mensagens: 149
Localização: Brasília / DF
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Muito legal esse tutorial... oferece muitas possibilidades... Comprei esse livro Google android estou gostando muito. Quem sabe daqui a uns dias com estudo consiga modificar esse tutorial para mover o aviao em direção ao ponto precionado pelo mouse...Caso eu consiga coloco aqui...
Vlw pessoal!

_________________
---
http://lordelfo.blogspot.com


28 Abr 2009, 16:53
Perfil WWW
What is DDMS?
What is DDMS?

Data de registro: 18 Out 2009, 23:33
Mensagens: 35
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Ola Sandro e pessoal!

Eu estou tentando aqui mas ele esta dando um erro em tempo de execução.... Pelo que vi esta tudo igual ao que vc colocou... So o nome do projeto que eu coloquei um outro, mas o nome da classe eu deixei como MoverObjeto como voce fala... Tem ideia do que poderia ser?

abracos! :ugeek:


Rafael Spessotto


08 Dez 2009, 17:27
Perfil
What is Android?
What is Android?

Data de registro: 06 Abr 2010, 22:49
Mensagens: 1
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Muito obrigado ao autor do Post ajudou demais!!!!


06 Abr 2010, 23:14
Perfil
What is Android?
What is Android?

Data de registro: 14 Jul 2010, 15:30
Mensagens: 1
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Spessotto escreveu:
Ola Sandro e pessoal!

Eu estou tentando aqui mas ele esta dando um erro em tempo de execução.... Pelo que vi esta tudo igual ao que vc colocou... So o nome do projeto que eu coloquei um outro, mas o nome da classe eu deixei como MoverObjeto como voce fala... Tem ideia do que poderia ser?

abracos! :ugeek:


Rafael Spessotto


Creio que seja o mesmo erro que o meu. Vai no main.xml e muda o caminho do teu projeto, eu tinha colocado somente o nome da classe mas precisa ser o caminho completo com os pacotes.


15 Jul 2010, 16:04
Perfil
What is Android?
What is Android?

Data de registro: 03 Fev 2010, 20:04
Mensagens: 8
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Boa noite!

Para você usar o mouse terá que usar os eventos de Touch(tocar)
   @Override
    public boolean onTouchEvent(MotionEvent event) {
        // TODO Auto-generated method stub
        return super.onTouchEvent(event);
    }


11 Ago 2010, 00:46
Perfil
What is a Activity?
What is a Activity?

Data de registro: 16 Set 2010, 00:13
Mensagens: 18
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Desculpa mas... só eu ou alguém mais está tendo problema com o "aviao"?

Ele parece que não encontra ele... tem que colocar alguma imagem em algum lugar? setar alguma coisa? Ele me da pau nessa parte na linha 4 no "R.drawable.aviao"

   public TelaPrincipal(Context context, AttributeSet attrs) {
        super(context, attrs);
        // Obtem a referência da imagem
        aviao = context.getResources().getDrawable(R.drawable.aviao);
        larguraDoAviao = aviao.getIntrinsicWidth();
        alturaDoAviao = aviao.getIntrinsicHeight();    

        setFocusable(true);
    }



Se puderem me ajudar gente ^^''... É que to até com vergonha de perguntar (ninguém teve essa dúvida além de mim ^^'...)

de qualquer forma vlw gente!! ^^


17 Set 2010, 05:04
Perfil
What is Android?
What is Android?

Data de registro: 03 Fev 2010, 20:04
Mensagens: 8
Mensagem Re: [TUTORIAL] Mover Objeto na tela
LucAlucard tem uma pasta chamada res no seu projeto, e dentro tem outras 3 pastas:

drawable
layout
values

Você joga a imagem do avião dentro da pasta res/drawable

Abraços.


17 Set 2010, 11:46
Perfil
What is a Activity?
What is a Activity?

Data de registro: 16 Set 2010, 00:13
Mensagens: 18
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Então... isso é mto estranho pq eu coloquei as imagens e continuou dando o erro..

tirei até o print porque ele não me fala onde está o erro =/ só diz que eu tenho alguns erros


Você não tem permissões suficientes para ver os arquivos anexados nesta mensagem.


18 Set 2010, 17:31
Perfil
Android application
Android application

Data de registro: 16 Set 2010, 18:01
Mensagens: 88
Localização: . Recife - PE
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Cara,

eu creio que teu projeto bugou, e precisas recriar outro..
pode ser com as mesmas características..
tenta isso..

falou! /zz

_________________
As grandes idéias surgem da observação dos pequenos detalhes.


Editado pela última vez por albertoLourenco em 07 Nov 2010, 19:01, num total de 1 vezes



24 Set 2010, 11:54
Perfil
Android application
Android application
Avatar de usuário

Data de registro: 08 Fev 2008, 17:52
Mensagens: 69
Mensagem Re: [TUTORIAL] Mover Objeto na tela
LucAlucard escreveu:
...tirei até o print porque ele não me fala onde está o erro =/ só diz que eu tenho alguns erros


e que tal você ver o erro clicando na aba "Problems" alí no rodapé!! /ww

_________________
Think Android!!!


24 Set 2010, 12:57
Perfil
What is a Activity?
What is a Activity?

Data de registro: 16 Set 2010, 00:13
Mensagens: 18
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Alberto Louranco É.. pode ser né? Peguei uma apostila de android.. e sempre q da esse erro só consigo corrigir assim... Apesar que não tinha pensado nisso nesse poejeto (foi o meu 2º que peguei pra teste então tudo tava mais novo doque já está pra mim rsrs).

Mas acho que vou tentar fazer rogerio falou, não sabía da existência dessa aba no Eclipse ^^'... Porque eu realmente achei estranho. Já penso? Vc com um projeto enorme e se ele der pau, lasco? Faz td de novo?

Brigadão Alberto, Brigadão rogerio, vou fazer aqui quando chegar em casa ( to no trabalho agora ) e respondo aqui pra ver o resultado que tive ^^'...


24 Set 2010, 14:29
Perfil
What is a Activity?
What is a Activity?

Data de registro: 16 Set 2010, 00:13
Mensagens: 18
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Funcionou.. precisei recompilar o projeto.. ^^''... Mas pelo menos funcionou né =D


29 Set 2010, 03:51
Perfil
What is Android?
What is Android?

Data de registro: 05 Nov 2010, 12:00
Mensagens: 2
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Testei aqui e não roda, da um erro e é forçado o fechamento da aplicação.

Eu não usei as imagens originais do tutorial, peguei imagens próprias.
Será q foi isso?
E outra, a pasta de imagens tem 3, a low, medium e high.
Em qual delas eu coloco as imagens?


05 Nov 2010, 12:42
Perfil
Android application
Android application

Data de registro: 16 Set 2010, 18:01
Mensagens: 88
Localização: . Recife - PE
Mensagem Re: [TUTORIAL] Mover Objeto na tela
dragongbr, beleza?

Cara, tu ja verificou o "src" das imagens? Se os nomes, batem com o que está na pasta?
Tipo, o fato de utilizares imagens diferentes não interfere na aplicação, so precisa verificar a referência delas.
Com relação ao fechamento forçado da aplicação. Não dá pra saber assim, já tentasse usar o LogCat?

;D

Abração.

_________________
As grandes idéias surgem da observação dos pequenos detalhes.


07 Nov 2010, 18:53
Perfil
Android application
Android application

Data de registro: 16 Set 2010, 18:01
Mensagens: 88
Localização: . Recife - PE
Mensagem Re: [TUTORIAL] Mover Objeto na tela
dragongbr escreveu:
Testei aqui e não roda, da um erro e é forçado o fechamento da aplicação.

Eu não usei as imagens originais do tutorial, peguei imagens próprias.
Será q foi isso?
E outra, a pasta de imagens tem 3, a low, medium e high.
Em qual delas eu coloco as imagens?



dragongbr, beleza?

Cara, tu ja verificou o "src" das imagens? Se os nomes, batem com o que está na pasta?
Tipo, o fato de utilizares imagens diferentes não interfere na aplicação, so precisa verificar a referência delas.
Quanto às pastas, tanto faz onde colocas as imagens. Pois elas so servem para o dispositivo saber qual delas deve acessar de acordo com o OS dele. Tipo, se o mobile tiver uma resolução baixa, ele utilizará as imagens da pasta low. Saca?
Em resumo, o correto seria criar 3 imagens iguais com resoluções diferente de acordo com as pastas (que agora não me recordo).
Com relação ao fechamento forçado da aplicação. Não dá pra saber assim, já tentasse usar o LogCat?

;D

Abração.

_________________
As grandes idéias surgem da observação dos pequenos detalhes.


07 Nov 2010, 18:58
Perfil
What is Android?
What is Android?

Data de registro: 05 Nov 2010, 12:00
Mensagens: 2
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Bah amigo, não conhecia o LogCat. Achei q todos os logs saiam naquela janela de log do Eclipse, eu tava pirando pq ele n mostrava nada de erro la.
Hhauhauhauhua

Depois q usei o LogCat, vi que o erro era no XML. Tive o mesmo problema que o amigo ali em cima.
Agora ta funcionando certinho.

Valeu pela preocupação =)


08 Nov 2010, 11:01
Perfil
Android application
Android application

Data de registro: 16 Set 2010, 18:01
Mensagens: 88
Localização: . Recife - PE
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Que nada brother! Comunidade é pra isso!! ehehe.. /uu

Abração!!

_________________
As grandes idéias surgem da observação dos pequenos detalhes.


09 Nov 2010, 00:48
Perfil
What is Android?
What is Android?

Data de registro: 20 Jul 2014, 19:34
Mensagens: 5
Mensagem Re: [TUTORIAL] Mover Objeto na tela
como eu faria se eu tivesse outro objeto na tela e quisesse mover também além do aviãozinho?


20 Jul 2014, 20:47
Perfil
What is Android?
What is Android?

Data de registro: 15 Ago 2015, 13:23
Mensagens: 1
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Olá, Fiz tudo conforme o tutorial, mas deu algo errado, o avião não se move ao tocar na tela.


15 Ago 2015, 13:28
Perfil
What is Android?
What is Android?

Data de registro: 12 Abr 2016, 01:18
Mensagens: 2
Mensagem Re: [TUTORIAL] Mover Objeto na tela
Olá estou tentando desenvolver um jogo de dominó, para mover as peças poderei utilizar este mesmo exemplo?


12 Abr 2016, 01:23
Perfil
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 25 Mensagens ] 

Quem está online

Usuários vendo este fórum: adautox, Aderbal Nunes, adilson, Adriano, Alexandre de Queiroz, allone, aluclinux, amos, anaguerra, ARAKINIDIO, Bitor, bomcabelo, boydivalor, brunomalka, BrunoO, Bruto_JPO, buccalon, burujo, caciara, Cajux, Carmizini, celson, Comandante Cody, comolatti, culumin, dallari, Danilo Dias, dchechetto, Deiapinh, dirceuconte, dmd, dudu795, ederson_4, EduardoYC, fabielp, fabrizior, fcoroa, Felipe Marcondes, felipe.buarque, ferrodecaju, fmakula, freina, Google Desktop, Governador Wilhuff Tarkin, gphonemania, guilhermepilotti, HAMSES, heliopassos, Heritrix, ijsilvestre, interservic, italoraony, iuri_freire, Jaison, jcdeveloper, jpespindola, juliana_costa, juliancesar, julianofischer, Katia, kidush, kpinheiro, Kureiton, Leonardo, LForce, Lindberg, Lord, Lucious, lufreitas, luizcarlosvb, Machado000, marcelochiquinho, marcelosv, marciosoliveira, Marini, Marlus Dias Silva, Mayara Trevisol, mirelli, mlemos, mmiottobarbosa, Mvitor, nardosnt, neiesc, nivea, nq6, nrsf, Nute Gunray, Padawan, pamonteiro, paulabr, paulokiller, peixe, peterson.bah, phfmendes, Princesa Léia Organa, raninhofernandes, rguadagnini, ricardo_listadelphi, Rogério, rtodao, scattonevi, shazaum, Silvio Vaz, Stryder, suissa, suportecr, Telekom [Bot], Thelemita, tiago, tnarnold, Toks, Transtago, vaniuz, VILESOFT, Wds, weber, Webnet, wil, wingdoido, zorba e 1 visitante


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:

© 2007 - 2016 Portal Android - Comunidade de Desenvolvedores Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi