Skip to content

Commit 681774f

Browse files
add scale demo
1 parent 34fe2b0 commit 681774f

File tree

3 files changed

+143
-5
lines changed

3 files changed

+143
-5
lines changed

app/src/main/java/com/smarttoolfactory/composeimage/MainActivity.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import com.google.accompanist.pager.ExperimentalPagerApi
1818
import com.google.accompanist.pager.HorizontalPager
1919
import com.google.accompanist.pager.PagerState
2020
import com.google.accompanist.pager.rememberPagerState
21+
import com.smarttoolfactory.composeimage.demo.EditScaleDemo
2122
import com.smarttoolfactory.composeimage.demo.ImageWithConstraintsDemo
2223
import com.smarttoolfactory.composeimage.demo.ThumbnailDemo
2324
import com.smarttoolfactory.composeimage.ui.theme.ComposeImageTheme
@@ -89,7 +90,8 @@ private fun HomeContent() {
8990

9091
when (page) {
9192
0 -> ImageWithConstraintsDemo()
92-
else-> ThumbnailDemo()
93+
1-> ThumbnailDemo()
94+
else-> EditScaleDemo()
9395
}
9496
}
9597
}
@@ -98,5 +100,6 @@ private fun HomeContent() {
98100
internal val tabList =
99101
listOf(
100102
"Image Constraints",
101-
"Image Thumbnail"
103+
"Image Thumbnail",
104+
"Editable Scale",
102105
)
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
package com.smarttoolfactory.composeimage.demo
2+
3+
import androidx.compose.foundation.Image
4+
import androidx.compose.foundation.background
5+
import androidx.compose.foundation.layout.*
6+
import androidx.compose.foundation.shape.RoundedCornerShape
7+
import androidx.compose.material.Text
8+
import androidx.compose.material3.ElevatedButton
9+
import androidx.compose.runtime.*
10+
import androidx.compose.ui.Modifier
11+
import androidx.compose.ui.graphics.Color
12+
import androidx.compose.ui.layout.ContentScale
13+
import androidx.compose.ui.platform.LocalDensity
14+
import androidx.compose.ui.res.painterResource
15+
import androidx.compose.ui.unit.dp
16+
import androidx.compose.ui.unit.sp
17+
import androidx.compose.ui.zIndex
18+
import com.smarttoolfactory.composeimage.R
19+
import com.smarttoolfactory.image.transform.HandlePlacement
20+
import com.smarttoolfactory.image.transform.TransformLayout
21+
22+
@Composable
23+
fun EditScaleDemo() {
24+
Column(
25+
modifier = Modifier
26+
.background(Color(0xff424242))
27+
.fillMaxSize()
28+
.padding(8.dp)
29+
) {
30+
31+
var enabled by remember { mutableStateOf(true) }
32+
33+
Spacer(modifier = Modifier.height(40.dp))
34+
35+
var zIndex1 by remember {
36+
mutableStateOf(0f)
37+
}
38+
39+
var zIndex2 by remember {
40+
mutableStateOf(0f)
41+
}
42+
43+
var zIndex3 by remember {
44+
mutableStateOf(0f)
45+
}
46+
47+
48+
val density = LocalDensity.current
49+
val size = (500 / density.density).dp
50+
51+
TransformLayout(
52+
modifier = Modifier
53+
.size(size)
54+
.zIndex(zIndex1),
55+
enabled = enabled,
56+
onDown = {
57+
zIndex1 = 1f
58+
},
59+
onUp = {
60+
zIndex1 = 0f
61+
}
62+
) {
63+
Image(
64+
painter = painterResource(id = R.drawable.landscape1),
65+
contentScale = ContentScale.FillBounds,
66+
contentDescription = "",
67+
)
68+
}
69+
70+
TransformLayout(
71+
modifier = Modifier.zIndex(zIndex2),
72+
handleRadius = 20.dp,
73+
enabled = enabled,
74+
handlePlacement = HandlePlacement.Side,
75+
onDown = {
76+
zIndex2 = 1f
77+
},
78+
onUp = {
79+
zIndex2 = 0f
80+
}
81+
) {
82+
Image(
83+
painter = painterResource(id = R.drawable.landscape2),
84+
contentScale = ContentScale.FillBounds,
85+
contentDescription = ""
86+
)
87+
}
88+
89+
TransformLayout(
90+
modifier = Modifier
91+
.size(width = 300.dp, height = 200.dp)
92+
.zIndex(zIndex3),
93+
enabled = enabled,
94+
handlePlacement = HandlePlacement.Both,
95+
onDown = {
96+
zIndex3 = 1f
97+
},
98+
onUp = {
99+
zIndex3 = 0f
100+
}
101+
) {
102+
Image(
103+
painter = painterResource(id = R.drawable.landscape3),
104+
contentScale = ContentScale.Fit,
105+
contentDescription = ""
106+
)
107+
}
108+
109+
TransformLayout(
110+
enabled = enabled
111+
) {
112+
Text(
113+
text = "Hello World",
114+
modifier = Modifier
115+
.background(
116+
Color.Red,
117+
RoundedCornerShape(25)
118+
)
119+
.padding(2.dp),
120+
fontSize = 20.sp,
121+
color = Color.White
122+
)
123+
}
124+
125+
126+
Spacer(modifier = Modifier.weight(1f))
127+
128+
ElevatedButton(
129+
modifier = Modifier
130+
.fillMaxWidth()
131+
.padding(8.dp),
132+
onClick = { enabled = !enabled }
133+
) {
134+
Text(if (enabled) "Disable" else "Enable")
135+
}
136+
Spacer(modifier = Modifier.height(50.dp))
137+
}
138+
}

image/src/main/java/com/smarttoolfactory/image/transform/TranformLayout.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.smarttoolfactory.image.transform
22

3-
import androidx.compose.foundation.border
43
import androidx.compose.foundation.layout.*
54
import androidx.compose.runtime.*
65
import androidx.compose.ui.Alignment
@@ -9,7 +8,6 @@ import androidx.compose.ui.draw.clipToBounds
98
import androidx.compose.ui.geometry.Offset
109
import androidx.compose.ui.geometry.Rect
1110
import androidx.compose.ui.geometry.Size
12-
import androidx.compose.ui.graphics.Color
1311
import androidx.compose.ui.graphics.graphicsLayer
1412
import androidx.compose.ui.input.pointer.pointerInput
1513
import androidx.compose.ui.platform.LocalDensity
@@ -35,7 +33,6 @@ fun TransformLayout(
3533

3634
MorphSubcomposeLayout(
3735
modifier = modifier
38-
.border(3.dp, Color.Green)
3936
.requiredSizeIn(
4037
minWidth = handleRadius * 2,
4138
minHeight = handleRadius * 2

0 commit comments

Comments
 (0)