• 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 CanvasRenderer的shadowColor属性传非法字符串时设置不生效
107
108**访问级别**
109
110公开接口
111
112**变更原因**
113
114shadowColor属性在传入某些非法字符串时,仍能产生阴影效果,与W3C标准不一致。
115
116**变更影响**
117
118| 变更前                                   | 变更后                                   |
119| ---------------------------------------- | ---------------------------------------- |
120| CanvasRenderer的shadowColor属性传某些不符合W3C标准的颜色字符串时仍设置生效。<br>![shadowColor_before](figures/Canvas_shadowColor_before.png) | CanvasRenderer的shadowColor属性传某些不符合W3C标准的颜色字符串时设置不生效。<br>![globalCompositeOperation_after](figures/Canvas_shadowColor_after.png) |
121
122
123**起始API Level**
124
125API 8
126
127**变更发生版本**
128
129从OpenHarmony SDK 5.1.0.47开始。
130
131**变更的接口/组件**
132
133CanvasRenderingContext2D和OffscreenCanvasRenderingContext2D的shadowColor接口。
134
135**适配指导**
136
137传异常参数行为变更,无需适配。
138设置阴影颜色需要按照规范传入字符串参数:
1391、使用rgb()或rgba()。例:context.shadowColor = 'rgba(255, 0, 0, 255)'
1402、使用十六进制颜色值。例:context.shadowColor = '#FF0000'
141
142**示例**
143
144```ts
145@Entry
146@Component
147struct Demo {
148  private settings: RenderingContextSettings = new RenderingContextSettings(true)
149  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
150
151  build() {
152    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
153      Canvas(this.context)
154        .width('100%')
155        .height('100%')
156        .onReady(() => {
157          this.context.shadowBlur = 10
158          this.context.shadowOffsetX = 10
159          this.context.shadowOffsetY = 10
160          /**
161           * 变更前:设置生效为蓝色。
162           * 变更后:设置不生效,没有阴影效果。
163           */
164          this.context.shadowColor = "2024-11-28T07:27:10.607Z"
165          this.context.fillRect(10, 10, 100, 100)
166        })
167    }
168    .width('100%')
169    .height('100%')
170  }
171}
172```
173