Button(onClick = { count++ }) {
Text(if (count == 0) “Hello World” else “Clicked $count!”)
}
}
}
但是 Compose for Desktop 不仅仅是UI元素,它基本上拥有的功能都可以在 Android 对应版本中找到。
桌面特定的API
为了让开发者的应用能够集成其他的桌面 UI,Compose for Desktop 附带了桌面特有的API,这些 API 主要是用于特定的桌面功能,它们的结构与其他 Compose API 一样,可让开发者的应用程序对鼠标指针等事件做出反应,查询和操做应用的窗口大小和位置,创建任务栏图标或菜单栏条目等。
fun main() {
Window {
var windowSize by remember { mutableStateOf(IntSize.Zero) }
var windowLocation by remember { mutableStateOf(IntOffset.Zero) }
AppWindowAmbient.current?.apply {
events.onResize = { windowSize = it }
events.onRelocate = { windowLocation = it }
}
Text(text = “Location: ${windowLocation}\nSize: ${windowSize}”)
}
}
Google 希望这些 Desktop API 能尽快涵盖所有相关功能,为此这里需要了解目前版本中最缺少哪些集成,因此 Google 可以优先考虑这些接口的更新,欢迎反馈到:blog.jetbrains.com/cross-post/…
快速迁移集成
就像 Kotlin 本身一样,Compose for Desktop 也遵循简单操作性和平稳迁移的理念,这样 Compose for Desktop 可以与 Swing
和 AWT
集成在一起,这样开发者的 Compose for Desktop 应用程序就可以解锁这些 Java 的图形API,该集成还允许开发者逐渐将使用这些框架的应用程序迁移到 Compose for Desktop 。
fun main() = Window(title = “JFrame properties”) {
var alwaysOnTop by remember { mutableStateOf(false) }
onCommit(alwaysOnTop) {
val jFrame = AppManager.focusedWindow?.window
jFrame?.let {
// Use JFrame-specific methods
it.isAlwaysOnTop = alwaysOnTop
}
}
MaterialTheme {
Column {
Button(onClick = { alwaysOnTop = !alwaysOnTop }) {
Text(“Toggle always on top”)
}
}
}
}
为了让开发更具备灵活性,Google 还公开了本机 Skia
图形库提供的 API 部分,该 API 支持Compose for Desktop 进行底层渲染,从而使开发者可以完全控制应用程序的渲染方式。
学习 Compose for Desktop
如果要尝试一下,推荐通过阅读阅读入门教程,该教程介绍了如何设置和运行由Compose for Desktop 所需的基本步骤,另外在这里也可以查看的其他教程,其中涵盖了一系列主题,例如:操作图像、处理鼠标事件以及发送桌面通知等等。
最后
基本步骤,另外在这里也可以查看的其他教程,其中涵盖了一系列主题,例如:操作图像、处理鼠标事件以及发送桌面通知等等。
最后
想要了解更多关于大厂面试的同学可以**点击这里免费获取《面试文档》**除此之外,我也分享一些免费的优质资源,包括:Android学习PDF+架构视频+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这几块的内容。分享给大家,非常适合近期有面试和想在技术道路上继续精进的朋友。快来获取学习资料吧~