Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f20daa9

Browse files
add graphicsLayer sample to apply colorFilter and BlendMode
1 parent 85cf74c commit f20daa9

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

‎Tutorial1-1Basics/src/main/java/com/smarttoolfactory/tutorial1_1basics/chapter6_graphics/Tutorial6_39_1GraphicsLayer1.kt

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import androidx.compose.foundation.clickable
1111
import androidx.compose.foundation.gestures.detectTapGestures
1212
import androidx.compose.foundation.layout.Arrangement
1313
import androidx.compose.foundation.layout.Column
14+
import androidx.compose.foundation.layout.Row
1415
import androidx.compose.foundation.layout.aspectRatio
1516
import androidx.compose.foundation.layout.fillMaxSize
1617
import androidx.compose.foundation.layout.fillMaxWidth
@@ -31,17 +32,22 @@ import androidx.compose.runtime.remember
3132
import androidx.compose.runtime.rememberCoroutineScope
3233
import androidx.compose.runtime.setValue
3334
import androidx.compose.ui.Modifier
35+
import androidx.compose.ui.draw.drawWithCache
3436
import androidx.compose.ui.draw.drawWithContent
3537
import androidx.compose.ui.draw.shadow
3638
import androidx.compose.ui.geometry.Offset
3739
import androidx.compose.ui.geometry.Rect
3840
import androidx.compose.ui.geometry.Size
41+
import androidx.compose.ui.graphics.BlendMode
3942
import androidx.compose.ui.graphics.Color
43+
import androidx.compose.ui.graphics.ColorFilter
44+
import androidx.compose.ui.graphics.ColorMatrix
4045
import androidx.compose.ui.graphics.ImageBitmap
4146
import androidx.compose.ui.graphics.PathEffect
4247
import androidx.compose.ui.graphics.asAndroidBitmap
4348
import androidx.compose.ui.graphics.asImageBitmap
4449
import androidx.compose.ui.graphics.drawscope.Stroke
50+
import androidx.compose.ui.graphics.layer.drawLayer
4551
import androidx.compose.ui.graphics.rememberGraphicsLayer
4652
import androidx.compose.ui.input.pointer.pointerInput
4753
import androidx.compose.ui.platform.LocalDensity
@@ -444,3 +450,73 @@ fun createParticles(imageBitmap: ImageBitmap, particleSize: Int): List<TestParti
444450

445451
return particleList
446452
}
453+
454+
@Preview
455+
@Composable
456+
fun InversePixelsSample() {
457+
Column(modifier = Modifier.fillMaxSize().padding(16.dp)) {
458+
459+
androidx.compose.material3.Text(
460+
text = "Original Colors",
461+
fontSize = 34.sp,
462+
modifier = Modifier.padding(vertical = 16.dp)
463+
)
464+
465+
Row {
466+
Image(
467+
modifier = Modifier.weight(1f).aspectRatio(1f),
468+
painter = painterResource(R.drawable.avatar_1_raster),
469+
contentDescription = null
470+
)
471+
Image(
472+
modifier = Modifier.weight(1f).aspectRatio(1f),
473+
painter = painterResource(R.drawable.avatar_2_raster),
474+
contentDescription = null
475+
)
476+
}
477+
478+
androidx.compose.material3.Text(
479+
text = "Inverted Colors",
480+
fontSize = 34.sp,
481+
modifier = Modifier.padding(vertical = 16.dp)
482+
)
483+
484+
Row(
485+
modifier = Modifier
486+
.drawWithCache {
487+
val graphicsLayer = obtainGraphicsLayer()
488+
489+
val values = floatArrayOf(
490+
-1f, 0f, 0f, 0f, 255f,
491+
0f, -1f, 0f, 0f, 255f,
492+
0f, 0f, -1f, 0f, 255f,
493+
0f, 0f, 0f, 1f, 0f
494+
)
495+
496+
graphicsLayer.apply {
497+
record {
498+
drawContent()
499+
}
500+
blendMode = BlendMode.Difference
501+
colorFilter = ColorFilter.colorMatrix(ColorMatrix(values))
502+
}
503+
504+
onDrawWithContent {
505+
drawLayer(graphicsLayer)
506+
}
507+
}
508+
) {
509+
Image(
510+
modifier = Modifier.weight(1f).aspectRatio(1f),
511+
painter = painterResource(R.drawable.avatar_1_raster),
512+
contentDescription = null
513+
)
514+
Image(
515+
modifier = Modifier.weight(1f).aspectRatio(1f),
516+
painter = painterResource(R.drawable.avatar_2_raster),
517+
contentDescription = null
518+
)
519+
}
520+
521+
}
522+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /