Ho una vista personalizzata in cui utilizzo le trasformazioni. Fin qui tutto bene, funzione come setRotationY()
, setScaleX()
, setTranslationY()
o anche getMatrix()
funzionano come previsto, sono in grado di manipolare la mia vista e viene visualizzata correttamente. Il punto in cui colpisco il muro è che un certo numero di funzioni si comporta stranamente dopo di ciò. Ad esempio, funzione come getHitRect()
restituisce valori assolutamente strani! Questo non sta aiutando i miei eventi touch.Come ottenere i limiti corretti di una vista dopo la trasformazione Matrix
Ho provato a sovraccaricare la funzione, ma è ancora lontano dal lavorare in particolare quando si utilizza la rotazione o il ridimensionamento (Traduzione che funziona bene attraverso). Penso che questo sia qualcosa a che fare con il fatto che la matrice è espressa in coordinate figlio, quindi come posso farlo coordinare nei genitori?
@Override
public void getHitRect(Rect outRect){
RectF rect = new RectF();
rect.top = (float) this.getTop();
rect.bottom = (float) this.getBottom();
rect.left = (float) this.getLeft();
rect.right = (float) this.getRight();
this.getMatrix().mapRect(rect);
rect.round(outRect);
}
Posso ottenere un valore più diretto direttamente da qualche funzione? Come la nuova altezza, larghezza, superiore o inferiore.
grazie mille per la risposta, mi aiuta :) –
Un'altra cosa per Android> = 4.0: 'getHitRect()' non sarà chiamato automaticamente se si sta cliccando sul tuo punto di vista. Per aggiungere compatibilità per i progetti che utilizzano SDK <4.0, l'uso di 'isTransformedTouchPointInView()' su genitore funziona anche se non è perfetto. –