原文链接:blog.jetbrains.com/kotlin/2021…

Compose Multiplatform 的发布标志着运用 Kotlin 开发一起的 UI 支撑又迈进了新一步!

根据 Google 发布的 Jetpack Compose Android 1.0 安稳版 的条件 :

  • Compos指针数组和数组指针的差异e for Desktop 和 Compose for Web 现已晋级为 Alpha 版别,它们的javascript版别操控现在在 Compose Multiplatform 下保持一起,然后能够运用相同的 artifandroid jetpack运用攻略acts 构建 Android、Desktop 和 Web UI。

  • IDE 处理运用 JetBrains Toolbox App 已完结搬迁到 Compose for Deskto指针p。

  • IntelliJ IDEA 和 Android St指针舆情助手udio 的windows怎样激活新插件 经过@Preview注释能够启用 Compose for Desktop 的组件预览。

  • Compose fowindows7旗舰版r Desktop 现在默许运用可组合 API Window ,供给对自习气窗口巨细、一起图像资源的新支撑,以及对 ARM64 上 Linux 的新途径支撑,容许在 Raspberry Pi 等政策上作业它。

  • Compose for Web 进一步扩展了 DOM 和 CSS API。

另外在 The Composwindows许可证行将过期怎样办e Story 中 概述了android jetpack运用全攻略 Cgradle发音ompose 的途径,并同享了更多声明式多途径用户界面的信息!

一起 Desktop、Web 和指针式万用表 Android UI 开发

Jetpgradle教程ack C指针舆情助手ompose 是一个为 Android 构建原生用户界面的照应式开发Java UI 结构,JetBrains 在 Google 的 Jetpack Compose 的根底大将 Compose 结构拓展到更多新的途径。

仰仗 Compose Multiplatform,开发者能够运用和 Android Jetpack Compose 相同的 API 开发 Desktop 和 Web 构建用户指针数组和数组指针的差异界面。

运用 Kotlin Multijava环境变量装备platform 供给的机制,现在能够针对同一项目中的以下任意gradle下载组合:

  • Android (Jetpack Compose)
  • Desktop
  • Web

从前 Compose for Desktop 和 Compose for Web 运用不同的 artifacwindows无法访问指定设备路径或文件ts ,而windows许可证行将过期怎样办现在开始它们将一起在一个 Gradle 插件和组件下,这意味着根据 Compose 开发 Android、Desktop 和 Web 用户界面会更简略。

仰仗 Alph指针万用表的运用方法a 版其他更新,Compose Multiplatform 供给的 API 现已很接近其究竟形状,咱们将全力投入 Compose 的开发支撑,并期望在 2021 年内能抵达 1.0 版别,更多详细信息:了解有关 COMPOSE 多途径的更多信息

Compose iAndroid+Jetpackn Produwindows怎样激活ction:JetBrains Toolbox 运用

在 JetBrai指针数学ns 现在一些出产运用现已开始选用 Compose,首先是 JetBrains Toolbox App,它是 JetBrains IDE 的处理运用程序,每月活泼用户超java作业培训班过 800,000。

支撑 PC 、Web 和 Android 的 Compose Multiplatform 进入 Alpha 版别

在它们的最新版别中,该团队已将运用程序的完结完全转换为 Compose for Desktop,在从根据 Electroandroid jetpack运用n 的 UI 搬迁期间,团队留意到了 Compose 的许多优势:

  • 内存耗费明显减少,特别是当运用程序在后台作业时
  • 设备程序巨细减少了大约 50%
  • 运用全体烘托功用明显进步

JetBrains Toolbox 团队负责人 Victorjava开发 Kropp 也指针c言语在帖子中同享java言语了他对 Compose for Desktop 的观念:

Compose for Desktop 虽然仍处于早期阶段,但已被证明了 Toolbox App 的绝佳挑选。在开发结构搭档的支撑下,简直能够在短时间内重写整个 UI。这使咱们能够一起开发领会,因而从事务逻辑到 UI,从运用到服务器,Toolbox 现在 100% 是 Kotlin。

用于 Compose Multiplatform 的新 IntelliJ IDEA 和 Aandroidjetpack教程ndroid Studio 插件

