Skip to content

seyoungcho2/FilledSliderCompose

Repository files navigation

Filled Slider Compose Banner


API License API

What's Filled Slider Compose

FilledSlider is a customizable slider component built with Jetpack Compose, featuring a visually appealing filled track. It offers smooth and precise control over various settings and can be easily integrated into your Android app or project. With options for different colors, orientations, and progression types, FilledSlider enhances the user experience and adds a touch of elegance to your user interface.

Preview


animated



Downloads

Maven Central

Maven Central


Getting Started

Add the mavenCentral() on project level(root level) build.gradle file:

allprojects {
    repositories {
        mavenCentral()
    }
}

Add dependency on module level build.gradle file:

build.gradle

dependencies {
    implementation "io.github.seyoungcho2:filled-slider-compose:1.0.0"
}

If using build.gradle.kts

build.gradle.kts

dependencies {
    implementation("io.github.seyoungcho2:filled-slider-compose:1.0.0")
}

How to use

FilledSlider provides various parameters to customize.

@Composable
fun FilledSlider(
    modifier: Modifier,
    sliderShape: Shape = RoundedCornerShape(50),
    isEnabled: Boolean = true,
    sliderColor: SliderColor = SliderColor(),
    sliderOrientation: SliderOrientation = SliderOrientation.Vertical,
    sliderType: SliderType = SliderType.Continuous,
    dragSensitivity: Float = 1f,
    valueRange: ClosedFloatingPointRange<Float> = 0f..1f,
    currentValue: Float,
    setCurrentValue: (Float) -> Unit
)
  • modifier: The [Modifier] to be applied to this Slider.
  • sliderShape: [Shape] applied to the Slider.
  • isEnabled: Change slider enabled state. If disabled color is set to
  • sliderColor: Colors applied to the Slider.
  • sliderOrientation: Orientation for Slider. Vertical or Horizontal.
  • sliderType: Continuous and Discrete types are supported.
  • dragSensitivity: Drag sensitivity for slider. If the value is 1, the slider moves only as much as it is dragged.
  • valueRange: Value range for slider
  • currentValue: Current value for the Slider. It's forced to be in the range of [maxValue] and [minValue].
  • setCurrentValue: Callback in which value should be updated

sliderShape

animated


Pass class which implements Shape on Compose.

  • RectangleShape
@Composable
fun RectangleShapeSlider() {
    var currentValue by remember { mutableStateOf(20f) }
    FilledSlider(
        modifier = Modifier.size(50.dp, 150.dp),
        sliderShape= RectangleShape,
        sliderColor = SliderColor(
            enabledTrackColor = Color(0xFFC6B8FF),
            enabledIndicationColor = Color(0xFF7D5FFF)
        ),
        currentValue = currentValue,
        sliderType = SliderType.Continuous,
        valueRange = 0f..100f,
        setCurrentValue = {
            currentValue = it
        }
    )
}
  • RoundedCornerShape(50)
@Composable
fun RoundedCornerShapeSlider() {
    var currentValue by remember { mutableStateOf(20f) }
    FilledSlider(
        modifier = Modifier.size(50.dp, 150.dp),
        sliderShape= RoundedCornerShape(50),
        sliderColor = SliderColor(
            enabledTrackColor = Color(0xFFC6B8FF),
            enabledIndicationColor = Color(0xFF7D5FFF)
        ),
        currentValue = currentValue,
        sliderType = SliderType.Continuous,
        valueRange = 0f..100f,
        setCurrentValue = {
            currentValue = it
        }
    )
}



sliderColor

SliderColor consist of 4 properties enabledTrackColor, disabledTrackColor, enabledIndicationColor, disabledIndicationColor

data class SliderColor(
    val enabledTrackColor: Color = Color.Gray,
    val disabledTrackColor: Color = enabledTrackColor,
    val enabledIndicationColor: Color = Color.Black,
    val disabledIndicationColor: Color = enabledIndicationColor
)
  • enabledTrackColor: Track color when the slider is enabled.
  • disabledTrackColor: Track color when the slider is disabled.
  • enabledIndicationColor: Indication color for progression when the slider is enabled
  • disabledIndicationColor: Indication color for progression when the slider is disabled.

