• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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|  ![变更前](figures/textpicker-before.png)       |  ![变更后](figures/textpicker-after.png)       |
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```