Ho lavorato su una piccola applicazione molto semplice utilizzando una vista estesa. Il problema è che non riesco a trovare ciò che è stato premuto nel mio onTouchEvent. Ho capito che devo confrontare i punti di pressione (xey) con gli elementi e vedere quale potrebbe essere.Checkin se premuto all'interno di rectF in onTouchEvent
Ma ... ho dichiarato un rettangolo utilizzando:
Paint color= new Paint();
color.setColor(Color.BLACK);
rectF = new RectF(0.0f, 0.0f, 1.0f, 0.5f) ;
canvas.drawRect(rectF, color);
Fin qui tutto bene, ma nella funzione onTouchEvent
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction() ;
float x = event.getX() ;
float y = event.getY() ;
switch(action) {
case MotionEvent.ACTION_DOWN:
if(rectF().contains(x, y)) {
// Something should happen
}
}
invalidate();
return true ;
}
ho impostato il rectF con un qualche tipo di relativa punti che vanno da 0-1, ma X e Y ottengo dagli intervalli di eventi da 0 in su a seconda delle dimensioni dello schermo.
Posso convertire facilmente uno dei valori?
Modifica
pensato che qualcuno era interessato alla soluzione finale ...
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction() ;
float x = event.getX() ;
float y = event.getY() ;
int width = this.getWidth() ;
int height = this.getHeight() ;
switch(action) {
case MotionEvent.ACTION_DOWN:
if(rectF().contains(x/width, y/height)) {
// Something should happen
}
}
return true ;
}
ho scoperto che ho invece voluto la larghezza e l'altezza della vista, in modo da usato 'this.getHeight()' e 'this.getWidth()'. – dubbe
@dubbe sicuro, non ero a conoscenza del tuo contesto, quindi ho dato consigli sul caso più semplice – kostja
Lo so, ed è stato un consiglio perfetto, ho appena chiarito nel caso in cui qualcun altro sta cercando la stessa cosa! – dubbe