quinta-feira, 4 de outubro de 2012

Dicas de Programação: Desenhando na tela do Android

Esta foi um pedido de um colega meu.

Para os acostumados em "desenhar" pelo método paint do Java AWT/Swing, sabia que dá para "converter" este tipo de coisa para Android?

Para isso, o primeiro passo seria reescrever o método onDraw de uma View:

/**
 *Classe que herdar de android.view.View
 **/
public class DrawView extends View {

//Objeto de auxilio para desenhar
private Paint paint = new Paint();

/**
 *Construtor da classe
 *@param context Contexto da aplicação
 */
public DrawView(Context context) {
      super(context);
}

/**
 *Reescrevendo o método onDraw da View
 *@param canvas Objeto para "desenhar" na tela
 */
@Override
protected void onDraw(Canvas canvas) {
        //Chamando o método reescrito da "superclasse" (classe-pai)
super.onDraw(canvas);
        //Pintando a tela inteira de preto
canvas.drawColor(Color.BLACK);
        //Pintando um quadrado verde 50x50 na posição 100x100 deste objeto (view)
paint.setColor(Color.GREEN);
canvas.drawRect(100, 100, 150, 150, paint);
}
}

Agora, em sua Activity principal (classe que é executada pelo Android), basta adicionar a view que criamos para mostra-la na aplicação:

/**
 * Classe que herda de android.app.Activity
 */
public class MainActivity extends Activity {
 
/**
 *Reescrevendo o método onCreate da Activity (chamado no inicio da "atividade")
 *@param savedInstanceState Objeto que contém o último estado salvo.
 */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        //chamando o mesmo método da classe-pai ("superclasse")
        super.onCreate(savedInstanceState);
        //obtendo as propriedades da tela
        Display screen = getWindowManager().getDefaultDisplay();
        //criando a view principal
        DrawView drawView = new DrawView(getApplicationContext());
        //adicionando a view para ser mostrada em tela inteira
        addContentView(drawView, new LayoutParams(screen.getWidth(), screen.getHeight()));
    }
}

Se tudo funcionar bem, um quadrado verde aparecerá em seu sistema. :)

Até mais!

Nenhum comentário: