1e41f4b71Sopenharmony_ci# ArkUI Subsystem Changelog
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci## cl.arkui.1 Default Layout Behavior Change for TextPicker Content
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci**Access Level**
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ciPublic API
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci**Reason for Change**
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ciThe layout drawing logic of **TextPicker** was inconsistent with that of **DatePicker** and **TimePicker**. When the component's height was set too large, the number of scrollable options displayed would exceed 5, causing an abnormal fade effect at the top and bottom edges.
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci**Change Impact**
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ciThis change is a compatible change.
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ciBefore the change, the total height of the scrollable options in **TextPicker** is the same as the component's height, and the scroll event responds throughout the entire component.
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci![TextPicker Content Layout Before Change](figures/textpicker_before.jpg)
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ciAfter the change, when the **TextPicker** component's height is too large (greater than the height required for five scrollable options), the overall height of the component remains unchanged, but a maximum of 5 scrollable options will be displayed, centered vertically within the component. The remaining area will be filled with blank space, and gesture events will only respond within the scrollable option area.
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci![TextPicker Content Layout After Change](figures/textpicker_after.jpg)
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci**API Level**
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci8
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci**Change Since**
30e41f4b71Sopenharmony_ci
31e41f4b71Sopenharmony_ciOpenHarmony SDK 5.0.0.17
32e41f4b71Sopenharmony_ci
33e41f4b71Sopenharmony_ci**Key API/Component Changes**
34e41f4b71Sopenharmony_ci
35e41f4b71Sopenharmony_ci**TextPicker** component
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_ci**Adaptation Guide**
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ciThe default behavior has changed, no adaptation is needed, but you should ensure that the new behavior does not cause issues with the overall application logic.
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci## cl.arkui.2 Dialog Box Closure Behavior Change During Page Route Transition
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci**Access Level**
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ciPublic API
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ci**Reason for Change**
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_ciIn the hierarchy, pages and dialog boxes are at the same level and are independent of each other. Dialog boxes should not be closed automatically during page navigation, and the closure behavior of the dialog box should be controlled by the developer as needed.
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ci**Change Impact**
52e41f4b71Sopenharmony_ci
53e41f4b71Sopenharmony_ciThis change is a non-compatible change.
54e41f4b71Sopenharmony_ci
55e41f4b71Sopenharmony_ciBefore the change, if a page with dialog boxes has navigation performed, the page content would change, and the last dialog box would also be closed automatically.
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_ciAfter the change,if a page with dialog boxes has navigation performed, the page content would change, but the dialog will no longer be closed automatically, meaning the dialog box will always remain on top of the page and will not disappear.
58e41f4b71Sopenharmony_ci
59e41f4b71Sopenharmony_ci**API Level**
60e41f4b71Sopenharmony_ci
61e41f4b71Sopenharmony_ci9
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci**Change Since**
64e41f4b71Sopenharmony_ci
65e41f4b71Sopenharmony_ciOpenHarmony SDK 5.0.0.17, effective since API version 12
66e41f4b71Sopenharmony_ci
67e41f4b71Sopenharmony_ci**Key API/Component Changes**
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ciRouter, Dialog
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci**Adaptation Guide**
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ciTo close all dialog boxes on the current page during route redirection, you can manually close them by calling the dialog box's **close** method before route redirection.
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ciThe sample code is as follows:
76e41f4b71Sopenharmony_ci```ts
77e41f4b71Sopenharmony_ciimport router from '@ohos.router';
78e41f4b71Sopenharmony_ci// Record all dialog boxes on the current page.
79e41f4b71Sopenharmony_ciconst dialogs: Map<string, CustomDialogController> = new Map();
80e41f4b71Sopenharmony_ci
81e41f4b71Sopenharmony_ci@CustomDialog
82e41f4b71Sopenharmony_cistruct CustomDialogExample {
83e41f4b71Sopenharmony_ci  controllerTwo?: CustomDialogController
84e41f4b71Sopenharmony_ci  build() {
85e41f4b71Sopenharmony_ci    Column() {
86e41f4b71Sopenharmony_ci      Button('Redirect')
87e41f4b71Sopenharmony_ci        .onClick(() => {
88e41f4b71Sopenharmony_ci          // Close all dialog boxes on the current page.
89e41f4b71Sopenharmony_ci          dialogs.forEach((controller, name) => {
90e41f4b71Sopenharmony_ci            controller.close();
91e41f4b71Sopenharmony_ci          })
92e41f4b71Sopenharmony_ci          // Route redirection
93e41f4b71Sopenharmony_ci          router.pushUrl({url: 'pages/Index'})
94e41f4b71Sopenharmony_ci        })
95e41f4b71Sopenharmony_ci    }
96e41f4b71Sopenharmony_ci  }
97e41f4b71Sopenharmony_ci}
98e41f4b71Sopenharmony_ci
99e41f4b71Sopenharmony_ci@Entry
100e41f4b71Sopenharmony_ci@Component
101e41f4b71Sopenharmony_cistruct CustomDialogUser {
102e41f4b71Sopenharmony_ci  dialogController: CustomDialogController | null = new CustomDialogController({
103e41f4b71Sopenharmony_ci    builder: CustomDialogExample(),
104e41f4b71Sopenharmony_ci  })
105e41f4b71Sopenharmony_ci  build() {
106e41f4b71Sopenharmony_ci    Column() {
107e41f4b71Sopenharmony_ci      Button('Open Dialog Box')
108e41f4b71Sopenharmony_ci        .onClick(() => {
109e41f4b71Sopenharmony_ci          if (this.dialogController != null) {
110e41f4b71Sopenharmony_ci            // Open the dialog box.
111e41f4b71Sopenharmony_ci            this.dialogController.open()
112e41f4b71Sopenharmony_ci            // Record the current dialog box.
113e41f4b71Sopenharmony_ci            dialogs.set('first', this.dialogController)
114e41f4b71Sopenharmony_ci          }
115e41f4b71Sopenharmony_ci        })
116e41f4b71Sopenharmony_ci    }
117e41f4b71Sopenharmony_ci  }
118e41f4b71Sopenharmony_ci}
119e41f4b71Sopenharmony_ci```
120e41f4b71Sopenharmony_ci
121e41f4b71Sopenharmony_ci## cl.arkui.3 syncLoad Effect Change for Image Component
122e41f4b71Sopenharmony_ci
123e41f4b71Sopenharmony_ci**Access Level**
124e41f4b71Sopenharmony_ci
125e41f4b71Sopenharmony_ciPublic API
126e41f4b71Sopenharmony_ci
127e41f4b71Sopenharmony_ci**Reason for Change**
128e41f4b71Sopenharmony_ci
129e41f4b71Sopenharmony_ciSome implementation scenarios on the application side require the **Image** component to support asynchronous loading of pixel maps.
130e41f4b71Sopenharmony_ci
131e41f4b71Sopenharmony_ci**Change Impact**
132e41f4b71Sopenharmony_ci
133e41f4b71Sopenharmony_ciThis change is a non-compatible change.
134e41f4b71Sopenharmony_ci
135e41f4b71Sopenharmony_ci**syncLoad** is an attribute of the **Image** component used to set whether the image is loaded synchronously.
136e41f4b71Sopenharmony_ci
137e41f4b71Sopenharmony_ciBefore API version 12, regardless of whether **syncLoad** is set to **false** or **true**, the **Image** component always loaded pixel maps synchronously in the main thread.
138e41f4b71Sopenharmony_ci
139e41f4b71Sopenharmony_ciSince API version 12, the **Image** component loads pixel maps synchronously or asynchronously according to **syncLoad**. If this attribute is not set, the default value **false** is used. Asynchronous loading will occur in an asynchronous thread, and there may be a flicker when loading pixel maps.
140e41f4b71Sopenharmony_ci
141e41f4b71Sopenharmony_ci**API Level**
142e41f4b71Sopenharmony_ci
143e41f4b71Sopenharmony_ci12
144e41f4b71Sopenharmony_ci
145e41f4b71Sopenharmony_ci**Change Since**
146e41f4b71Sopenharmony_ci
147e41f4b71Sopenharmony_ciOpenHarmony SDK 5.0.0.17
148e41f4b71Sopenharmony_ci
149e41f4b71Sopenharmony_ci**Example**
150e41f4b71Sopenharmony_ci
151e41f4b71Sopenharmony_ciN/A
152e41f4b71Sopenharmony_ci
153e41f4b71Sopenharmony_ci**Key API/Component Changes**
154e41f4b71Sopenharmony_ci
155e41f4b71Sopenharmony_ci**Image** component
156e41f4b71Sopenharmony_ci
157e41f4b71Sopenharmony_ci**Adaptation Guide**
158e41f4b71Sopenharmony_ci
159e41f4b71Sopenharmony_ciIf your application requires the **Image** component to load pixel maps synchronously, **syncLoad** must be set to **true**.
160