jueves, 10 de mayo de 2012

Usando Canvas de Android

En esta entrada les muestro el código para mostrar bolitas y que reaccionen al evento onTouch:

package com.cecy.practica3;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.LinearLayout;
public class Practica3Activity extends Activity implements OnTouchListener{
/** Called when the activity is first created. */
private float corX, corY;
private Lienzo fondo;
private int pintados[][] = new int[10][10];
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout linearLayout = (LinearLayout)findViewById(R.id.linearLayout1);
corX = 0;
corY = 0;
for(int j=0;j<10;j++){
for(int i=0; i<10; i++){
pintados[i][j] = 0;
}
}
fondo = new Lienzo(this);
fondo.setOnTouchListener(this);
linearLayout.addView(fondo);
}
public boolean onTouch(View v, MotionEvent event) {
corX = (float)event.getX();
corY = (float)event.getY();
fondo.invalidate();
return true;
}
class Lienzo extends View {
public Lienzo(Context context) {
super(context);
}
protected void onDraw(Canvas canvas) {
float ancho=canvas.getWidth();
float alto=canvas.getHeight();
float tamX = ancho/10;
float mitX = tamX/2;
float radio = 6;
float inicialX = mitX;
float inicialY = mitX;
Paint pincel1=new Paint();
pincel1.setARGB(255,124,205,124);
for(int j=0;j<10;j++){
for(int i=0; i<10; i++){
if(pintados[i][j] == 1 && corX < (inicialX+radio) && corX > (inicialX-radio) && corY > (inicialY-radio) && corY < (inicialY +radio)){
pincel1.setARGB(255,124,205,124);
canvas.drawCircle(inicialX, inicialY, radio, pincel1);
pintados[i][j] = 0;
}
else if(corX < (inicialX+radio) && corX > (inicialX-radio) && corY > (inicialY-radio) && corY < (inicialY +radio) && pintados[i][j] != 1){
pincel1.setARGB(255,255,0,0);
canvas.drawCircle(inicialX, inicialY, radio, pincel1);
pintados[i][j] = 1;
}
else if(pintados[i][j] == 1){
pincel1.setARGB(255,255,0,0);
canvas.drawCircle(inicialX, inicialY, radio, pincel1);
pintados[i][j] = 1;
}
else{
pincel1.setARGB(255,124,205,124);
canvas.drawCircle(inicialX, inicialY, radio, pincel1);
pintados[i][j] = 0;
}
inicialX = inicialX + tamX;
}
inicialY = inicialY + tamX;
inicialX = mitX;
}
//canvas.drawCircle(corX, corY, 15, pincel1);
}
}
}
view raw gistfile1.java hosted with ❤ by GitHub


Y con esto obtengo lo siguiente:



2 comentarios: