Jetpack Compose Desktop:获取显示器的高度和宽度

问题描述 投票:0回答:1

我正在寻找一种方法来获取 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 下工作,所以......也许不知何故(真的不相信这一点)......(你明白了)

kotlin android-jetpack-compose desktop
1个回答
2
投票

您必须记住,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 中使用它们,则有必要准备实际/预期函数

© www.soinside.com 2019 - 2024. All rights reserved.