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)
in pratica vorrei che se l'utente clicca un punto dello spazio occupato dalla bitmap cambi il colore della canvascodice: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); } }
questo metodo non funziona e non mi stupisco dato che è la mia prima app ma la cosa curiosa è che questa variante
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..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); } }
npon capisco xke.. alla fine sostituisco dei valori numerici con delle variabili che comunque contengono interi giusto??
Spero di essere stato chiaro

LinkBack URL
About LinkBacks
Rispondi quotando
