Entender el Canvas.saveLayer de Android (…)

Espero que los métodos saveLayer me permitan dibujar diferentes "capas" y, una vez que el dibujo haya terminado, fusione las capas con el lienzo en el orden que elija.

La pregunta obvia es "¿por qué no acaba de reorganizar sus operaciones de dibujo en su lugar?" La respuesta es que no puedo:

Tengo un Camino que necesito para dibujar sobre un lienzo. En el fondo / índice z más bajo quiero dibujar el camino cerrado y con unos pocos puntos adicionales usando un estilo de relleno. Luego, encima de eso, quiero dibujar un esquema de sólo los puntos que estaban originalmente en el Camino.

Puesto que no puedo deshacer la adición de puntos al Camino, mis únicas opciones son clonar el camino, o dibujar a una segunda capa que luego se puede colocar encima de todo lo demás.

SaveLayer () parece ofrecer esa funcionalidad, pero no se comporta de la manera que esperaba. El flujo básico de mis operaciones es así:

int overlay = canvas.saveLayer(...); // drawing operations for my uppermost layer ... int background = canvas.saveLayer(...); // drawing operations for my background layer ... // merge the offscreen background bitmap with the canvas: canvas.restoreToCount(background); // merge the offscreen overlay bitmap with the canvas: canvas.restoreToCount(overlay); 

Cuando se ejecuta el código, el orden del fondo y la superposición no han cambiado en absoluto; Lo que se obtiene primero es en la parte inferior y lo que se dibuja pasado está en la parte superior. Aún más extraño para mí es que puedo comentar completamente las dos llamadas a restoreToCount () y nada cambia. De acuerdo con el javadoc, nada debe ser dibujado en el lienzo hasta que se invoca un equilibrio restore ().

Obviamente estoy completamente malentendida de la función de este método. ¿Puede alguien ayudarme a entender el uso de saveLayer, o tal vez sugerir una forma alternativa de capa mis operaciones de dibujo?

¡Gracias! Mella

One Solution collect form web for “Entender el Canvas.saveLayer de Android (…)”

SaveLayer () no permite reorganizar las capas en un orden aleatorio. La única manera de hacerlo es dibujar en mapas de bits fuera de pantalla usted mismo. Tenga en cuenta que el padre de su vista llamará a save () / restore () alrededor de su llamada onDraw (), lo que hará que sus capas sean compuestas.

  • En la unidad de pruebas de Android, cuándo utilizar los casos de prueba?
  • ¿Es incorrecto ejecutar runnable.run ()?
  • Android aceleración de hardware TextureView con lockCanvas ()
  • Bloqueo de hilo principal de Android que bloquea hilo de WebView
  • Abrir aplicación de navegador a página web de Android
  • ¿Cómo puede mi aplicación Android comunicarse con un daemon nativo?
  • ¿Qué versión de Apache HTTP Client está incluida en Android 1.6?
  • Biblioteca Json Parsing Gson de Google: ¿Cuál es la diferencia entre JsonElement y JsonObject?
  • Android Studio: crea un proyecto Java sin dependencias de Android
  • Lamentablemente, (nombre de la aplicación) se ha detenido. Eclipse / Android
  • Los complementos no funcionan en Eclipse en Windows 7 64 bits
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.