Skip to content

  • Home
  • Blog
  • Projetos
  • Contato

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

janeiro 28, 2015 by jhonatan2760

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

Post Views: 1.652

Post navigation

Previous Post:

Trabalhando com Runnable’s externas em suas Threads.

Next Post:

Classes Aninhadas e anônimas

Posts recentes

  • Como explorar seu novo componente no Arduino
  • CORS em uma aplicação Angular 10 e Spring Security
  • Como gerar um certificado SSL grátis para sua aplicação em Spring
  • Arduino vs Dinossauro do Google Chrome
  • Comprei uma impressora 3D

Arquivos

  • abril 2022
  • novembro 2021
  • dezembro 2020
  • junho 2020
  • maio 2020
  • março 2020
  • dezembro 2019
  • novembro 2019
  • agosto 2019
  • junho 2019
  • março 2019
  • novembro 2018
  • agosto 2018
  • julho 2018
  • março 2018
  • fevereiro 2018
  • janeiro 2018
  • dezembro 2017
  • novembro 2017
  • outubro 2017
  • agosto 2017
  • abril 2017
  • novembro 2016
  • junho 2015
  • fevereiro 2015
  • janeiro 2015
  • novembro 2014
  • setembro 2014
  • agosto 2014
  • julho 2014
  • junho 2014
  • maio 2014
  • abril 2014
  • março 2014
  • fevereiro 2014
  • janeiro 2014
  • dezembro 2013
  • novembro 2013
  • outubro 2013

Categorias

  • 3D printter
  • ALREADY
  • Ame Digital
  • ANGULAR 4+ ROLE BASED
  • ANGULAR 5
  • ANGULAR ROLE BASED
  • Arduino
  • Consulta Operadora
  • Cors
  • Crawler
  • Data Science
  • DIRECTIVE ANGULAR
  • español
  • HTTPS
  • Impressora 3D
  • iOS
  • iOT
  • JAVA
  • JERSEY
  • Jsoup
  • Meetup
  • Pandas
  • Python
  • R
  • REQUEST JERSEY
  • scraping
  • SECURITY CONTEXT
  • Sem categoria
  • Spanish
  • Spring
  • Spring Security
  • Spring Webflux
  • Swift
  • Talkings
  • Technology
  • Uncategorized
  • Webflux
2021 - Jhonatan S. Souza