在此版别中还发布了一个新的 IDE 插件来支撑开发作业:用于 IntelliJ IDEA 和 Android Studio 的 Compose Multiplatform 插件,它与结构的新版别一起发布,并供给额定的功用来帮助用户界面的开发作业

第一个版别包含了一项期待已久的功用:能够直接在 IDE 中预览 Compose for Desktop 和 Android 组件,乃至无需发起运用程序

要闪现@Composable不带参数的函数预览,能够将@Preview注释增加到其定义中,这时候会增加一个小gradle和maven的差异的装订线图标,能够运用它来切换组件的预览窗格:

支撑 PC 、Web 和 Android 的 Compose Multiplatform 进入 Alpha 版别

支撑 PC 、Web 和 Android 的 Compose Multiplatform 进入 Alpha 版别

支撑 PC 、Web 和 Android 的 Compose Multiplatform 进入 Alpha 版别

这个新的预览版能够帮助开发者缩短开发周期,并更轻松地将想法转化为根据 Compose 的实在规划和布局。

要查找并设备新插件,请在插件商场中查找“windows10Compose Mulgradletiplatform IDE Suppgradle装置装备ort”,或点击下方直接翻开插件页面:设备 COMPOSE 多途径插件

Cgradle下载ompose for指针c言语 Desktop 的新增功用

除了将 Compoandroid jetpack运用se for D指针式万用表ewindows怎样激活sktop 晋级为 Alpha 的一大步之外,在此版别中还改进了其 API 并指针数组和数组指针的差异增加了对新途径的支撑。

默许情况下可组合的窗口 API

在里程碑4桌面版android jetpack运用中,咱们推出了一个实验组API:WindowMenuBarTray,这些新 API 都运用 @Composable 与运用程序中的其他组件相同的情况处理、行为和条件呈现概念。

在此版别中,这些可组合版别现gradle是什么在是处理窗口、菜单栏和托盘图标的默许方法,替代了旧的窗口 API。

假设还没有查验过这些新 API,或许仅仅想了解有关它们供给的行为和功用的更多信息,能够参阅更新的 Compose for Desktop 教程,了解窗口和托盘处理。

自习气窗口巨细

有时我gradle装置装备们想将android jetpack视频某些内容作为一个全体闪现,而在不事前知道将闪现的内容的情况下,这意味着咱们不知道它的最佳窗口尺寸。

为了更轻松地开发这些 UI 场景,咱们引入了自习气窗java面试题口巨细功用,经过将窗口的一个或两个维度设置WindowSizeDp.Unspe指针c言语cified,Compose for Desktop 将自动调整该维度中窗指针式万用表的运用方法图解口的初始巨细以习气其内容:

fun main(指针数组) = applicatiojava模拟器n {
val state = remembjava面试题erWindowState(width = Dp.Unspecified, height = Dp.Unspecified) //automatic size
Window(
onCloseRequest = ::exitApplicat指针式万用表的运用方法图解ion,
state = state,
title = "Adaptive",
resizable = false
) {
Column(Modifier.background(Color(0xFFEEEEEE))) {
Row {
Text("label 1", Modifier.size(100.dp, 100.dp).padding(10.dp).background(Colorgradle装置装备.White))
Text("label 2", Modifier.size(150.dp, 200.dp).padding(5.dp).background(Color.White))
Text("label 3", Modifier.size(200.dp, 300.dp).padding(25.dp).background(Color.White))
}
}
}
}

支撑 PC 、Web 和 Android 的 Compose Multiplatform 进入 Alpha 版别

连同删去窗口(经过undecorated = true 的运用程序Window定义),咱们相信这种创立动态巨细窗口的新方法,为各种形状和巨细的用户界面新增了额定的可能性。

可组合窗口菜单的附加功java模拟器

桌面windows无法访问指定设备路径或文件运用一般带有丰富而杂乱的窗口菜单。在此版别中还增加了容许创立丰富菜单的其他 API。

它们能够被结构化,通指针式万用表过图标、快捷方法和助记符来丰富,并集成广泛运用android jetpack运用攻略windows键是哪个复选框和单选列表(单选按钮)的逻辑:

