Ruta de intersección en android
Tengo 2 objetos de la trayectoria en mi código androide. He intentado toda la manera de comprobar el tiempo que estas trayectorias son intersects o no, pero no capaz de hacerlo. Cómo puedo comprobar el tiempo los caminos son intersecciones o no. Apreciar cualquier buena respuesta ….. Gracias,
- Función de Java que llama y devuelve valor en Android
- Cómo importar el proyecto android como biblioteca y NO compilarlo como apk (Android studio 1.0)
- Girar la imagen en sentido horario usando LibGDX
- ¿Cómo hago "subcategorías" en Preferencias
- Sipdroid - Otra llamada entrante no se muestra mientras se continúa
- Usando get () y put () para acceder a valores de píxeles en OpenCV para Java
- Índices de eventos multitouch para Android
- ¿Cómo XOR los valores de píxeles de dos mapas de bits juntos?
- Importar 3 SDKs, obtiene el error: Se han encontrado 3 versiones de android-support-v4.jar
- ¿Cómo establecer la posición del diálogo?
- Recuperar android.os.Build ... propiedades del sistema mediante la aplicación puramente nativa de Android
- Usando Arrays.copyOfRange () para debajo de API 9
- Comportamiento diferente de la clase Calendar en Java y Android
Echa un vistazo a Region.op
No lo he probado pero sugeriría usarlo:
Region.setPath(Path path, Region clip);
Para obtener una región de ambos caminos y después puede utilizar:
if (region1.op(region2,Region.Op.INTERSECT)) { // intersection }
Para comprobar la intersección …
A partir de la API 19, Path
ahora tiene un método op()
.
boolean intersects = path.op(p1,p2,Path.Op.INTERSECT)
La respuesta dada por Dheeraj tiene la respuesta a su pregunta:
https://stackoverflow.com/a/9918830/1268168
Aquí está una copia y pega de su respuesta:
Otro método en el que puedo pensar trabajará con objetos simples que se pueden construir usando Paths.
Una vez que haya dos objetos cuyos límites estén representados por rutas, puede probar esto:
Path path1 = new Path(); path1.addCircle(10, 10, 4, Path.Direction.CW); Path path2 = new Path(); path2.addCircle(15, 15, 8, Path.Direction.CW); Region region1 = new Region(); region1.setPath(path1, clip); Region region2 = new Region(); region2.setPath(path2, clip); if (!region1.quickReject(region2) && region1.op(region2, Region.Op.INTERSECT)) { // Collision! }
Una vez que tienes tus objetos como Caminos, puedes dibujarlos directamente usando drawPath (). También puede realizar el movimiento mediante la transformación () de la ruta.
Desde mi entendimiento, la variable "clip" en el código anterior debería ser el cuadro delimitador de la ruta. Para fines generales, uso
Region clip = new Region(0, 0, layoutWidth, layoutHeight);
Donde el ancho y la altura del diseño pueden ser del tamaño de su lienzo o actividad o lo que sea.