---
title: "RemoteCurvedProgressIndicator"
description: "A generalized progress arc component for display on Wear OS."
type: "composable"
lastmod: "2026-08-27"
---
## API Reference

### RemoteCurvedProgressIndicator

> Source set: Android

```kotlin
@Composable
public fun RemoteCurvedProgressIndicator(
    progress: RemoteFloat,
    modifier: RemoteModifier = RemoteModifier,
    enabled: RemoteBoolean = true.rb,
    startAngle: RemoteFloat = RemoteProgressIndicatorDefaults.CurvedIndicatorStartAngle,
    sweepAngle: RemoteFloat = RemoteProgressIndicatorDefaults.CurvedIndicatorSweepAngle,
    colors: RemoteProgressIndicatorColors = RemoteProgressIndicatorDefaults.colors(),
    strokeWidth: RemoteDp = RemoteProgressIndicatorDefaults.CurvedIndicatorStrokeWidth,
    padding: RemoteDp = RemoteProgressIndicatorDefaults.CurvedIndicatorPadding,
    gapAngleDegrees: RemoteFloat = RemoteProgressIndicatorDefaults.CurvedIndicatorGapAngleDegrees,
    dotCollapseFreezeFraction: RemoteFloat =
        RemoteProgressIndicatorDefaults.CurvedIndicatorDotCollapseFreezeFraction,
    animationDurationMillis: Int = RemoteProgressIndicatorDefaults.AnimationDurationMillis,
    reverseDirection: RemoteBoolean = false.rb,
)
```

A generalized progress arc component for display on Wear OS.

For an animated progress, see:

#### Parameters

| | |
| --- | --- |
| progress | A float value representing progress (typically 0f to 1f). |
| modifier | Modifier to be applied to the canvas. |
| enabled | controls the enabled state. When enabled is `false`, this component will appear visually disabled. |
| startAngle | The starting position of the progress arc in degrees. For example, 135 is bottom left. |
| sweepAngle | The total sweep angle of the progress arc in degrees. For example, 90 degrees. |
| colors | [RemoteProgressIndicatorColors](/jetpack-compose/androidx.wear.compose.remote/remote-material3/classes/RemoteProgressIndicatorColors) that will be used to resolve the indicator and track color. |
| strokeWidth | Width of the arc in dp. |
| padding | Padding from the canvas/screen edge in dp. |
| gapAngleDegrees | Size of the visual separation gap between segments in degrees. Set to 0f for continuous bars. |
| dotCollapseFreezeFraction | The progress fraction (0f to 1f) at which the collapsing dot freezes its minimum size. `0f` means continuous collapse down to 0; `1f` means freezing at full dot size without shrinking; for example, `0.5f` means that the dot won't collapse past half of its original size. |
| animationDurationMillis | Duration of the player-side dynamic progress transition in milliseconds. |
| reverseDirection | Whether to reverse the direction of the progress indicator (RTL). |

## Code Examples

### RemoteCurvedProgressIndicatorSample

```kotlin
@Sampled
@RemoteComposable
@Composable
@WearPreviewDevices
@PreviewWrapper(RemoteComponentPreviewWrapper::class)
public fun RemoteCurvedProgressIndicatorSample(
    modifier: RemoteModifier = RemoteModifier.size(150.rdp)
) {
    RemoteCurvedProgressIndicator(
        progress = 0.75f.rf,
        modifier = modifier,
        startAngle = 135f.rf,
        sweepAngle = 90f.rf,
        animationDurationMillis = 0,
    )
}
```

### RemoteCurvedProgressIndicatorAnimatedSample

```kotlin
@Sampled
@RemoteComposable
@Composable
@WearPreviewDevices
@PreviewWrapper(RemoteComponentPreviewWrapper::class)
public fun RemoteCurvedProgressIndicatorAnimatedSample(
    modifier: RemoteModifier = RemoteModifier.size(150.rdp)
) {
    val progress = rememberMutableRemoteFloat { 0.25f.rf }
    val animatedProgress =
        animateRemoteFloatAsState(
            targetValue = progress,
            animationSpec = remoteTween(durationMillis = 250),
        )
    val toggleAction = valueChange(progress, ((progress + 0.25f) % 1f).createReference())

    RemoteCurvedProgressIndicator(
        progress = animatedProgress,
        modifier = modifier.clickable(toggleAction),
        startAngle = 135f.rf,
        sweepAngle = 90f.rf,
    )
}
```
