Tengo una vista personalizada donde uso transformaciones. Hasta ahora todo bien, funcionan como setRotationY()
, setScaleX()
, setTranslationY()
o incluso getMatrix()
funcionan como se esperaba, puedo manipular mi vista y se muestra bien. Donde golpeé la pared es que una serie de funciones se comportan de manera extraña después de eso. Por ejemplo, funciona como getHitRect()
¡devuelve valores totalmente extraños! Esto no está ayudando a mis eventos táctiles.Cómo obtener los límites adecuados de una vista después de la transformación Matrix
Intenté sobrecargar la función, pero aún está lejos de funcionar, especialmente cuando se usa la rotación o la escala (la traducción funciona bien). Creo que esto tiene algo que ver con el hecho de que la matriz se expresa en coordenadas para niños, entonces, ¿cómo puedo obtenerla en la coordinación de los padres?
@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);
}
¿Se puede obtener un valor más directo directamente desde alguna función? Al igual que la nueva altura, ancho, arriba o abajo.
muchas gracias por su respuesta, me ayuda :) –
Otra cosa para Android> = 4.0: 'getHitRect()' no se llamará automáticamente si se está haciendo clic en su punto de vista. Para agregar compatibilidad para proyectos que usan SDK <4.0, usar 'isTransformedTouchPointInView()' en el documento principal funciona incluso si no es perfecto. –