sliderType

animated


SliderType makes slider progression to be Discrete or Continuous.

  • SliderType.Continuous : SliderType.Continuous makes slider progression changes continuously.
@Composable
fun ContinuousSlider() {
    var currentValue by remember { mutableStateOf(20f) }
    FilledSlider(
        modifier = Modifier.size(50.dp, 150.dp),
        sliderColor = SliderColor(
            enabledTrackColor = Color(0xFFC6B8FF),
            enabledIndicationColor = Color(0xFF7D5FFF)
        ),
        currentValue = currentValue,
        sliderType = SliderType.Continuous,
        valueRange = 0f..100f,
        setCurrentValue = {
            currentValue = it
        }
    )
}
  • SliderType.Discrete : SliderType.Discrete makes slider progression changes discretely.
@Composable
fun DiscreteSlider() {
    var currentValue by remember { mutableStateOf(20f) }
    FilledSlider(
        modifier = Modifier.size(50.dp, 150.dp),
        sliderColor = SliderColor(
            enabledTrackColor = Color(0xFFC6B8FF),
            enabledIndicationColor = Color(0xFF7D5FFF)
        ),
        currentValue = currentValue,
        sliderType = SliderType.Discrete(5),
        valueRange = 0f..100f,
        setCurrentValue = {
            currentValue = it
        }
    )
}



sliderOrientation

animated


SliderOrientation is responsible for controlling the dragging behavior of the slider component.

  • SliderOrientation.Horizontal: SliderOrientation.Horizontal makes slider progression to be changed by dragging right or left along the x-axis.
@Composable
fun HorizontalSlider() {
    var currentValue by remember { mutableStateOf(20f) }
    FilledSlider(
        modifier = Modifier.size(150.dp, 50.dp).align(Alignment.Center),
        sliderColor = SliderColor(
            enabledTrackColor = Color(0xFFC6B8FF),
            enabledIndicationColor = Color(0xFF7D5FFF)
        ),
        sliderOrientation = SliderOrientation.Horizontal,
        currentValue = currentValue,
        valueRange = 0f..100f,
        setCurrentValue = {
            currentValue = it
        }
    )
}
  • SliderOrientation.Vertical: SliderOrientation.Vertical makes slider progression to be changed by dragging up or down along the y-axis.
@Composable
fun VerticalSlider() {
    var currentValue by remember { mutableStateOf(20f) }
    FilledSlider(
        modifier = Modifier.size(50.dp, 150.dp),
        sliderShape= RoundedCornerShape(50),
        sliderColor = SliderColor(
            enabledTrackColor = Color(0xFFC6B8FF),
            enabledIndicationColor = Color(0xFF7D5FFF)
        ),
        sliderOrientation = SliderOrientation.Vertical,
        currentValue = currentValue,
        valueRange = 0f..100f,
        setCurrentValue = {
            currentValue = it
        }
    )
}

dragSensitivity

animated

Sensitivity for drag. Default is set to 1 which means indication changes as dragged amount.

@Composable
fun DragSensitivity2Slider() {
    var currentValue by remember { mutableStateOf(20f) }
    FilledSlider(
        modifier = Modifier.size(50.dp, 150.dp),
        sliderColor = SliderColor(
            enabledTrackColor = Color(0xFFC6B8FF),
            enabledIndicationColor = Color(0xFF7D5FFF)
        ),
        currentValue = currentValue,
        dragSensitivity = 1f,
        valueRange = 0f..100f,
        setCurrentValue = {
            currentValue = it
        }
    )
}



Find this repository useful?👍

  • Support it by making star⭐!
    You can see stargazers here.
  • Also, follow me on GitHub for further updates

License

Designed and developed by 2023 seyoungcho2 (Seyoung Cho)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

Provides Filled Slider for Jetpack Compose

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages