GOOGLE ADS

Samstag, 30. April 2022

Zeichnen Sie mit dem Modifikator in Jetpack Compose eine Form über den Text

Ich versuche, einen Text mit Jetpack Compose zu verschleiern. Offensichtlich blurwirkt der Modifikator für diesen Anwendungsfall Wunder, wenn Sie Android 12 haben.

Meine Alternative für Geräte mit einer niedrigeren API-Version wäre, einfach ein Rechteck mit schwarzer Farbe über den Text zu ziehen. graphicsLayerIch nahm an, dass dies mit vorhandenen Modifikatoren wie oder relativ einfach wäre, drawBehindaber ich konnte es nicht herausfinden und mir fehlen im Moment die Ideen...

Mein aktueller zusammensetzbarer Text sieht so aus:

Text(
modifier = if (blurText) {
Modifier.blur(16.dp, BlurredEdgeTreatment.Unbounded)
} else {
Modifier
},
text = textToObfuscate,
fontFamily = latoFontFamily,
fontWeight = FontWeight.W700,
fontSize = 16.sp,
color = black,
)

Ich könnte den Text in eine Box packen und eine weitere Box darin haben, um über den Text zu zeichnen, aber das scheint einfach nutzlos und mehr Arbeit zu sein, als notwendig sein sollte.

Wenn jemand eine Idee hat, wie man dies einfach mit einer Modifier-Erweiterung erreichen kann, wäre das großartig!


Lösung des Problems

You can use Modifier.drawWithContent as

Text(
modifier = if (blurText) {
Modifier.blur(16.dp, BlurredEdgeTreatment.Unbounded)
} else {
Modifier.drawWithContent {
drawContent()
drawRect(Color.Black)
}
},
text = "textToObfuscate",
fontWeight = FontWeight.W700,
fontSize = 16.sp,
)

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...