@OptIn(ExperimentalComposeUiApi::class)
@Composable
private fun MenuBagradle下载rScope.FileMenu() = Menu("Settings", mnemonic = 'S')gradle装置装备 {
Item(
"Reset指针式万用表的运用方法图解",
mnemonic = 'R',
shortcut = KeyShortcut(Key.R, ctrl = true),
onClick = { println("Reset") }
)
CheckboxItem(
"Advanced settings",
mnemonic = 'A',
checked = isAdvancedSettings,
onCheckgradle翻译edChange = { isAdvancedSettings = !isAandroidjetpack教程dvancedSettings }
)
if (gradle发音isAdvancedSettings) {
Menu("Theme") {
Rwindows体系adioButtonItem(
"Light",
mnemonic = 'L',
icon = ColorCircle(Color.Liggradle装备htGray),
selected = theme =java言语= Theme.Light,gradle和maven的差异
onClick = { theme = Theme.Light }
)
RadioButtonItem(
"Dark",
mnemonic = 'D',
icon = ColorCircle(Color.DarkGray),
selected = t指针heme == Theme.Dark,Java
onClick = { theme = Theme.Dark }
)java怎样读
}
}
}

支撑 PC 、Web 和 Android 的 Compose Multiplatform 进入 Alpha 版别

支撑上下文菜单

Compose for Desktop Alpha 支撑默许和自定义上下文菜单,能够经过单击鼠标右键触发。

关于可挑选的文本和文本字段,该结构供给了一组gradle装备默许的上下文菜单项,让用户能够仿制、粘贴、剪切和挑选。

支撑 PC 、Web 和 Android 的 Compose Multiplatform 进入 Alpha 版别

@OptIn(ExperimentalComposeUiApi::class, androidx.compose.foundation.Ewindows10激活密钥xperimentalFoundationApi::class)gradle发音
fun main() = sinwindows键是哪个gleWindoandroid jetpack详解wApplication(title = "Context menu") {
DesktopMaterialTheme { //it is mandatory for Context Menu
val text = remember {mutgradle菜鸟教程ableStateOf("Hello!")}
ContextMenuDataProvider(
items = {
listOf(ContextMenuItem("Clear") { text.value = "" })
}
) {
TextField(
vgradle菜鸟教程alue = text.value,
onValueChange = {指针万用表的运用方法视频教程 text.value = it },
label = { Text(text = "Input") }
)
}
}
}

支撑 PC 、Web 和 Android 的 Compose Multiplatform 进入 Alpha 版别

光标更改行为和指针图标 API

在此版其他 Compose for Desktop 开始,当鼠标悬停在文Java本字段或可选文本上时,鼠标指针现在会自动变成文本挑选光标,标明能够进行文本挑选,使运用感觉更加接近原生。

关于自己的组件,还能够运用新增加的 poi指针式万用表图片nterIcon 修饰符来调整鼠标指针的行为,能够在将鼠标悬停在特定组件上时更改指针。

@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun ApplicationScope.pwindows键是哪个oint指针数组erIcons() {
Window(onCloseRequest = ::exitApplication, title = "Pointer ijavascriptcons") {
Text(
modifier = Modifier.pointerIcon(PointerIcon.Hand),
text = "Hand icon!"
)
}
}

鼠标可点击修改器

为了更便利处理在鼠标单击时单击或按下的鼠gradle装备标按钮和键盘修饰键,这儿引入了一个android jetpack运用带有.mouseClickable 修饰符的新 API。

将此修饰符增加到组件就能够容许指定接纳 MouseClickScope 的回调,它供gradle装置装备应了有关作业的完好信息:

@ExperimentalDesktopApi
@Comandroid jetpack详解posjava面试题able
fun ApplicationScope.mouseClickable() {
Window(onCloseRequwindows无法访问指定设备路径或文件est = ::exitApplication, title = "mouseClickable") {
Box {
var clickableText by remember { mutableStateOf("Click me!") }
T指针ext(
modifier = Modifier.mouseClickable(
onClickjava言语 = {
if (buttons.isPrimaryPrwindows更新有必要吗essed && keyboardModifiers.isShiftPressed)  {android jetpack运用全攻略
clickableText = "Shift + lewindows10ft-mouse clicgradle下载k!"
} else {
clickableTex指针数组t = "Wrong combination, twindows许可证行将过期怎样办ry指针 again!gradle下载"
}
}
),
text = clickableText
)
}
}
}

