项目作者: alorma

项目描述 :
Android #JetpackCompose Settings library
高级语言: Kotlin
项目地址: git://github.com/alorma/Compose-Settings.git
创建时间: 2021-04-22T15:33:05Z
项目社区:https://github.com/alorma/Compose-Settings

开源协议:MIT License

下载


Compose Settings - Multiplatform


Badge Android

Badge iOS

Badge JVM

Badge wasm/JS

Build
Maven Central

Dokka

Buy Me A Coffee

Preview

This library provides a set of Settings like composable items to help android Jetpack Compose
developers build complex settings screens without all the boilerplate.

Ui tiles

Component Screenshot
SettingsMenuLink menu.png
SettingsCheckbox checkbox.png
SettingsTriStateCheckbox triState-checkbox
SettingsRadioButton radiobutton.png
SettingsSwitch switch.png
SettingsGroup group.png

Ui tiles expanded

Component Screenshot
SettingsSlider slider.png

Install

  1. ##// groovy
  2. implementation 'com.github.alorma.compose-settings:ui-tiles:$version'
  3. implementation 'com.github.alorma.compose-settings:ui-tiles-extended:$version'
  4. [...]
  5. // kotlin DSL
  6. implementation("com.github.alorma.compose-settings:ui-tiles:$version")
  7. implementation("com.github.alorma.compose-settings:ui-tiles-extended:$version")
  8. [...]
  9. // Catalog versions:
  10. [versions]
  11. compose-settings = "{{libVersion}}"
  12. [libraries]
  13. composeSettings-ui = { group = "com.github.alorma.compose-settings", name = "ui-tiles", version.ref = "compose-settings" }
  14. composeSettings-ui-extended = { group = "com.github.alorma.compose-settings", name = "ui-tiles-extended", version.ref = "compose-settings" }

Usage

  1. SettingsMenuLink(
  2. title = { Text(text = "Setting title") },
  3. subtitle = { Text(text = "Setting subtitle") },
  4. modifier = Modifier,
  5. enabled = false / true,
  6. icon = { Icon(...) },
  7. action = { IconButton() },
  8. onClick = { ... },
  9. )

menu.png

SettingsCheckbox:
  1. SettingsCheckbox(
  2. state = false / true,
  3. title = { Text(text = "Setting title") },
  4. subtitle = { Text(text = "Setting subtitle") },
  5. modifier = Modifier,
  6. enabled = false / true,
  7. icon = { Icon(...) },
  8. onCheckedChange = { newState: Boolean -> },
  9. )

checkbox.png

SettingsTriStateCheckbox:
  1. SettingsTriStateCheckbox(
  2. state = false / true / null,
  3. title = { Text(text = "Setting title") },
  4. subtitle = { Text(text = "Setting subtitle") },
  5. modifier = Modifier,
  6. enabled = false / true,
  7. icon = { Icon(...) },
  8. onCheckedChange = { newState: Boolean -> },
  9. )

triState-checkbox.png

SettingsRadioButton:
  1. SettingsRadioButton(
  2. state = false / true,
  3. title = { Text(text = "Setting title") },
  4. subtitle = { Text(text = "Setting subtitle") },
  5. modifier = Modifier,
  6. enabled = false / true,
  7. icon = { Icon(...) },
  8. onClick = { },
  9. )

radiobutton.png

SettingsSwitch:
  1. SettingsSwitch(
  2. state = false / true,
  3. title = { Text(text = "Setting title") },
  4. subtitle = { Text(text = "Setting subtitle") },
  5. modifier = Modifier,
  6. enabled = false / true,
  7. icon = { Icon(...) },
  8. onCheckedChange = { newState: Boolean -> },
  9. )

switch.png

SettingsSlider:
  1. SettingsSlider(
  2. value = x.xf,
  3. valueRange = X.f..Y.f,
  4. steps = X,
  5. title = { Text(text = "Setting title") },
  6. subtitle = { Text(text = "Setting subtitle") },
  7. modifier = Modifier,
  8. enabled = false / true,
  9. icon = { Icon(...) },
  10. onValueChange = { newValue: Float -> },
  11. )

slider.png

SettingsGroup

Updates on enabled will be reflected on it’s internal components unless you change their enabled state manually.

  1. SettingsGroup(
  2. modifier = Modifier,
  3. enabled = false / true,
  4. title = { Text(text = "SettingsGroup") },
  5. contentPadding = PaddingValues(16.dp),
  6. ) {
  7. SettingsMenuLink(...)
  8. SettingsCheckbox(...)
  9. SettingsSwitch(...)
  10. ...
  11. }

group.png