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

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.

  • tipo de letra de fuente de cambio de spinner android
  • Una buena biblioteca de ORM de Java en Android
  • Problema de fuga de base de datos de proveedor de contenido de Android
  • Intención de inicio para actividad-alias
  • Cómo mostrar heart sign in android usando Html.fromHtml
  • Infinite Scrolling Image ViewPager
  • Cómo serializar para la clase android.location?
  • OnPostExecute no se llama después de la finalización AsyncTask
  • Error en la generación de Gradle en Android Studio
  • Creación de una aplicación de pantalla de bloqueo de Android.
  • ¿Por qué mi configuración de ejecución está deshabilitada en Android Studio?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.