请留意,这个 API 还不是究竟版别,现在正在继续开发,将来可能会改动它。

一起的图像资源和指针万用表的运用方法 Painter

在进一步安稳 Compose for Desktop 的 API 的过程中,现在能够运用一起的 painterResource,而不是将图形资源分红 svgR指针数组esgradle打包ourceimageResourcevectorXmlResource

@Composabljava难学吗e
fun ApplicationScope.windows是什么意思painterResource() {
Windojava怎样读w(onCloseRequest = ::exitApplicatio指针式万用表n, title = "Image resourcesjavascript") {
Column {
Image(
painter = painterResource("sample.svg"), // Vector
contentDescription = "Sample",
modifier = Modifier.fillMaxSize()
)windows是什么意思
Image(
painter = paintewindows怎样激活rResource("sample.xml"), // Vector
contentDescription = "Sample",
modifierjava初学 = Modifier.fillMaxSize()
)
Image(
p指针数组ainter = paiandroid jetpack是什么nterResource("sample.png"), // ImageBiandroid jetpack运用全攻略tmap
contentDescription = "Sample",
modifier = Modifier.fillMaxSize()
)
}
}
}

咱们还将 window icon 特征从 javgradle打包a.awt.Image 更改为anjava怎样读droidxAndroid+Jetpack.compose.ui.graphics.painter.Painter,因而除了未来的光栅图形之外,还可gradle发音以运用根据矢量的图标:

fwindows10激活密钥un vectorWindowIcon() {
application {
var icon = painterResource("sample.svg") //vector icowindows10激活密钥n
Window(onClAndroid+JetpackoseRequesgradle菜鸟教程t = ::exitApplication, icon = icon) {
Text("Hello world!")
}
}
}

支撑 ARM64 上的 Linuxjava初学

在此版别中,除了现有的 x86-64 支撑之外,Compose fandroid jetpack是什么or Desktop 还增加了对作业在根据 ARM64 处理器的设备上的 Linux指针式万用表图片 的支撑。

总的来说,现在能够运用 Compose for Deskto指针式万用表的运用方法图解p 为以下途windows7旗舰版径编写 UI:java面试题

  • x64 和 arm64 上的 macOS
  • x64 和 arm64 上的 Linux
  • x64 上的 Windows

Compose for Webwindows怎样激活 的新增功用

除了 Compose for Desktop,Compose for Web 也已晋级为 Alpha 版别,两者都现gradle菜鸟教程已调整了版别操控方案和发布周期,并经过他们的 DSL 扩展了可用的功用,用于款式android jetpack是什么和作业处理。

扩展的 CSS API

咱们将继续改进和完善 API,以经过 CSS 指定款式规矩,这个最新版别在类型安全的 DSL 中增加了对算术运算、设置特征和动画的更好支撑。

CSS 单元的算术运算

现在能够对 CSS 数值windows10实行任意操作,假设对相同单位的两个值运用运算,将获得相同单位的新值,如下例所示:

val a = 5.windows体系px
val b = 20.px
borderBottom(a + b) //指针舆情助手 25px

用于设置特征的 CSS API

扩展了对全部最常用的 CSS 特征的类型安全访问,并涵盖了大部分的现代浏览器指针c言语支撑的全部 CSS 特征。

这意味着在大多数情况下能够直接从类型安全的 API 中获gradle下载得支撑,而关于更一起的特征,或尚不支撑的特征,还能够经过p指针数组roperty直接获取键和值的函数进行赋值:

border指针c言语Width(topLeft = 4.px, bottomRight = 10%) // type-safe access!
property("some-exotic-property", "hello-friend") // raw property assignment

动画API

为了使根据 Compose 的用户界面更加动态,现在供给了从类型安全的 DSL 中创立 CSS 动画的选项:

object AppStyleSheet : StyleSheet() {
valandroid jetpack运用攻略pdf bounce by keyframes {
from {
property(指针数组和数组指针的差异"tra指针nsform", "translateX(50%)")
}
to {
property("transform", "translateX(-50%)")
}
}
val myCla指针c言语ss by style {
animation(boandroid jetpack运用攻略unce) {
duration(2.s)
timingFunction(AnimationTimingFunction.EaseIn)
direction(AnimationDirection.Alternate)
}
}
}

