我正在寻找一种方法来获取 Jetpack Compose for Desktop 中显示器的高度和宽度,但尽管我发现了一些关于 SO 的问题(Jetpack Compose 中的屏幕宽度和高度),但这并不是很有帮助,因为没有值(和其他东西),例如 LocalConfiguration,只有 - LocalViewConfiguration,这是另一回事。
所以,关于我最初的目标的一些话:我希望能够自动更改应用程序中使用的字体大小:
textStyle = TextStyle(fontFamily = FontFamily.Monospace, fontSize = calculateRelativeFontSize())
,其中:@Composable fun calculateRelativeFontSize(): TextUnit { val height = ...; val width = ...; ...}
最后,如果我遗漏了一些东西,我很抱歉,因为我并不是真正的 Kotlin 或(诚实的)Jetpack Compose 程序员,只是被要求做一些事情......
附注我在 Linux 下工作,所以......也许不知何故(真的不相信这一点)......(你明白了)
您必须记住,JetBrains Compose 是基于 Skia 和 Java 的 AWT 库构建的。您可以使用与屏幕信息相关的本机功能。例如使用 AWT:
// CloudsAnimation.kt
import org.jetbrains.skia.RuntimeEffect
import java.awt.Toolkit
@Composable
fun CloudsAnimation(
modifier: Modifier = Modifier
) {
val screenSize = Toolkit.getDefaultToolkit().screenSize
val screenHeight = screenSize.height
val screenWidth = screenSize.width
println("Width: $screenWidth ; Height: $screenHeight")
// ... composables below etc
}
在我的 13 英寸 MacBook Pro 上运行此程序:
Width: 1440 ; Height: 900
编辑:
awt
导入可以在源集jvmMain
中访问,因为这些API在commonMain
中不可用。如果您打算在 commonMain 中使用它们,则有必要准备实际/预期函数