ciao
sono davanti a un blocco che nn riesco a superare.
Sto sviluppando un'applicazione android e nn mi funziona il seguente metodo
premetto la variabile test é una bitmap e x e y vengono aggiornati a ogni tocco dello schermo nel metodo onTouch(View v, MotionEvent event)
codice:
public void run() {
// TODO Auto-generated method stub
Random position = new Random();
Thread tempo = new Thread();
int randomPosX = 0;
int randomPosY = 0;
while(isRunning){
if(!ourHolder.getSurface().isValid()){
continue;
}
Canvas canvas = ourHolder.lockCanvas();
canvas.drawRGB(02, 150, 150);
randomPosX = position.nextInt(canvas.getWidth());
randomPosY = position.nextInt(canvas.getHeight());
canvas.drawBitmap(test,randomPosX,randomPosY,null);
try {
tempo.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if((x >randomPosX && x <randomPosXtest.getWidth()) && (y>randomPosY && y<randomPosY+test.getWidth)){
canvas.drawRGB(02, 150, 0);
}
ourHolder.unlockCanvasAndPost(canvas);
}
}
in pratica vorrei che se l'utente clicca un punto dello spazio occupato dalla bitmap cambi il colore della canvas
questo metodo non funziona e non mi stupisco dato che è la mia prima app ma la cosa curiosa è che questa variante
codice:
public void run() {
// TODO Auto-generated method stub
Random position = new Random();
Thread tempo = new Thread();
float randomPosX = 0;
float randomPosY = 0;
while(isRunning){
if(!ourHolder.getSurface().isValid()){
continue;
}
Canvas canvas = ourHolder.lockCanvas();
canvas.drawRGB(02, 150, 150);
randomPosX = position.nextInt(canvas.getWidth());
randomPosY = position.nextInt(canvas.getHeight());
canvas.drawBitmap(test,100,100,null);
try {
tempo.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if((x>100 && x<150) && (y >100 && y<150)){
canvas.drawRGB(02, 150, 0);
}
ourHolder.unlockCanvasAndPost(canvas);
}
}
nella quale la bitmap viene stampata in un punto preciso (100,100) e non più casuale, e quindi conoscendone la posizione posso usare ((x>100 && x<150) && (y >100 && y<150)) invece di ((x >randomPosX && x <randomPosXtest.getWidth()) && (y>randomPosY && y<randomPosY+test.getWidth)) come condizione dell'if per vedere dove è caduto il tocco dell'utente, funziona tutto perfettamente..
npon capisco xke.. alla fine sostituisco dei valori numerici con delle variabili che comunque contengono interi giusto??
Spero di essere stato chiaro