|
1 | 1 | package showcase
|
2 | 2 |
|
3 | 3 | import androidx.compose.animation.core.*
|
4 |
| -import androidx.compose.foundation.background |
5 |
| -import androidx.compose.foundation.layout.Box |
6 | 4 | import androidx.compose.foundation.layout.Column
|
7 |
| -import androidx.compose.foundation.layout.size |
8 | 5 | import androidx.compose.material3.ExperimentalMaterial3Api
|
9 | 6 | import androidx.compose.material3.SliderDefaults
|
10 |
| -import androidx.compose.material3.SliderState |
11 | 7 | import androidx.compose.runtime.*
|
12 |
| -import androidx.compose.ui.Modifier |
13 |
| -import androidx.compose.ui.graphics.Color |
| 8 | +import androidx.compose.ui.platform.LocalDensity |
| 9 | +import androidx.compose.ui.unit.Density |
14 | 10 | import androidx.compose.ui.unit.dp
|
15 | 11 | import ir.mahozad.multiplatform.wavyslider.WaveAnimationSpecs
|
| 12 | +import ir.mahozad.multiplatform.wavyslider.WaveDirection |
16 | 13 | import ir.mahozad.multiplatform.wavyslider.WaveDirection.RIGHT
|
17 | 14 | import ir.mahozad.multiplatform.wavyslider.material3.Track
|
18 |
| -import androidx.compose.material.Slider as Slider2 |
19 |
| -import androidx.compose.material.SliderDefaults as SliderDefaults2 |
20 |
| -import androidx.compose.material3.Slider as Slider3 |
| 15 | +import ir.mahozad.multiplatform.wavyslider.material3.WaveAnimationSpecs |
21 | 16 | import androidx.compose.material3.SliderDefaults as SliderDefaults3
|
22 |
| -import ir.mahozad.multiplatform.wavyslider.material.WavySlider as WavySlider2 |
23 | 17 | import ir.mahozad.multiplatform.wavyslider.material3.WavySlider as WavySlider3
|
24 | 18 |
|
25 | 19 | @OptIn(ExperimentalMaterial3Api::class)
|
26 | 20 | @Composable
|
27 | 21 | fun App() {
|
28 |
| - val state = remember { SliderState(value = 0.67f) } |
29 |
| - Column { |
30 |
| - Slider2(value = state.value, onValueChange = { state.value = it }) |
31 |
| - WavySlider2( |
32 |
| - value = state.value, |
33 |
| - onValueChange = { state.value = it } |
34 |
| - ) |
35 |
| - WavySlider2( |
36 |
| - value = state.value, |
37 |
| - onValueChange = { state.value = it }, |
38 |
| - waveLength = 12.dp, |
39 |
| - waveHeight = 24.dp, |
40 |
| - waveVelocity = 14.dp to RIGHT, |
41 |
| - waveThickness = 1.dp, |
42 |
| - trackThickness = 5.dp, |
43 |
| - incremental = true, |
44 |
| - colors = SliderDefaults2.colors(activeTrackColor = Color.Red) |
45 |
| - ) |
46 |
| - WavySlider2( |
47 |
| - value = state.value, |
48 |
| - onValueChange = { state.value = it }, |
49 |
| - waveHeight = 0.dp |
50 |
| - ) |
51 |
| - |
52 |
| - WavyDivider() |
53 |
| - |
54 |
| - // FIXME: Some of the sliders have broken layout because all the sliders are using the same state instance |
55 |
| - // Is it a bug at all or is it intended? |
56 |
| - // It happens because there are `state.something = ...` assignments in the material3.WavySlider |
57 |
| - |
58 |
| - Slider3(state) |
59 |
| - Slider3( |
60 |
| - state = state, |
61 |
| - thumb = { Box(modifier = Modifier.size(64.dp).background(Color.Yellow)) } |
62 |
| - ) |
63 |
| - WavySlider3( |
64 |
| - state = state, |
65 |
| - thumb = { Box(modifier = Modifier.size(64.dp).background(Color.Red)) } |
66 |
| - ) |
67 |
| - WavySlider3(state, |
68 |
| - track = { |
69 |
| - SliderDefaults3.Track( |
70 |
| - sliderState = state, |
71 |
| - waveLength = 20.dp, |
72 |
| - thumbTrackGapSize = 0.dp |
| 22 | + CompositionLocalProvider(LocalDensity provides Density(1.23f)) { |
| 23 | + Column { |
| 24 | + var waveHeight by remember { mutableStateOf(10.dp) } |
| 25 | + WavySlider3( |
| 26 | + value = 0.02f, |
| 27 | + onValueChange = {}, |
| 28 | + waveLength = 24.dp, |
| 29 | + waveHeight = waveHeight, |
| 30 | + waveVelocity = 4.dp to WaveDirection.HEAD, |
| 31 | + animationSpecs = SliderDefaults3.WaveAnimationSpecs.copy( |
| 32 | + waveStartSpreadAnimationSpec = snap() |
73 | 33 | )
|
74 |
| - } |
75 |
| - ) |
76 |
| - WavySlider3( |
77 |
| - state = state, |
78 |
| - waveLength = 12.dp, |
79 |
| - waveHeight = 24.dp, |
80 |
| - waveVelocity = 14.dp to RIGHT, |
81 |
| - waveThickness = 1.dp, |
82 |
| - trackThickness = 2.dp, |
83 |
| - incremental = true, |
84 |
| - colors = SliderDefaults3.colors(activeTrackColor = Color.Red) |
85 |
| - ) |
86 |
| - WavySlider3(state = state, waveHeight = 0.dp) |
| 34 | + ) |
| 35 | + } |
87 | 36 | }
|
88 | 37 | }
|
89 | 38 |
|
|
0 commit comments