Galera,
Vejam meu código:
[code]@Override
public boolean onTouchEvent(MotionEvent event) {
String tag = null;
if(i == 0) {
static_x = event.getX();
static_y = event.getY();
i = 1;
} else{
static_x1 = event.getX();
static_y1 = event.getY();
}
if(i == 1) {
Paint p = new Paint();
p.setColor(Color.BLACK);
p.setStyle(Paint.Style.STROKE);
Canvas canvas = new Canvas();
canvas.drawColor(Color.BLUE);
canvas.drawLine(static_x, static_y, static_x1, static_y1,p);
System.out.println("Era p/ desenhar na tela");
i = 0;
}
return false;
}[/code]
O Canvas simplesmente não desenha nada na tela. Quero desenhar uma linha quando o usuário tocar na tela.
Alguém poderia me ajudar?
Vlw
Esse código está uma classe que estende Activity!
Voce precisa desenhar isso no Canvas que vem do onDraw de alguma View.
No seu caso, voce apenas criou um Canvas e desenhou nele.
Voce pode ver nesse artigo como fazer isso:
www.pontov.com.br/site/index.php/java/69-android/247-android-desenhando-na-tela
Amigo,
Uma dúvida…o onDraw ñ é chamado qdo a View é renderizada?? Pois é…eu ñ gostaria de desenhar qdo a Vies fosse renderizada, porém, no evento do toque da tela!!
Obrigado pela resposta!!
Exato!
suaView.invalidate();//Fara que sua view se re-renderize.
Coloco esse trecho de código dentro do “onDraw”?
Me ajude!
No onDraw voce deve desenhar tudo que deseja.
Voce deve processar os novos valores depois de ler o evento no onTouch, e depois disso, invocar o invalidate() para desenhar com os novos valores.
Amigo,
Eu fiquei até tarde tentando fazer, porém, sem sucesso!
Será q vc ñ poderia postar ao menos um exemplo básico e funcional, p/ q eu faça o resto?
Somente p/ me dar um norte e ñ ficar quebrando a kabeça…sou novo em Android.
Quero que quando o usuário tocar na tela seja desenhado um circulo ou uma linha por exemplo!!
Grato!
Se alguém tiver um exemplinho básico eu agradeço!!
Vlw
Se voce ler o artigo que postei com atenção, vai perceber como isso é feito.
Voce pode ver onde desenhar na primeira parte do artigo.
Na segunda ver como funciona o Handler para redesenhar a tela.
http://www.pontov.com.br/site/index.php/java/69-android/247-android-desenhando-na-tela?start=1
Ufa…
Consegui mto obrigado kra!!
Agora,
Estou desenhando um circulo quando o usuário toca na tela, porém, quando ele toca novamente o círculo desenhando no toque anterior desaparece.
Eu quero que quando o usuário toque na tela novamente o circulo anterior permanecesse, ou seja, como se o usuário estivesse pintando a tela.
Como faço isso colega?
Guardando a referencia para o circulo anterior também.
#dica
Cada vez que o usuario volta a clicar na tela o primeiro evento disparado é o MOTION_DOWN.
O método invalidate() da View é chamado e a renderiza novamente certo?
Como vou salvar o estado do Círculo?
Como tá difícil ainda ñ consegui…ñ tô entendendo!!
Como salvarei o estado do círculo?
Mas ñ vou desistir ñ!!
Voce precisa ter uma List dos objetos que voce já desenhou na tela.
E no onDraw desenha-los todas as vezes.
Hummmm…
Estou no trabalho, mas qdo eu chegar em kasa vou fazer isso!!!
Obrigado por suas respostas.
Assim…o q eu utilizo p/ pintar são as coordenada X e Y que capturo do MotionEvent.
Não utilizo nenhum objeto p/ pintar!! Como farei isso?
Veja o código:
[code]@Override
public boolean onTouchEvent(MotionEvent event){
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
x = (int) event.getX();
y = (int) event.getY();
radius = 10;
invalidate();
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}[/code]
[code]@Override
public void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawCircle(x, y, radius, pincelVermelho);
System.out.println("X ---->>>" + x);
System.out.println("Y ---->>>" + y);
}[/code]
Kra…consegui!!
Criei 2 arrays que guardam as coordenadas X e Y do toque do usuário e no onDraw eu criei um for q itera pelos arrays e redesenha os pontos anteriores.
Fikou legal…
Obrigado pela força!!