Ho bisogno di mappare le coordinate X, Y dell'apert sul Touchmap X, Y all'interno di ImageView per fare questo uso il seguente approccio.Ottieni le coordinate x e y reali degli utenti toccate
Tuttavia questo approccio sembra funzionare solo quando ho uno:
una) Zoom completamente l'immagine (fino in fondo)
b) Funziona in ogni caso se mi metto a schermo intero delle applicazioni
final int index = event.getActionIndex();
touchLocation = new float[] {
event.getX(index), event.getY(index)
};
Matrix matrix = new Matrix();
ImageView view = getImageView();
view.getImageMatrix().invert(matrix);
matrix.postTranslate(view.getScrollX(), view.getScrollY());
matrix.mapPoints(touchLocation);
// touchLocation[0] is real x and [1] is real y
Tuttavia la mia attività è un'attività di ActionBar quindi ho una posizione leggermente sbagliata sull'asse Y. Ho provato a dedurre l'altezza di ActionBar e StatusBar ma questo non sempre funziona.
Ciò che è strano è che a schermo intero non importa se io ingrandisco completamente la mia immagine dentro o fuori ottengo sempre coordinate corrette calcolate tuttavia con qualsiasi altro tipo di attività questo non mapperà i punti correttamente.
da dove ricevi l'evento? è l'evento che proviene da un evento touch da un genitore della vista immagine o dalla vista immagine stessa? –
Penso che dovresti fare riferimento a questo link: [Come ottenere l'altezza della barra delle azioni] (http://stackoverflow.com/questions/12301510/how-to-get-the-actionbar-height). Aiuterà a calcolare la coordinata X e Y corretta. Ho riscontrato anche questo problema. – Joey
Quindi stai iniziando con le coordinate assolute sullo schermo e hai bisogno di convertire in coordinate relative alla parte superiore sinistra dell'immagine? –