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:
- Android, NoSuchFieldError al iniciar la segunda actividad
- Android RSA Generación de pares de claves - ¿Debo usar Java estándar / Bouncy Castle / Spongy Castle / JSch / Other?
- Sustitución repetida de caracteres en String
- Java - Comparación de clases?
- Android: ScrollView no se desplaza con el teclado fuera
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
- Android Studio 1.0.2 m2responsory gradle issue
- Android OS 6.0.1 Desplome nativo en /system/lib/libc.so
- ¿Cómo implementar la facturación en la aplicación en una aplicación de Android?
- Implementación de HeartBeat en Atmosphere Framework (Android)
- Seguridad y autenticación cliente-servidor
- Android cómo pasar un Activity.class como un argumento para una función
- ¿Problemas con el uso de TCP y UDP en la misma aplicación?
- Compruebe si se ha interrumpido la descarga de archivos
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.
- ¿Responde automáticamente la llamada entrante mediante programación?
- Visualización de imágenes de almacenamiento en base a firebase en un RecyclerView