Criando componentes

Top  Previous  Next

Este exemplo mostra como criar 2 componentes.

Um baseado no TextView e outro no View sobre-escrevendo o onDraw

Tela

 

Java

 
package com.visual;

 

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;

 

public class VisualActivity extends Activity implements OnClickListener {

 

 @Override

 protected void onCreate(Bundle icicle) {

         super.onCreate(icicle);

         setContentView(R.layout.main);

         Button botao = (Button) findViewById(R.id.botao);

         botao.setOnClickListener(this);

 }

 

 public void onClick(View arg0) {

         TextoNumerico text = (TextoNumerico) findViewById(R.id.numero);

         int numero = text.getNumero();

         Toast.makeText(this, "numero: " + numero, Toast.LENGTH_SHORT).show();

 }

}

 

main.xml

 

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:orientation="vertical" >

 

  <TextView

      android:layout_width="fill_parent"

      android:layout_height="wrap_content"

      android:text="Digite o número" />

 

  <com.visual.TextoNumerico

      android:id="@+id/numero"

      android:layout_width="fill_parent"

      android:layout_height="wrap_content"

      android:numeric="integer" />

 

  <Button

      android:id="@+id/botao"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:text="OK" />

 

  <com.visual.Quadrado

      android:id="@+id/quadrado"

      android:layout_width="fill_parent"

      android:layout_height="wrap_content" />

 

</LinearLayout>

 

fonte do TextoNumerico.java

 

package com.visual;

 

import android.content.Context;

import android.util.AttributeSet;

import android.widget.EditText;

 

public class TextoNumerico extends EditText {

 

 // construtor usado pelo "new"

 public TextoNumerico(Context context) {

         super(context);

 }

 

 // construtor usado pelo "xml"

 public TextoNumerico(Context context, AttributeSet attrs) {

         super(context, attrs);

 }

 

 // função criada por mim

 public int getNumero() {

         String s = getText().toString();

         try {

                 int i = Integer.parseInt(s);

                 return i;

         } catch (Exception e) {

         }

         return 0;

 }

}

 

Fonte do Quadrado.java

 

package com.visual;

 

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.util.AttributeSet;

import android.view.View;

 

public class Quadrado extends View {

 // para definir a cor RGB

 private Paint pincelVermelho;

 private Paint pincelPreto;

 private Paint pincelAzul;

 

 public Quadrado(Context context) {

         this(context, null);

 }

 

 public Quadrado(Context context, AttributeSet attrs) {

         super(context, attrs);

         setBackgroundColor(Color.LTGRAY);

 

         // Vermelho

         pincelVermelho = new Paint();

         pincelVermelho.setARGB(255, 255, 0, 0);

 

         // Preto

         pincelPreto = new Paint();

         pincelPreto.setARGB(255, 0, 0, 0);

 

         // Azul

         pincelAzul = new Paint();

         pincelAzul.setARGB(255, 0, 0, 255);

 

         // Configura a View para receber foco e tratar eventos de teclado

         setFocusable(true);

 }

 

 @Override

 public void onDraw(Canvas canvas) {

         super.onDraw(canvas);

 

         int y = 10;

 

         // Desenha um quadrado

         canvas.drawRect(10, y, 10 + 50, y + 50, pincelAzul);

 

         // desenha uma linha

         canvas.drawLine(50, 50, 100, 100, pincelPreto);

 

         // desenha um circulo

         canvas.drawCircle(100, 100, 20, pincelVermelho);

 }

}