1# ArkUI子系统Changelog 2 3## cl.arkui.1 DatePicker、TextPicker和TimePicker的enabled、visibility参数动态改变后文本显示颜色变更 4 5**访问级别** 6 7公开接口 8 9**变更原因** 10 11DatePicker、TextPicker和TimePicker的enabled、visibility属性动态改变后,文本颜色呈现半透明。 12 13**变更影响** 14 15此变更无需应用适配。 16DatePicker、TextPicker和TimePicker的enabled参数由false变为true或者visibility参数由None/Hidden变为Visible后,文本颜色由之前的半透明变为初始颜色。 17 18执行以下TextPicker示例时: 19 20```ts 21@Entry 22@Component 23struct TextPickerExample { 24 private fruits: string[] = ['apple', 'orange', 'peach', 'grape']; 25 @State isEnabled: boolean = true; 26 27 build() { 28 Column() { 29 TextPicker({ range: this.fruits }) 30 .onChange(() => { 31 }) 32 .disappearTextStyle({ color: Color.Red, font: { size: 20, weight: FontWeight.Lighter } }) 33 .textStyle({ color: Color.Black, font: { size: 25, weight: FontWeight.Normal } }) 34 .selectedTextStyle({ color: Color.Blue, font: { size: 30, weight: FontWeight.Bolder } }) 35 .divider(null) 36 .enabled(this.isEnabled) 37 38 Button("enabled : " + this.isEnabled).onClick(() => { 39 this.isEnabled = !this.isEnabled // 点击button,动态切换组件的使能 40 }) 41 }.width('100%').height('100%') 42 } 43} 44``` 45 46| 变更前 | 变更后 | 47|---------|---------| 48|  |  | 49 50**起始API Level** 51 52API 8 53 54**变更发生版本** 55 56从OpenHarmony 5.1.0.49开始。 57 58**变更的接口/组件** 59 60DatePicker、TextPicker和TimePicker组件。 61 62**适配指导** 63 64DatePicker、TextPicker和TimePicker的enabled参数由"false"变为"true"或者visibility参数由"None/Hidden"变为"Visible"后,文本颜色恢复默认,开发者无需适配。 65 66## cl.arkui.2 属性字符串TextStyle类型fontStyle、fontWeight字段返回类型变更 67 68**访问级别** 69 70公开接口 71 72**变更原因** 73 74接口实际行为与文档描述不一致。 75 76**变更影响** 77 78此变更涉及应用适配。 79 80| 字段名 | 描述 |变更前类型 | 变更后类型 | 81|---------| ---------|---------| ------| 82| fontWeight | 获取属性字符串的文本字体粗细。| string | number | 83| fontStyle | 获取属性字符串的文本字体样式。 | string | FontStyle | 84 85**起始API Level** 86 87接口起始版本为API version 12。 88 89**变更发生版本** 90 91从OpenHarmony SDK 5.1.0.49开始,API version 18及以上生效。 92 93**变更的接口/组件** 94 95属性字符串的getStyles接口。 96 97**适配指导** 98 99变更后,使用getStyles接口获得的TextStyle类型变量中fontStyle、fontWeight字段将会返回FontStyle和number类型而非之前的string类型,应用需要使用新的返回类型来进行判断。 100 101``` ts 102@Entry 103@Component 104struct styled_string_demo1 { 105 scroll: Scroller = new Scroller(); 106 fontStyleAttr1: TextStyle = new TextStyle({ fontColor: Color.Blue, fontWeight: FontWeight.Bolder, fontStyle: FontStyle.Normal }); 107 fontStyleAttr2: StyledStringValue = new TextStyle({ fontColor: Color.Orange, fontStyle: FontStyle.Italic, fontWeight: FontWeight.Lighter }); 108 mutableStyledString1: MutableStyledString = new MutableStyledString("运动45分钟", [{ 109 start: 0, 110 length: 3, 111 styledKey: StyledStringKey.FONT, 112 styledValue: this.fontStyleAttr1 113 }, { 114 start: 3, 115 length: 3, 116 styledKey: StyledStringKey.FONT, 117 styledValue: this.fontStyleAttr2 118 }]); 119 controller1: TextController = new TextController(); 120 121 build() { 122 Column() { 123 Scroll(this.scroll) { 124 Column() { 125 // 显示属性字符串 126 Text(undefined, { controller: this.controller1 }) 127 .onAppear(() => { 128 this.controller1.setStyledString(this.mutableStyledString1) 129 }) 130 131 Button('查询样式') 132 .onClick(() => { 133 let styles = this.mutableStyledString1.getStyles(0, this.mutableStyledString1.length) 134 for (let i = 0; i < styles.length; i++) { 135 console.info('StyledString style object start:' + styles[i].start) 136 console.info('StyledString style object length:' + styles[i].length) 137 console.info('StyledString style object key:' + styles[i].styledKey) 138 if (styles[i].styledKey === 0) { 139 let fontAttr = styles[i].styledValue as TextStyle; 140 console.info('StyledString fontStyle type:' + typeof fontAttr.fontStyle) 141 console.info('StyledString fontWeight type:' + typeof fontAttr.fontWeight) 142 } 143 } 144 }) 145 .margin({ top: 10 }) 146 }.width('100%') 147 } 148 } 149 .width('100%') 150 } 151} 152``` 153 154## cl.arkui.2 轴事件和鼠标事件交叉输入时,系统补充发送Cancel事件变更 155 156**访问级别** 157 158公开接口 159 160**变更原因** 161 162在轴事件和鼠标事件交叉输入的情况下,缺少Cancel事件会导致事件不匹配,从而引发应用状态无法恢复的异常。 163 164**变更影响** 165 166此变更不涉及应用适配。 167 168变更前:在使用双指在触控板上滑动触发滑动手势、捏合手势的过程中,同时点击鼠标左键,应用将接收到的事件回调序列是onActionStart—>onActionUpdate—>onActionStart—>onActionUpdate—>onActionEnd。 169 170变更后:在使用双指在触控板上滑动触发滑动手势、捏合手势的过程中,同时点击鼠标左键,应用将接收到的事件回调序列是onActionStart—>onActionUpdate—>onActionCancel。 171 172**起始API Level** 173 174接口起始版本为API version 7。 175 176**变更发生版本** 177 178从OpenHarmony SDK 5.1.0.49开始。 179 180**变更的接口/组件** 181 182PanGestureInterface、PinchGestureInterface、PanGestureHandler、PinchGestureHandler的onActionCancel接口。 183 184**适配指导** 185 186默认行为变更,无需适配。 187 188## cl.arkui.3 CanvasRenderer的measureText方法传undefined参数时返回值变更 189 190**访问级别** 191 192公开接口 193 194**变更原因** 195 196measureText方法传undefined参数时,返回的textMetrics为undefined,和W3C标准行为不一致。 197 198**变更影响** 199 200变更前: 201measureText方法传undefined参数时,返回的textMetrics为undefined。 202 203变更后: 204measureText方法传undefined参数时,返回值为按照字符串"undefined"测量的textMetrics。 205 206 207**起始API Level** 208 209API 8 210 211**变更发生版本** 212 213从OpenHarmony SDK 5.1.0.49开始。 214 215**变更的接口/组件** 216 217CanvasRenderingContext2D和OffscreenCanvasRenderingContext2D的measureText方法 218 219**适配指导** 220 221如果应用无需获取undefined参数的textMetrics,可在调用measureText方法前对参数做判断。 222 223**示例** 224 225```ts 226@Entry 227@Component 228struct Demo { 229 private settings: RenderingContextSettings = new RenderingContextSettings(true) 230 private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 231 232 measureText(text: string) 233 { 234 if (text != undefined) { 235 let metrics = this.context.measureText(text); 236 console.info('width = ' + metrics.width); 237 } 238 } 239 240 build() { 241 Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { 242 Canvas(this.context) 243 .width('100%') 244 .height('100%') 245 .onReady(() => { 246 this.measureText(undefined) 247 this.measureText('Hello World') 248 }) 249 } 250 .width('100%') 251 .height('100%') 252 } 253} 254```