terça-feira, 27 de janeiro de 2015

Criando uma aplicação de pintura no Android (Paint)


Fala galera, tudo em cima? Hoje vou ensinar para vocês como construir um aplicativo semelhante ao Paint , bem simples, mas que pode ser implementado de forma eficiente em muitos projetos.

É muito simples, porém exige um conhecimento intermediario de Java/Android para ser aplicada.



Classe MainActivity :

package com.br.javeando;

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

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Nesse ponto devemos trocar o conteudo para nossa Classe do desenho e não para o XML
setContentView(new desenhoView(this));
}



}


Classe desenhoView

package com.br.javeando;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Path;
import android.view.MotionEvent;
import android.view.View;

public class desenhoView extends View {
private Paint paint = this.paintInit();
private Path path;
public desenhoView(Context context) {
super(context);
path = new Path();
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawPath(path, paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
path.moveTo(event.getX(),event.getY());
}else{
path.lineTo(event.getX(),event.getY());
}
invalidate();
return true;
}
private Paint paintInit(){
paint = new Paint();
paint.setStrokeWidth(2F);
paint.setColor(Color.BLACK);
this.setBackgroundColor(Color.WHITE);
paint.setStyle(Style.STROKE);
return paint;
}
}


Como funciona ?

A classe principal : MainActivity é responsavel apenas por "hospedar" a nossa view.

Já a classe desenhoView  que herda de View e assim é obrigada a construir a classe pai ,  recebe toda a ação. Vamos começar pelos objetos utilizados

Objeto Paint recebe as propriedades da nossa pintura como tamanho do pincel, cor, formato e etc..

no método paintIniti estamos inicializando nossa instancia passando as configurações necessárias.

O nosso objeto Path é um encapsulamento de um caminho geometrico, pode ser uma reta, um arco , etc..

Agora iremos fazer Override no método onDraw da nossa classe View , receberemos um objeto canvas onde iremos setar nossos objetos path(caminho) e paint(cores,formato,etc)

agora iremos fazer o Override em mais um método, o método: onTouchEvent que recebe os toques na tela do projeto, recebemos um evento e vamos verificar quando o usuario esta pressionando e ao final o metodo invalidate() re-desenha a tela.

Viu como é simples? qualquer duvida, deixe nos comentarios. Valeeeeeeu

Nenhum comentário:

Postar um comentário