Skip to content

Commit 4fa9930

Browse files
add EnhancedZoom crop demo
1 parent 864948f commit 4fa9930

File tree

11 files changed

+482
-273
lines changed

11 files changed

+482
-273
lines changed

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,9 +233,10 @@ fun ZoomableImage(
233233
minZoom: Float = 1f,
234234
maxZoom: Float = 5f,
235235
limitPan: Boolean = true,
236-
zoomEnabled: Boolean = true,
237-
panEnabled: Boolean = true,
238-
rotationEnabled: Boolean = false,
236+
zoomable: Boolean = true,
237+
pannable: Boolean = true,
238+
rotatable: Boolean = false,
239+
clip: Boolean = true,
239240
clipTransformToContentScale: Boolean = false,
240241
consume: Boolean = true,
241242
onGestureStart: (ZoomData) -> Unit = {},

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

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,21 @@ 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.*
21+
import com.smarttoolfactory.composeimage.demo.ImageWithConstraintsDemo
22+
import com.smarttoolfactory.composeimage.demo.ThumbnailDemo
23+
import com.smarttoolfactory.composeimage.demo.beforeafter.BeforeAfterImageDemo
24+
import com.smarttoolfactory.composeimage.demo.beforeafter.BeforeAfterLayoutDemo
25+
import com.smarttoolfactory.composeimage.demo.transform.EditScaleDemo
26+
import com.smarttoolfactory.composeimage.demo.transform.EditSizeDemo
27+
import com.smarttoolfactory.composeimage.demo.zoom.AnimatedZoomDemo
28+
import com.smarttoolfactory.composeimage.demo.zoom.EnhancedZoomCropDemo
29+
import com.smarttoolfactory.composeimage.demo.zoom.EnhancedZoomDemo
30+
import com.smarttoolfactory.composeimage.demo.zoom.ZoomDemo
2231
import com.smarttoolfactory.composeimage.ui.theme.ComposeImageTheme
2332
import kotlinx.coroutines.launch
2433

2534
class MainActivity : ComponentActivity() {
35+
2636
override fun onCreate(savedInstanceState: Bundle?) {
2737
super.onCreate(savedInstanceState)
2838
setContent {
@@ -91,9 +101,12 @@ private fun HomeContent() {
91101
1 -> ThumbnailDemo()
92102
2 -> EditScaleDemo()
93103
3 -> EditSizeDemo()
94-
4 -> ZoomDemo()
95-
5 -> BeforeAfterImageDemo()
96-
else -> BeforeAfterLayoutDemo()
104+
4 -> BeforeAfterImageDemo()
105+
5 -> BeforeAfterLayoutDemo()
106+
6 -> ZoomDemo()
107+
7 -> EnhancedZoomDemo()
108+
8 -> EnhancedZoomCropDemo()
109+
else -> AnimatedZoomDemo()
97110
}
98111
}
99112
}
@@ -105,7 +118,10 @@ internal val tabList =
105118
"Image Thumbnail",
106119
"Editable Scale",
107120
"Editable Size",
108-
"Zoom",
109121
"Before/After Image",
110122
"Before/After Layout",
123+
"Zoom",
124+
"Enhanced Zoom",
125+
"Enhanced Zoom Crop",
126+
"Animated Zoom"
111127
)

app/src/main/java/com/smarttoolfactory/composeimage/demo/ImageScaleDemo.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ private fun CropSample(
199199
Button(
200200
modifier = Modifier
201201
.padding(8.dp)
202-
.fillMaxSize(),
202+
.fillMaxWidth(),
203203
onClick = { showDialog = true }) {
204204
Text("Crop")
205205
}

app/src/main/java/com/smarttoolfactory/composeimage/demo/beforeafter/SampleExoPlayer.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,13 @@ import com.google.android.exoplayer2.ui.PlayerView
1515
@Composable
1616
fun MyPlayer(modifier: Modifier, uri: String) {
1717
val context = LocalContext.current
18-
val player = SimpleExoPlayer.Builder(context).build()
18+
val player = remember {
19+
SimpleExoPlayer.Builder(context).build()
20+
}
1921
val playerView = remember {
2022
PlayerView(context)
2123
}
2224

23-
24-
println("🚀 MyPlayer URI $uri, player: $player, playerView: $playerView")
25-
2625
LaunchedEffect(player, uri) {
2726
playerView.useController = false
2827
playerView.resizeMode = AspectRatioFrameLayout.RESIZE_MODE_FILL

app/src/main/java/com/smarttoolfactory/composeimage/transform/EditScaleDemo.kt renamed to app/src/main/java/com/smarttoolfactory/composeimage/demo/transform/EditScaleDemo.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.smarttoolfactory.composeimage.transform
1+
package com.smarttoolfactory.composeimage.demo.transform
22

33
import androidx.compose.foundation.Image
44
import androidx.compose.foundation.background

app/src/main/java/com/smarttoolfactory/composeimage/transform/EditSizeDemo.kt renamed to app/src/main/java/com/smarttoolfactory/composeimage/demo/transform/EditSizeDemo.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.smarttoolfactory.composeimage.transform
1+
package com.smarttoolfactory.composeimage.demo.transform
22

33
import androidx.compose.foundation.Image
44
import androidx.compose.foundation.background

app/src/main/java/com/smarttoolfactory/composeimage/demo/zoom/AnimatedZoomDemo.kt

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.smarttoolfactory.composeimage.demo.zoom
22

33
import androidx.compose.foundation.background
4-
import androidx.compose.foundation.border
54
import androidx.compose.foundation.layout.Column
65
import androidx.compose.foundation.layout.fillMaxSize
76
import androidx.compose.foundation.layout.size
@@ -10,25 +9,29 @@ import androidx.compose.runtime.Composable
109
import androidx.compose.ui.Modifier
1110
import androidx.compose.ui.graphics.Color
1211
import androidx.compose.ui.unit.dp
12+
import androidx.compose.ui.unit.sp
1313
import com.smarttoolfactory.image.zoom.AnimatedZoomLayout
1414

1515
@Composable
1616
fun AnimatedZoomDemo() {
1717

1818
Column(modifier = Modifier.fillMaxSize()) {
1919
AnimatedZoomLayout(
20-
modifier = Modifier
21-
.fillMaxSize()
22-
.border(2.dp, Color.Green)
20+
modifier = Modifier.fillMaxSize(),
21+
enabled = { zoom, pan, rotation ->
22+
(zoom > 1.2f)
23+
}
2324
) {
2425
Text(
2526
modifier = Modifier
26-
.size(200.dp)
27+
.size(300.dp, height = 400.dp)
2728
.background(Color.Yellow),
28-
text = "Hello World........\n" +
29-
"asdamsdalşsdkasşl\n" +
30-
"asdasdaskdk\n" +
31-
" asads dasdasdasd asdasdasd",
29+
text = "This Composable can be zoomed, rotated, or can moved.\n\n" +
30+
"Also can move back to correct bounds if size \n" +
31+
" of content is passed" +
32+
"as parameter to Modifier.animatedZoom\n\n" +
33+
"Fling gesture when last pointer is up",
34+
fontSize = 20.sp
3235
)
3336
}
3437
}

0 commit comments

Comments
 (0)