Saltearse al contenido

Linear Progress Indicator

MaterialMaterial3
LinearProgressIndicator Material2LinearProgressIndicator Material3

Es una barra horizontal que se llena de izquierda a derecha. Los indicadores de progreso muestran visualmente el estado de una operación. Usan el movimiento para llamar la atención del usuario sobre qué tan cerca se encuentra el proceso (por ejemplo, cargar o procesar datos).

También pueden indicar que el procesamiento se está llevando a cabo, sin hacer referencia a qué tan cerca está de completarse.

Implementación

Definición del componente

Terminal window
@Composable
fun LinearProgressIndicator(
progress: @FloatRange(from = 0.0, to = 1.0) Float,
modifier: Modifier = Modifier,
color: Color = MaterialTheme.colors.primary,
backgroundColor: Color = color.copy(alpha = IndicatorBackgroundOpacity),
strokeCap: StrokeCap = StrokeCap.Butt
)
AtributoDescripción
progressEs el progreso de este indicador, donde “0.0” representa ningún progreso y “1.0” representa el progreso completo. Los valores fuera de este rango son forzados a entrar en el rango.
modifierModificador que implementará el composable.
colorColor del indicador.
backgroundColorColor del fondo detras del indicador, visible cuando el progreso aun no ha rellenado el area del indicador.
strokeCapCapa para usar en los extremos del indicador.

Ejemplos

Indeterminados

Se realiza la animación de forma continua sin tener en cuenta el progreso.

LinearProgressIndicator Material2 example

Terminal window
@Composable
fun IndeterminateInidicator() {
Text("Indicador Indeterminado")
Spacer(modifier = Modifier.height(30.dp))
LinearProgressIndicator()
}

Determinados

Muestra exactamente cuánto progreso se realizó.

InicioCambio
Inicio ejemplo m2Cambio ejemplo m2
Terminal window
@Composable
fun MyIndicator(){
var progress by remember { mutableStateOf(0.1f) }
val animatedProgress by animateFloatAsState(
targetValue = progress,
animationSpec = ProgressIndicatorDefaults.ProgressAnimationSpec, label = "label"
)
LinearProgressIndicator(progress = progress)
Spacer(modifier = Modifier.height(30.dp))
OutlinedButton(
onClick = {
if (progress < 1f) progress += 0.1f
}
) {
Text("Incrementar")
}
}