Generalidades

Jetpack Compose — NestedScrollHorizontalView — 2편Saver | Por Wolf Android Developer | Abril de 2022

Jetpack Compose — NestedScrollHorizontalView — 2편Saver Por Wolf Android

¡Hola!

Siguiendo con el artículo anterior Parte 1 Animable, ¡el tema de este artículo es «Ahorro»!

Si no ha leído la Parte 1, le recomendamos que vea la Parte 1 primero 🙂

Entonces, ahora, ¡veamos por qué usamos «Saver» y qué hace!

Jetpack Compose — NestedScrollHorizontalView — 2편Saver Por Wolf Android
pápago dice

Todavía no sé qué es un Saver, pero me gustaría dejar que Saver administre mi factura de alimentos durante un mes 🙁

Así que ahora veamos cómo se indica en la documentación oficial para desarrolladores de Android.

1649037890 271 Jetpack Compose — NestedScrollHorizontalView — 2편Saver Por Wolf Android
pápago también

A continuación están mis selecciones para «Ahorro».

  1. Convierte un objeto en algo almacenable.
  2. El tipo de guardado sigue a SaveableStateRegistry.
  3. Todos los tipos que se pueden guardar en un paquete se pueden guardar en un protector.
  4. Si el valor se puede guardar se puede comprobar con canBeSaved.
  5. Saver se puede pasar como el parámetro de RememberSaveable.

He oído hablar de él, pero hay muchas cosas de las que no estoy seguro.

Vamos a averiguar.

Registro estatal salvable

Se dice que la función guarda y restaura el estado usando el mecanismo de estado que guarda una instancia de un componente (Compose tiene un estado para cada función @Composable, por lo que puede ser una característica muy útil)

=> ¡También puede ver una función llamada canBeSaved en la selección! Se dice que devuelve verdadero si el valor se puede almacenar con este amigo.

manojo

  • Usamos mucho los paquetes, pero no necesitamos recordar todos los tipos que almacenamos. ¡Porque tenemos autocompletar!
1649037890 158 Jetpack Compose — NestedScrollHorizontalView — 2편Saver Por Wolf Android

어후.. 근데 작성 할 내용이 너무 많습니다. 우리 궁금하면 공식 문서에서 찾아 보는걸로 해요 :)

Recuerda guardar

1649037890 205 Jetpack Compose — NestedScrollHorizontalView — 2편Saver Por Wolf Android

RememberSaveable es un poco diferente de la función de recordar que uso mucho.

En Compose, a menudo usamos la función de recordar porque la función @Composable tiene una función de recomposición.

Voy a explicar la función de recordar!
Las funciones @Composable tienen estado.

Si una función @Composable cambia el estado como un elemento externo, se produce la reorganización, la representación y el repintado de la vista.
En este punto, no desea inicializar la variable solo porque se vuelve a representar, pero tenga en cuenta lo que puede usar.

¡Puede usar la función de recordar para guardar el estado de una variable!

@Composable
fun TestFuntion(){
// 리 컴포지션 될 때마다 count 변수가 0으로 초기화됨.
val count = 0
)
@Composable
fun TestFuntion(){
// 리 컴포지션 되어도 count 변수가 유지됨.
val count = remember { 0 }
}

Luego volvemos a recordar Saveable

De acuerdo con la traducción de Papago anterior, el estado puede persistir en caso de cambios en la configuración de la pantalla o muerte del proceso.

Y la asignación también puede guardar el estado de la variable en forma de paquete.

¡si! , ¿qué pasa con una variable de un tipo que no se puede almacenar?
* Paquete
* protector de mapa
* ¡Se puede guardar como ListSaver!

Conocí a un amigo llamado Saver en algún momento.
Si sacamos la conclusión de lo anterior,

«Ahorro» se puede proporcionar como un argumento para recordar Guardarable,
Puede guardar datos en forma de Bundle, Parcelize, MapSaver o ListSaver.

¡concentración! ahora es dificil 🙁

Jetpack Compose — NestedScrollHorizontalView — 2편Saver Por Wolf Android
Nada es facil

Ahora, recordemos lo que vimos en la Parte 1.
El siguiente proceso se repite rápidamente a medida que el usuario se desplaza por la pantalla.

  • detener la animación -> guardar el valor de compensación -> iniciar la animación

Bueno, si cambia la información de compensación en una función @Composable con estado, por supuesto que ocurrirá la refactorización, ¿verdad? Así que uso un tipo llamado ListSaver para los valores que cambian. [ offset, maxOffset ] Decidimos mantener la información junta.
(explicado debajo del código)

save = {} // convierte el valor en una lista almacenable
restaurar = {} // Convierte el valor restaurado a la clase original

  1. Primero, vamos a crear un Saver en forma de listSaver, que se proporcionará para RememberSaveable (offset, maxOffset).
  2. El valor a restaurar también se denomina valor guardado.eso[0]eso[1]
  3. Devuelve ScrollState para aplicarlo a NestedScrollHorizontalPager.
  4. Ahora que podemos capturar el desplazamiento de desplazamiento a medida que el usuario se desplaza, todo lo que queda es redefinir el nestedScrollConnection.
    La razón para redefinirlo es que conocemos el valor de compensación y necesitamos redefinir el evento de desplazamiento para eliminar o mostrar el contenido superior.
  5. Entonces, el siguiente artículo es sobrescribir el evento NestedScrollConnection().

Cuando escribí sobre el tema «Ahorro» de esta publicación, parecía que había muchas partes que la gente no entendería cuando las viera.
Si tiene alguna pregunta sobre el contenido de las Partes 1 y 2, déjela en los comentarios. 🙂

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba