ScreenCapture is a Compose Multiplatform library for capturing screens in your Android or iOS App.
Add the dependency to your build.gradle.kts
file:
commonMain.dependencies {
implementation("network.chaintech:compose-multiplatform-screen-capture:1.0.1")
}
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="network.chaintech.cmp.screenshot.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path
name="screen_shots"
path="share_images" />
<external-path
name="external_files"
path="." />
</paths>
class AppActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
...
AppContext.apply { set(this@AppActivity) }
...
}
}
val captureController = rememberScreenCaptureController()
ScreenCaptureComposable(
modifier = Modifier,
screenCaptureController = captureController,
shareImage = true,
onCaptured = { img, throwable ->
}
) {
AppTheme {
content() // place your composable content here
}
}
ElevatedButton(
modifier = Modifier
.padding(top = 40.dp)
.widthIn(min = 200.dp).align(Alignment.CenterHorizontally),
onClick = {
captureController.capture()
},
content = {
Text(
"Preview ScreenShot",
style = TextStyle(fontSize = 16.sp),
fontWeight = FontWeight.Bold
)
},
colors = ButtonDefaults.elevatedButtonColors(containerColor = Color.Cyan),
)
modifier
: Modifier for modifying the layout of the screen capture component.
screenCaptureController
: Controller for managing the screen capture functionality.
shareImage
: Boolean indicating whether the user intends to share the captured image.
onCaptured
: Callback invoked when an image is successfully captured or when there's a failure during the capture process. It provides an ImageBitmap representing the captured image and a Throwable in case of any errors.
content
: A composable function that defines the content to be displayed within the screen capture component. This could include buttons, text, or any other UI elements related to screen capture functionality.
For More Follow This Class
Follow Medium Link for example
Follow LinkedIn For More Updates