• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# ArkUI子系统Changelog
2
3## cl.arkui.1 Video组件不再默认解析并自动播放拖拽信息中的视频资源
4
5**访问级别**
6
7公开接口
8
9**变更原因**
10
11Video组件默认允许拖入任意视频并自动播放的行为不符合终端用户预期,故需调整该默认规格。
12
13**变更影响**
14
15此变更涉及应用适配。
16
17变更前:Video组件默认解析并自动播放拖拽信息中的视频资源。
18
19变更后:Video组件不会默认解析并自动播放拖拽信息中的视频资源。
20
21**起始API Level**
22
23API 10
24
25**变更发生版本**
26
27从OpenHarmony SDK 5.1.0.47开始。
28
29**变更的接口/组件**
30
31Video组件。
32
33**适配指导**
34
35应用若需要使Video组件支持解析拖入的视频信息并自动播放,可通过如下代码实现:
36
37```ts
38import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData';
39
40@Entry
41@Component
42struct Index {
43  @State videoSrc: Resource | string = $rawfile('video1.mp4');
44  private controller: VideoController = new VideoController();
45
46  build() {
47    Column() {
48      Video({
49        src: this.videoSrc,
50        controller: this.controller
51      })
52        .width('100%')
53        .height(600)
54        .onPrepared(() => {
55          // 在onPrepared回调中执行controller的start方法,确保视频源更换后直接开始播放。
56          this.controller.start();
57        })
58        .onDrop((e: DragEvent) => {
59          // 外部视频拖入应用Video组件范围,松手后触发通过onDrop注册的回调。
60          // 在DragEvent中会包含拖入的视频源信息,取出后赋值给状态变量videoSrc即可改变Video的视频源。
61          let record = e.getData().getRecords()[0];
62          if (record.getType() == uniformTypeDescriptor.UniformDataType.VIDEO) {
63            let videoInfo = record as unifiedDataChannel.Video;
64            this.videoSrc = videoInfo.videoUri;
65          }
66        })
67    }
68  }
69}
70```
71
72## cl.arkui.2 使用媒体查询(@ohos.mediaquery)在2in1悬浮窗口监听页面宽度不再额外减去8vp
73
74**访问级别**
75
76公开接口
77
78**变更原因**
79
802in1悬浮窗口下,计算页面宽度在窗口宽度基础上额外减去了8vp,导致页面宽度监听不准确,不符合开发者的预期,故需进行相应调整。
81
82**变更影响**
83
84此变更不涉及应用适配。
85
86变更前:2in1悬浮窗口下,使用mediaQuery监听页面宽度,页面宽度 = 窗口宽度 - 8vp。
87
88变更后:2in1悬浮窗口下,使用mediaQuery监听页面宽度,页面宽度 = 窗口宽度。
89
90**起始API Level**
91
92API 10
93
94**变更发生版本**
95
96从OpenHarmony SDK 5.1.0.47开始。
97
98**变更的接口/组件**
99
100@ohos.mediaquery.d.ts文件中matchMediaSync接口。
101
102**适配指导**
103
104默认行为变更,无需适配。
105
106## cl.arkui.3 当Image组件的draggable接口接收到异常值时,其默认值将由false更改为true
107
108**访问级别**
109
110公开接口
111
112**变更原因**
113
114当Image组件的draggable接口接收到异常参数,如undefined或null时,其默认值将从false更改为true,从而默认启用拖拽功能。
115
116**变更影响**
117
118此变更涉及应用适配。
119
120变更前:Image组件的draggable接口默认值为true,当传入异常值时,draggable为false,Image组件不可拖拽。
121
122变更后:Image组件的draggable接口默认值为true,当传入异常值时,draggable为true,Image组件可拖拽。
123
124**起始API Level**
125
126API 9
127
128**变更发生版本**
129
130从OpenHarmony SDK 5.1.0.47开始。
131
132**变更的接口/组件**
133
134Image组件draggable接口。
135
136**适配指导**
137
138如果为Image组件设置了可拖拽(draggable)接口并传入了异常值,想要保持该组件不可拖拽,应将draggable设置为false。
139
140示例:
141
142```ts
143@Entry
144@Component
145struct Index {
146  build() {
147    Column() {
148      Image($r("app.media.startIcon"))
149        .draggable(undefined)
150    }
151    .height('100%')
152    .width('100%')
153  }
154}
155```
156
157## cl.arkui.4 CanvasRenderer的shadowColor属性传非法字符串时设置不生效
158
159**访问级别**
160
161公开接口
162
163**变更原因**
164
165shadowColor属性在传入某些非法字符串时,仍能产生阴影效果,与W3C标准不一致。
166
167**变更影响**
168
169| 变更前                                   | 变更后                                   |
170| ---------------------------------------- | ---------------------------------------- |
171| CanvasRenderer的shadowColor属性传某些不符合W3C标准的颜色字符串时仍设置生效。<br>![shadowColor_before](figures/Canvas_shadowColor_before.png) | CanvasRenderer的shadowColor属性传某些不符合W3C标准的颜色字符串时设置不生效。<br>![globalCompositeOperation_after](figures/Canvas_shadowColor_after.png) |
172
173
174**起始API Level**
175
176API 8
177
178**变更发生版本**
179
180从OpenHarmony SDK 5.1.0.47开始。
181
182**变更的接口/组件**
183
184CanvasRenderingContext2D和OffscreenCanvasRenderingContext2D的shadowColor接口。
185
186**适配指导**
187
188传异常参数行为变更,无需适配。
189设置阴影颜色需要按照规范传入字符串参数:
1901、使用rgb()或rgba()。例:context.shadowColor = 'rgba(255, 0, 0, 255)'
1912、使用十六进制颜色值。例:context.shadowColor = '#FF0000'
192
193**示例**
194
195```ts
196@Entry
197@Component
198struct Demo {
199  private settings: RenderingContextSettings = new RenderingContextSettings(true)
200  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
201
202  build() {
203    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
204      Canvas(this.context)
205        .width('100%')
206        .height('100%')
207        .onReady(() => {
208          this.context.shadowBlur = 10
209          this.context.shadowOffsetX = 10
210          this.context.shadowOffsetY = 10
211          /**
212           * 变更前:设置生效为蓝色。
213           * 变更后:设置不生效,没有阴影效果。
214           */
215          this.context.shadowColor = "2024-11-28T07:27:10.607Z"
216          this.context.fillRect(10, 10, 100, 100)
217        })
218    }
219    .width('100%')
220    .height('100%')
221  }
222}
223```