假设想自己更多地探究这些 API,请必须查看咱们新windows怎样激活增加的示例,这些示例展现了一些java言语更高级的 CSS 动画和 DOM 操作功用。java初学

作业层次结构、作业侦听器windows怎样激活和新的输入类型

处理作业,尤其是由输入组件宣告的作业,是对 Compose 运用程序中的更改做出windows怎样激活反响的要害部分之一。

在此版别中简化了对作业特征的访问,使其更简略定义作业侦听器,并供给了不同的输入类型。

作业类型层次结构

从前大多数根据作业的 API 要求直接运用nativeEventeventTarget 以访问感兴趣的作业的值。

从此版其他 Compose for Web 开始,您现在能够访问 a SyntheticEvent,其子类型使其更简略访问所宣告作业的相关特征。

  • SyntheticMouseEwindows更新有必要吗vent 戳穿坐标;
  • SyntheticInputEvent戳穿文本值;
  • SyntheticKeyEvent戳穿 click 键

举几个比方:

Div(attrs = {
onClick { event -> // SyntheticMouseEvent
val x = event.x
val y = event.y
}
})

gradle发音些新作业类型旨在直接供给对 在 Native 作业中可用 相同的特征的访问,而无需拜windows无法访问指定设备路径或文件访 nativeEvent 或直接作业的政策。

输入

在惯例 HTML 中,不同的输入类型,从文本字段到windows10激活密钥复选框都同享同一个标签——输入。

为了更轻松地在 Kotlin DSL 中运用这些不同的输入类型并供给更多相关提示,这儿指针数组和数组指针的差异引入了许多用于android jetpack运用创立不同类型输入的附加函数:

Textjava模拟器Input(value = "text", attrs = {
onInput { } // all twindows更新有必要吗hese components have attrs same as HTMLInputElement
})
CheckboxInput(checked = faljava开发se)
RadioInput(chjava环境变量装备ecked = false)
NumberInput(value = 0, min指针万用表的运用方法 = 0, mawindows体系x = 10)
DateInput(value = 2021-10-10")
TelInput(value = "0123456")
EmailInput()
// and othwindows是什么意思er input types

作业监听器

进一指针数组和数组指针的差异步一起了用于监听不同输入类型作业的函数。

输入侦听器的输入类型特定函数 onChecgradle翻译kBoxInput 已被删去,现在可gradle发音以直接运用 onIn指针式万用表的运用方法图解putonChange ,这意味着不再需求查找正确命名的回调:

Input(type = InputTypeandroid jetpack视频.Text, attrs = {
onInput { event -&androidjetpack教程gt;
valandroidjetpack教程 inputValue: Stjava言语ring = event.value
}
})
Input(type = InputTyandroidjetpack教程pe.Checkbox, attrs = {java面试题
oAndroid+JetpacknInput { event ->
val isChe指针数组cked: Boolean = evenAndroid+Jetpackt.value
}
})

试用 Compose Muwindows10ltjava作业培训班iplatform Alpha!

无论是 Web、桌面、Android 还是这三者,咱们都期望你能查验一下 Compose Multiplatform!

咱们估量 Compose Multiplatform 1.0(咱们的第一个安稳版别)将于本年晚些时候发布,因而现在是查验为您的出产运用点评 Compose Multiplatform 的抱java难学吗负时机。

这儿有有windows是什么意思许多可用资源:

  • 关于桌面运用程序,能够在Compogradlese for Desktop 教程 中找到有关怎么开始运用的最新信息。

  • 关于浏览器运用程序,Cowindows更新有必要吗mpose for Web 教程将帮助发起和作业。

  • 示例运用程序展现包含要研讨的其他示例,包含 Web、桌面和多途径运用程序。

java面试题发布说明

Compose Multiplatform 现gradle在处于 Alpha 阶段 ,虽然大多数 API 现在现已十分类似于它们的安稳形状,但请记住仍可能会更改某些 API,以确保究竟版别供给尽可能最佳的开发领会。

跟着接近安稳版别,咱们将继续依托用gradle装备户的反应来帮助完结这一政策!