From e32c0edb6362101a5278563e61485b83a4e4b6c1 Mon Sep 17 00:00:00 2001 From: "ester.zhou" Date: Sat, 25 Feb 2023 14:43:09 +0800 Subject: [PATCH] Update docs (14100) Signed-off-by: ester.zhou --- .../arkts-state-mgmt-application-level.md | 4 +- .../arkts-state-mgmt-page-level.md | 2 +- .../reference/apis/js-apis-animator.md | 62 +++++------ .../reference/apis/js-apis-router.md | 46 +++++--- .../reference/arkui-ts/figures/rating1.gif | Bin 0 -> 90561 bytes .../ts-basic-components-imageanimator.md | 31 +----- .../arkui-ts/ts-basic-components-rating.md | 37 ++++++- .../arkui-ts/ts-basic-components-search.md | 2 +- .../arkui-ts/ts-basic-components-texttimer.md | 2 +- .../reference/arkui-ts/ts-container-list.md | 3 +- .../arkui-ts/ts-container-listitem.md | 6 +- .../reference/arkui-ts/ts-container-scroll.md | 30 ++--- en/application-dev/ui/ui-ts-layout-grid.md | 2 +- .../ui/ui-ts-layout-mediaquery.md | 104 ++++++++++-------- 14 files changed, 188 insertions(+), 143 deletions(-) create mode 100644 en/application-dev/reference/arkui-ts/figures/rating1.gif diff --git a/en/application-dev/quick-start/arkts-state-mgmt-application-level.md b/en/application-dev/quick-start/arkts-state-mgmt-application-level.md index 8e1bfd1a19..08626199bc 100644 --- a/en/application-dev/quick-start/arkts-state-mgmt-application-level.md +++ b/en/application-dev/quick-start/arkts-state-mgmt-application-level.md @@ -123,7 +123,7 @@ export default class EntryAbility extends UIAbility { onWindowStageCreate(windowStage) { // storage is passed to the loadContent API as a parameter. - windowStage.loadContent('pages/index', this.storage) + windowStage.loadContent('pages/Index', this.storage) } onWindowStageDestroy() { @@ -143,7 +143,7 @@ export default class EntryAbility extends UIAbility { The **@Component** decorated component obtains data. ```ts -// index.ets +// Index.ets let storage = LocalStorage.GetShared() @Entry(storage) diff --git a/en/application-dev/quick-start/arkts-state-mgmt-page-level.md b/en/application-dev/quick-start/arkts-state-mgmt-page-level.md index 19326001c0..a3a6ec898f 100644 --- a/en/application-dev/quick-start/arkts-state-mgmt-page-level.md +++ b/en/application-dev/quick-start/arkts-state-mgmt-page-level.md @@ -494,7 +494,7 @@ struct CompA { this.updateTotal() } - updateTotal(): number { + updateTotal(): void { let sum = 0; this.shopBasket.forEach((i) => { sum += i diff --git a/en/application-dev/reference/apis/js-apis-animator.md b/en/application-dev/reference/apis/js-apis-animator.md index febd683936..3aaf9f11af 100644 --- a/en/application-dev/reference/apis/js-apis-animator.md +++ b/en/application-dev/reference/apis/js-apis-animator.md @@ -37,10 +37,10 @@ Creates an **Animator** object. ```js let options = { duration: 1500, - easing: 'friction', + easing: "friction", delay: 0, - fill: 'forwards', - direction: 'normal', + fill: "forwards", + direction: "normal", iterations: 3, begin: 200.0, end: 400.0 @@ -80,10 +80,10 @@ For details about the error codes, see [Animator Error Codes](../errorcodes/erro ```js let options = { duration: 1500, - easing: 'friction', + easing: "friction", delay: 0, - fill: 'forwards', - direction: 'normal', + fill: "forwards", + direction: "normal", iterations: 3, begin: 200.0, end: 400.0 @@ -99,7 +99,7 @@ try { play(): void -Plays this animation. +Plays this animation. The animation retains the previous playback state. For example, if the animation is set to **reverse** and paused, it will remain in **reverse** when resumed. **System capability**: SystemCapability.ArkUI.ArkUI.Full @@ -247,16 +247,16 @@ Defines animator options. **System capability**: SystemCapability.ArkUI.ArkUI.Full -| Name | Type | Mandatory | Description | -| ---------- | ---------------------------------------- | ---- | ---------------------------------------- | -| duration | number | Yes | Duration for playing the animation, in milliseconds. The default value is **0**. | -| easing | string | Yes | Animation interpolation curve. The default value is **ease**. | -| delay | number | Yes | Animation delay duration, in milliseconds. The default value is **0**, indicating that there is no delay. | -| fill | "none" \| "forwards" \| "backwards" \| "both" | Yes | State of the animated target after the animation is executed. The default value is **none**, which means that the target will retain its end state (defined by the last keyframe) after the animation is executed.| -| direction | "normal" \| "reverse" \| "alternate" \| "alternate-reverse" | Yes | Animation playback mode. The default value is **normal**. | -| iterations | number | Yes | Number of times that the animation is played. The default value is **1**. The value **0** means not to play the animation, and **-1** means to play the animation for an unlimited number of times. | -| begin | number | Yes | Start point of the animation interpolation. The default value is 0. | -| end | number | Yes | End point of animation interpolation. The default value is 1. | +| Name | Type | Mandatory| Description | +| ---------- | ----------------------------------------------------------- | ---- | ------------------------------------------------------------ | +| duration | number | Yes | Duration for playing the animation, in milliseconds. | +| easing | string | Yes | Animation interpolation curve. Only the following values are supported:
**"linear"**: The animation speed keeps unchanged.
**"ease"**: The animation starts slowly, accelerates, and then slows down towards the end. The cubic-bezier curve (0.25, 0.1, 0.25, 1.0) is used.
**"ease-in"**: The animation starts at a low speed and then picks up speed until the end. The cubic-bezier curve (0.42, 0.0, 1.0, 1.0) is used.
**"ease-out"**: The animation ends at a low speed. The cubic-bezier curve (0.0, 0.0, 0.58, 1.0) is used.
**"ease-in-out"**: The animation starts and ends at a low speed. The cubic-bezier curve (0.42, 0.0, 0.58, 1.0) is used.
**"fast-out-slow-in"**: The animation uses the standard cubic-bezier curve (0.4, 0.0, 0.2, 1.0).
**"linear-out-slow-in"**: The animation uses the deceleration cubic-bezier curve (0.0, 0.0, 0.2, 1.0).
**"friction"**: The animation uses the damping cubic-bezier curve (0.2, 0.0, 0.2, 1.0).
**"extreme-deceleration"**: The animation uses the extreme deceleration cubic-bezier curve (0.0, 0.0, 0.0, 1.0).
**"rhythm"**: The animation uses the rhythm cubic-bezier curve (0.7, 0.0, 0.2, 1.0).
**"sharp"**: The animation uses the sharp cubic-bezier curve (0.33, 0.0, 0.67, 1.0).
**"smooth"**: The animation uses the smooth cubic-bezier curve (0.4, 0.0, 0.4, 1.0).
**cubic-bezier(x1, y1, x2, y2)**: The animation uses the defined cubic-bezier curve, where the value of the input parameters must range from 0 to 1.
**steps(number, step-position)**: The animation uses a step curve. The **number** must be set and only an integer is supported. **step-position** is optional. It can be set to **start** or **end**. The default value is **end**.| +| delay | number | Yes | Animation delay duration, in milliseconds. Value **0** means that there is no delay. | +| fill | "none" \| "forwards" \| "backwards" \| "both" | Yes | State of the animated target after the animation is executed.
**"none"**: No style is applied to the target before or after the animation is executed.
**"forwards"**: The target keeps the state at the end of the animation (defined in the last key frame) after the animation is executed.
**"backwards"**: The animation uses the value defined in the first key frame during the **animation-delay**. When **animation-direction** is set to **normal** or **alternate**, the value in the **from** key frame is used. When **animation-direction** is set to **reverse** or **alternate-reverse**, the value in the **to** key frame is used.
**"both"**: The animation follows the **forwards** and **backwards** rules.| +| direction | "normal" \| "reverse" \| "alternate" \| "alternate-reverse" | Yes | Animation playback mode.
**"normal"**: plays the animation in forward loop mode.
**"reverse"**: plays the animation in reverse loop mode.
**"alternate"**: plays the animation in alternating loop mode. When the animation is played for an odd number of times, the playback is in forward direction. When the animation is played for an even number of times, the playback is in reverse direction.
**"alternate-reverse"**: plays the animation in reverse alternating loop mode. When the animation is played for an odd number of times, the playback is in reverse direction. When the animation is played for an even number of times, the playback is in forward direction.| +| iterations | number | Yes | Number of times that the animation is played. The value **0** means not to play the animation, and **-1** means to play the animation for an unlimited number of times.
**NOTE**
If this parameter is set to a negative value other than **-1**, the value is invalid. In this case, the animation is played once.| +| begin | number | Yes | Start point of the animation interpolation. | +| end | number | Yes | End point of animation interpolation. | ## Example @@ -280,10 +280,10 @@ export default { onInit() { let options = { duration: 1500, - easing: 'friction', + easing: "friction", delay: 0, - fill: 'forwards', - direction: 'normal', + fill: "forwards", + direction: "normal", iterations: 2, begin: 200.0, end: 400.0 @@ -293,9 +293,9 @@ export default { Show() { let options1 = { duration: 1500, - easing: 'friction', + easing: "friction", delay: 0, - fill: 'forwards', + fill: "forwards", direction: "normal", iterations: 2, begin: 0, @@ -336,10 +336,10 @@ struct AnimatorTest { let _this = this this.backAnimator = animator.create({ duration: 2000, - easing: 'ease', + easing: "ease", delay: 0, - fill: 'none', - direction: 'normal', + fill: "none", + direction: "normal", iterations: 1, begin: 100, end: 200 @@ -444,10 +444,10 @@ struct AnimatorTest { this.flag = false this.backAnimator.reset({ duration: 5000, - easing: 'ease-in', + easing: "ease-in", delay: 0, - fill: 'none', - direction: 'normal', + fill: "none", + direction: "normal", iterations: 4, begin: 100, end: 300 @@ -513,10 +513,10 @@ This API is deprecated since API version 9. You are advised to use [create9 ```js let options = { duration: 1500, - easing: 'friction', + easing: "friction", delay: 0, - fill: 'forwards', - direction: 'normal', + fill: "forwards", + direction: "normal", iterations: 3, begin: 200.0, end: 400.0, diff --git a/en/application-dev/reference/apis/js-apis-router.md b/en/application-dev/reference/apis/js-apis-router.md index 1234e81445..b5cbbd52e0 100644 --- a/en/application-dev/reference/apis/js-apis-router.md +++ b/en/application-dev/reference/apis/js-apis-router.md @@ -100,13 +100,13 @@ router.pushUrl({ data3: [123, 456, 789] } } -}) - .then(() => { - // success - }) - .catch(err => { +}, (err) => { + if (err) { console.error(`pushUrl failed, code is ${err.code}, message is ${err.message}`); - }) + return; + } + console.info('pushUrl success'); +}) ``` ## router.pushUrl9+ @@ -473,9 +473,9 @@ Describes the page routing state. | name | string | No | Name of the current page, that is, the file name. | | path | string | Yes | Path of the current page. | -## router.enableBackPageAlert9+ +## router.showAlertBeforeBackPage9+ -enableBackPageAlert(options: EnableAlertOptions): void +showAlertBeforeBackPage(options: EnableAlertOptions): void Enables the display of a confirm dialog box before returning to the previous page. @@ -499,11 +499,11 @@ For details about the error codes, see [Router Error Codes](../errorcodes/errorc ```js try { - router.enableBackPageAlert({ + router.showAlertBeforeBackPage({ message: 'Message Info' }); } catch(error) { - console.error(`enableBackPageAlert failed, code is ${error.code}, message is ${error.message}`); + console.error(`showAlertBeforeBackPage failed, code is ${error.code}, message is ${error.message}`); } ``` ## EnableAlertOptions @@ -516,9 +516,9 @@ Describes the confirm dialog box. | ------- | ------ | ---- | -------- | | message | string | Yes | Content displayed in the confirm dialog box.| -## router.disableAlertBeforeBackPage +## router.hideAlertBeforeBackPage9+ -disableAlertBeforeBackPage(): void +hideAlertBeforeBackPage(): void Disables the display of a confirm dialog box before returning to the previous page. @@ -527,7 +527,7 @@ Disables the display of a confirm dialog box before returning to the previous pa **Example** ```js -router.disableAlertBeforeBackPage(); +router.hideAlertBeforeBackPage(); ``` ## router.getParams @@ -574,7 +574,7 @@ Enumerates the routing modes. | Name | Description | | -------- | ------------------------------------------------------------ | -| Standard | Standard mode.
The target page is added to the top of the page stack, regardless of whether a page with the same URL exists in the stack.| +| Standard | Standard mode.
The target page is added to the top of the page stack, regardless of whether a page with the same URL exists in the stack.
**NOTE**
If the routing mode is not used, the page is redirected to in standard mode.| | Single | Singleton mode.
If the URL of the target page already exists in the page stack, the page closest to the top of the stack is moved as a new page to the top of the stack.
If the URL of the target page does not exist in the page stack, the page is redirected to in standard mode.| ## Examples @@ -749,7 +749,7 @@ enableAlertBeforeBackPage(options: EnableAlertOptions): void Enables the display of a confirm dialog box before returning to the previous page. -This API is deprecated since API version 9. You are advised to use [enableBackPageAlert9+](#routerenablebackpagealert9) instead. +This API is deprecated since API version 9. You are advised to use [showAlertBeforeBackPage9+](#routershowalertbeforebackpage9) instead. **System capability**: SystemCapability.ArkUI.ArkUI.Full @@ -766,3 +766,19 @@ This API is deprecated since API version 9. You are advised to use [enableBackPa message: 'Message Info' }); ``` + +## router.disableAlertBeforeBackPage(deprecated) + +disableAlertBeforeBackPage(): void + +Disables the display of a confirm dialog box before returning to the previous page. + +This API is deprecated since API version 9. You are advised to use [hideAlertBeforeBackPage9+](#routerhidealertbeforebackpage9) instead. + +**System capability**: SystemCapability.ArkUI.ArkUI.Full + +**Example** + +```js +router.disableAlertBeforeBackPage(); +``` diff --git a/en/application-dev/reference/arkui-ts/figures/rating1.gif b/en/application-dev/reference/arkui-ts/figures/rating1.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d7a087484ec152e0be0cecdc1b571d5a6a8f076 GIT binary patch literal 90561 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%0ASILy?T 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 KolpP(;r|br&>0p0 literal 0 HcmV?d00001 diff --git a/en/application-dev/reference/arkui-ts/ts-basic-components-imageanimator.md b/en/application-dev/reference/arkui-ts/ts-basic-components-imageanimator.md index 2574360657..09b45c7abe 100644 --- a/en/application-dev/reference/arkui-ts/ts-basic-components-imageanimator.md +++ b/en/application-dev/reference/arkui-ts/ts-basic-components-imageanimator.md @@ -70,39 +70,20 @@ struct ImageAnimatorExample { ImageAnimator() .images([ { - src: $r('app.media.img1'), - duration: 500, - width: 170, - height: 120, - top: 0, - left: 0 + src: $r('app.media.img1') }, { - src: $r('app.media.img2'), - duration: 500, - width: 170, - height: 120, - top: 0, - left: 170 + src: $r('app.media.img2') }, { - src: $r('app.media.img3'), - duration: 500, - width: 170, - height: 120, - top: 120, - left: 170 + src: $r('app.media.img3') }, { - src: $r('app.media.img4'), - duration: 500, - width: 170, - height: 120, - top: 120, - left: 0 + src: $r('app.media.img4') } ]) - .state(this.state).reverse(this.reverse).fixedSize(false) + .duration(2000) + .state(this.state).reverse(this.reverse) .fillMode(FillMode.None).iterations(this.iterations).width(340).height(240) .margin({ top: 100 }) .onStart(() => { diff --git a/en/application-dev/reference/arkui-ts/ts-basic-components-rating.md b/en/application-dev/reference/arkui-ts/ts-basic-components-rating.md index 6eba8d6890..560a20be96 100644 --- a/en/application-dev/reference/arkui-ts/ts-basic-components-rating.md +++ b/en/application-dev/reference/arkui-ts/ts-basic-components-rating.md @@ -39,9 +39,10 @@ Rating(options?: { rating: number, indicator?: boolean }) | -------- | -------- | | onChange(callback:(value: number) => void) | Triggered when the rating value changes.| - ## Example +### Example 1 + ```ts // xxx.ets @Entry @@ -95,3 +96,37 @@ struct RatingExample { ``` ![rating](figures/rating.gif) + +### Example 2 + +```ts +// xxx.ets +@Entry +@Component +struct RatingExample { + @State rating: number = 3.5 + + build() { + Column() { + Rating({ rating: this.rating, indicator: false }) + .stars(5) + .stepSize(0.5) + .starStyle({ + backgroundUri: '/common/imag1.png', // The common folder is at the same level as pages. + foregroundUri: '/common/imag2.png', + secondaryUri: '/common/imag3.png' + }) + .margin({ top: 24 }) + .onChange((value: number) => { + this.rating = value + }) + Text('current score is ' + this.rating) + .fontSize(16) + .fontColor('rgba(24,36,49,0.60)') + .margin({ top: 16 }) + }.width('100%').height('100%').backgroundColor('#F1F3F5') + } +} +``` + +![rating1](figures/rating1.gif) diff --git a/en/application-dev/reference/arkui-ts/ts-basic-components-search.md b/en/application-dev/reference/arkui-ts/ts-basic-components-search.md index 9d96cce660..9f1d13ee99 100644 --- a/en/application-dev/reference/arkui-ts/ts-basic-components-search.md +++ b/en/application-dev/reference/arkui-ts/ts-basic-components-search.md @@ -87,7 +87,7 @@ struct SearchExample { .searchButton('SEARCH') .width(400) .height(40) - .backgroundColor(Color.White) + .backgroundColor('#F5F5F5') .placeholderColor(Color.Grey) .placeholderFont({ size: 14, weight: 400 }) .textFont({ size: 14, weight: 400 }) diff --git a/en/application-dev/reference/arkui-ts/ts-basic-components-texttimer.md b/en/application-dev/reference/arkui-ts/ts-basic-components-texttimer.md index a4b2b64dd8..c586ea6669 100644 --- a/en/application-dev/reference/arkui-ts/ts-basic-components-texttimer.md +++ b/en/application-dev/reference/arkui-ts/ts-basic-components-texttimer.md @@ -75,7 +75,7 @@ struct TextTimerExample { build() { Column() { - TextTimer({ controller: this.textTimerController, isCountDown: true, count: 30000 }) + TextTimer({ isCountDown: true, count: 30000, controller: this.textTimerController }) .format(this.format) .fontColor(Color.Black) .fontSize(50) diff --git a/en/application-dev/reference/arkui-ts/ts-container-list.md b/en/application-dev/reference/arkui-ts/ts-container-list.md index bc109daa46..7a944fbded 100644 --- a/en/application-dev/reference/arkui-ts/ts-container-list.md +++ b/en/application-dev/reference/arkui-ts/ts-container-list.md @@ -70,7 +70,8 @@ In addition to the [universal attributes](ts-universal-attributes-size.md), the | onScrollIndex(event: (start: number, end: number) => void) | Triggered when scrolling starts.
When calculating the index value, the **\** accounts for one index value as a whole, and the index values of the list items within are not calculated.
- **start**: index of the scroll start position.
- **end**: index of the scroll end position.| | onReachStart(event: () => void) | Triggered when the list reaches the start position.| | onReachEnd(event: () => void) | Triggered when the list reaches the end position.| -| onScrollBegin9+(event: (dx: number, dy: number) => { dxRemain: number, dyRemain: number }) | Triggered when the list starts to scroll. The input parameters indicate the amount by which the list will scroll. The event handler then works out the amount by which the list needs to scroll based on the real-world situation and returns the result.
- **dx**: amount by which the list will scroll in the horizontal direction.
- **dy**: amount by which the list will scroll in the horizontal direction.
- **dxRemain**: amount by which the list actually scrolls in the horizontal direction.
- **dyRemain**: amount by which the list actually scrolls in the vertical direction.| +| onScrollFrameBegin9+(event: (offset: number, state: ScrollState) => { offsetRemain }) | Triggered when the list starts to scroll. The input parameters indicate the amount by which the list will scroll. The event handler then works out the amount by which the list needs to scroll based on the real-world situation and returns the result.
\- **offset**: amount to scroll by.
\- **state**: current sliding status.
- **offsetRemain**: required amount to scroll by in the horizontal direction.| +| onScrollStart9+(event: () => void) | Triggered when the list starts scrolling initiated by the user's finger dragging the **\** component or its scrollbar. This event will not be triggered if the scrolling is initiated by using [Scroller](ts-container-scroll.md#scroller).| | onScrollStop(event: () => void) | Triggered when the list stops scrolling after the user's finger leaves the screen. This event will not be triggered if the scrolling is initiated by using [Scroller](ts-container-scroll.md#scroller).| | onItemMove(event: (from: number, to: number) => boolean) | Triggered when a list item moves.
- **from**: index of the item before moving.
- **to**: index of the item after moving.| | onItemDragStart(event: (event: ItemDragInfo, itemIndex: number) => ((() => any) \| void) | Triggered when a list element starts to be dragged.
- **event**: See [ItemDragInfo](ts-container-grid.md#itemdraginfo).
- **itemIndex**: index of the dragged list element.| diff --git a/en/application-dev/reference/arkui-ts/ts-container-listitem.md b/en/application-dev/reference/arkui-ts/ts-container-listitem.md index 5ff83b20ec..a101532880 100644 --- a/en/application-dev/reference/arkui-ts/ts-container-listitem.md +++ b/en/application-dev/reference/arkui-ts/ts-container-listitem.md @@ -101,8 +101,7 @@ struct ListItemExample2 { Column() { List({space:10}) { ListItem() { - Text(this.message) { - } + Text(this.message) .width('100%') .height(100) .fontSize(16) @@ -113,8 +112,7 @@ struct ListItemExample2 { .swipeAction({ end:this.itemEnd}) ListItem() { - Text(this.message) { - } + Text(this.message) .width('100%') .height(100) .fontSize(16) diff --git a/en/application-dev/reference/arkui-ts/ts-container-scroll.md b/en/application-dev/reference/arkui-ts/ts-container-scroll.md index a0efd8457d..1ebba8cc42 100644 --- a/en/application-dev/reference/arkui-ts/ts-container-scroll.md +++ b/en/application-dev/reference/arkui-ts/ts-container-scroll.md @@ -36,20 +36,22 @@ In addition to the [universal attributes](ts-universal-attributes-size.md), the | Horizontal | Only horizontal scrolling is supported. | | Vertical | Only vertical scrolling is supported. | | None | Scrolling is disabled. | -| Free(deprecated) | Vertical or horizontal scrolling is supported.
This API is deprecated since API version 9.| +| Free(deprecated) | Vertical or horizontal scrolling is supported.
This API is deprecated since API version 9. | ## Events | Name | Description | | ------------------------------------------------------------ | ------------------------------------------------------------ | -| onScrollBegin9+(event: (dx: number, dy: number) => { dxRemain: number, dyRemain: number }) | Invoked when scrolling starts.
Parameters:
- **dx**: amount to scroll by in the horizontal direction.
- **dy**: amount to scroll by in the vertical direction.
Return value:
- **dxRemain**: remaining amount to scroll by in the horizontal direction.
- **dyRemain**: remaining amount to scroll by in the vertical direction.| -| onScroll(event: (xOffset: number, yOffset: number) => void) | Invoked to return the horizontal and vertical offsets during scrolling when the specified scroll event occurs. | -| onScrollEdge(event: (side: Edge) => void) | Invoked when scrolling reaches the edge. | -| onScrollEnd(event: () => void) | Invoked when scrolling stops. | +| onScrollFrameBegin9+(event: (offset: number, state: ScrollState) => { offsetRemain }) | Triggered when each frame scrolling starts. The input parameters indicate the amount by which the **\** component will scroll. The event handler then works out the amount by which the component needs to scroll based on the real-world situation and returns the result.
\- **offset**: amount to scroll by.
\- **state**: current scrolling status.
- **offsetRemain**: required amount to scroll by in the horizontal direction.| +| onScroll(event: (xOffset: number, yOffset: number) => void) | Triggered to return the horizontal and vertical offsets during scrolling when the specified scroll event occurs. | +| onScrollEdge(event: (side: Edge) => void) | Triggered when scrolling reaches the edge. | +| onScrollEnd(event: () => void) | Triggered when scrolling stops.
This event is deprecated since API version 9. Use the **onScrollStop** event instead. | +| onScrollStart9+(event: () => void) | Triggered when scrolling starts and is initiated by the user's finger dragging the **\** component or its scrollbar. This event will not be triggered if the scrolling is initiated by using [Scroller](#scroller).| +| onScrollStop9+(event: () => void) | Triggered when scrolling stops after the user's finger leaves the screen. This event will not be triggered if the scrolling is initiated by using [Scroller](#scroller).| > **NOTE** > -> If the **onScrollBegin** event and **scrollBy** API are used to implement nested scrolling, you must set **edgeEffect** of the scrolling child node to **None**. For example, if a **\** is nested in the **\** component, the **edgeEffect** attribute of the **\** must be set to **EdgeEffect.None**. +> If the **onScrollFrameBegin** event and **scrollBy** method are used to implement nested scrolling, set the **edgeEffect** attribute of the scrollable child component to **None**. For example, if a **\** is nested in the **\** component, **edgeEffect** of the **\** must be set to **EdgeEffect.None**. ## Scroller @@ -76,7 +78,7 @@ Scrolls to the specified position. | --------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | | xOffset | Length | Yes | Horizontal scrolling offset. | | yOffset | Length | Yes | Vertical scrolling offset. | -| animation | {
duration: number,
curve: [Curve](ts-animatorproperty.md)
} | No | Animation configuration, which includes the following:
- **duration**: scrolling duration.
- **curve**: scrolling curve.| +| animation | {
duration: number,
curve: [Curve](ts-appendix-enums.md#curve)
} | No | Animation configuration, which includes the following:
- **duration**: scrolling duration.
- **curve**: scrolling curve.| ### scrollEdge @@ -104,7 +106,7 @@ Scrolls to the next or previous page. | Name | Type | Mandatory | Description | | --------- | ------- | ---- | ------------------------------ | | next | boolean | Yes | Whether to turn to the next page. The value **true** means to scroll to the next page, and **false** means to scroll to the previous page.| -| direction(deprecated) | [Axis](ts-appendix-enums.md#axis) | No | Scrolling direction: horizontal or vertical.
This API is deprecated since API version 9. | +| direction(deprecated) | [Axis](ts-appendix-enums.md#axis) | No | Scrolling direction: horizontal or vertical.
This API is deprecated since API version 9. | ### currentOffset @@ -131,7 +133,7 @@ Scrolls to the item with the specified index. > **NOTE** > -> Only the **\**, **\**, and **\** components are supported. +> Only the **\** and **\** components are supported. **Parameters** @@ -268,13 +270,13 @@ struct NestedScroll { .onReachEnd(() => { this.listPosition = 2 }) - .onScrollBegin((dx: number, dy: number) => { - if ((this.listPosition == 0 && dy >= 0) || (this.listPosition == 2 && dy <= 0)) { - this.scrollerForScroll.scrollBy(0, -dy) - return { dxRemain: dx, dyRemain: 0 } + .onScrollFrameBegin((offset: number) => { + if ((this.listPosition == 0 && offset <= 0) || (this.listPosition == 2 && offset >= 0)) { + this.scrollerForScroll.scrollBy(0, offset) + return { offsetRemain: 0 } } this.listPosition = 1 - return { dxRemain: dx, dyRemain: dy }; + return { offsetRemain: offset }; }) Text("Scroll Area") diff --git a/en/application-dev/ui/ui-ts-layout-grid.md b/en/application-dev/ui/ui-ts-layout-grid.md index c736c25f7c..941519f0a3 100644 --- a/en/application-dev/ui/ui-ts-layout-grid.md +++ b/en/application-dev/ui/ui-ts-layout-grid.md @@ -159,7 +159,7 @@ Grid() { .fontSize(16) .textAlign(TextAlign.Center) .textStyle() - }.rowStart(2).rowEnd(3) // The grid item spans the second and third columns. + }.rowStart(2).rowEnd(3) // The grid item spans the second and third rows. GridItem() { Text('4') diff --git a/en/application-dev/ui/ui-ts-layout-mediaquery.md b/en/application-dev/ui/ui-ts-layout-mediaquery.md index 2ff489108f..205265a30d 100644 --- a/en/application-dev/ui/ui-ts-layout-mediaquery.md +++ b/en/application-dev/ui/ui-ts-layout-mediaquery.md @@ -1,27 +1,31 @@ # Media Query +[Media queries](../reference/apis/js-apis-mediaquery.md) are at the core of responsive design and widely used on mobile devices. You can use them to create different application styles depending on the device type or device state. Specifically, media queries allow you to: -Media queries are widely used on mobile devices. You can use them to modify the application style based on the device type or specific features and device parameters (such as the screen resolution). Specifically, media queries allow you to: - - -1. Design a layout style based on the device and app attributes. +1. Design a layout style based on the device and application attributes (such as display area, dark light color, and resolution). 2. Update the page layout to adapt to dynamic screen changes (for example, screen splitting or switching between landscape and portrait modes). + ## Usage Invoke the **mediaquery** API to set the media query condition and the callback, and change the page layout or implement service logic in the callback corresponding to the condition. -First, import the mediaquery module, as shown below: +First, import the **mediaquery** module, as shown below: + ```ts import mediaquery from '@ohos.mediaquery' ``` + Then, use the **matchMediaSync** API to set the media query condition and save the returned listener, as shown below: + ```ts listener = mediaquery.matchMediaSync('(orientation: landscape)') ``` -Finally, register the callback using the saved listener, and change the page layout or implement service logic in the callback. When the media query condition is matched, the callback is triggered. The sample code is as follows: + +Finally, register the **onPortrait** callback using the saved listener, and change the page layout or implement service logic in the callback. When the media query condition is matched, the callback is triggered. The sample code is as follows: + ```ts onPortrait(mediaQueryResult) { if (mediaQueryResult.matches) { @@ -33,19 +37,25 @@ onPortrait(mediaQueryResult) { listener.on('change', onPortrait) ``` -## Syntax of Media Query Conditions +## Media Query Conditions + +The media query condition consists of the media type (optional), logical operator, and media feature. The logical operator is used to connect different media types and media features. A media feature must be enclosed in parentheses (). There may be multiple media features. The specific rules are as follows: + +### Syntax + ``` [media-type] [and|not|only] [(media-feature)] ``` + Examples are as follows: - `screen and (round-screen: true)` // The query is valid when the device screen is round. +**screen and (round-screen: true)**: The query is valid when the device screen is round. - `(max-height: 800)` // The query is valid when the height does not exceed 800. +**(max-height: 800)**: The query is valid when the height is less than or equal to 800. - `(height <= 800)` // The query is valid when the height does not exceed 800. +**(height <= 800)**: The query is valid when the height is less than or equal to 800. - `screen and (device-type: tv) or (resolution < 2)` // The query is valid only when all media features are true. +**screen and (device-type: tv) or (resolution < 2)**: The query is valid when the device type is TV or the device resolution is less than 2. This is a multi-condition query that contains multiple media features. ### media-type @@ -53,59 +63,58 @@ Examples are as follows: | ------ | -------------- | | screen | Media query based on screen-related parameters.| - -### Media Logic Operation (and|not|only) +### Media Logic Operation (and|or|not|only) You can use logical operators (**and**, **or**, **not**, and **only**) to compose complex media queries. You can also combine them using comma (,). The following table describes the operators. -**Table 1** Media logical operators + **Table 1** Media logical operators | Type | Description | | -------- | ---------------------------------------- | -| and | The **and** operator is used to combine multiple media features into one media query, in a logical AND operation. The query is valid only when all media features are true. It can also combine media types and media functions.
For example, **screen and (device-type: wearable) and (max-height: 600) ** indicates that the query is valid when the device type is wearable and the maximum height of the application is 600 pixel units.| -| or | The **or** operator is used to combine multiple media features into one media query, in a logical OR operation. The query is valid if a media feature is true.
For example, **screen and (max-height: 1000) or (round-screen: true)** indicates that the query is valid when the maximum height of the application is 1000 pixel units or the device screen is round. | -| not | The **not** operator is used to perform a logical negation for a media query. **true** is returned if the query condition is not met. Otherwise, **false** is returned. In a media query list, logical negation is performed only for the media query using the **not** operator.
For example, **not screen and (min-height: 50) and (max-height: 600) ** indicates that the query is valid when the height of the application is less than 50 pixel units or greater than 600 pixel units.
**NOTE**
When the **not** operator is used, the media type must be specified. | -| only | The **only** operator applies the selected style only when the entire expression is matched. It can be used to prevent ambiguity on browsers of earlier versions. The statements that contain both media types and media features produce ambiguity when they are received by some browsers of earlier versions. For example:
screen and (min-height: 50)
The browsers of earlier versions would mislead this sentence into screen, causing the fact that the specified style is applied when only the media type is matched. In this case, the **only** operator can be used to avoid this problem.
**NOTE**
When the **only** operator is used, the media type must be specified. | -| ,(comma) | The **or** operator is used to combine multiple media features into one media query, in a logical OR operation. The query is valid if a media feature is true. The effect of a comma operator is equivalent to that of the **or** operator.
For example, **screen and (min-height: 1000), (round-screen: true) ** indicates that the query is valid when the minimum height of the application is 1000 pixel units or the device screen is round.| +| and | The **and** operator is used to combine multiple media features into one media query, in a logical AND operation. The query is valid only when all media features are true. It can also combine media types and media functions.
For example, **screen and (device-type: wearable) and (max-height: 600)** indicates that the query is valid when the device type is wearable and the maximum height of the application is 600 pixel units.| +| or | The **or** operator is used to combine multiple media features into one media query, in a logical OR operation. The query is valid if a media feature is true.
For example, **screen and (max-height: 1000) or (round-screen: true)** indicates that the query is valid when the maximum height of the application is 1000 pixel units or the device screen is round.| +| not | The **not** operator is used to perform a logical negation for a media query. **true** is returned if the query condition is not met. Otherwise, **false** is returned.
For example, **not screen and (min-height: 50) and (max-height: 600)** indicates that the query is valid when the height of the application is less than 50 pixel units or greater than 600 pixel units.
You must specify the media type when using the **not** operator.| +| only | The **only** operator applies the selected style only when the entire expression is matched. It can be used to prevent ambiguity on browsers of earlier versions. The statements that contain both media types and media features produce ambiguity when they are received by some browsers of earlier versions. For example:
screen and (min-height: 50)
The browsers of earlier versions would mislead this sentence into screen, causing the fact that the specified style is applied when only the media type is matched. In this case, the **only** operator can be used to avoid this problem.
You must specify the media type when using the **only** operator.| +| , (comma) | The **or** operator is used to combine multiple media features into one media query, in a logical OR operation. The query is valid if a media feature is true. The effect of a comma operator is equivalent to that of the **or** operator.
For example, **screen and (min-height: 1000), (round-screen: true)** indicates that the query is valid when the minimum height of the application is 1000 pixel units or the device screen is round.| At MediaQuery Level 4, range query is imported so that you can use the operators including <=, >=, <, and > besides the max- and min-operators. -**Table 2** Logical operators for range query + **Table 2** Logical operators for range query | Type | Description | | ----- | ---------------------------------------- | -| <= | Less than or equal to, for example, **screen and (50 <= height)**.| -| >= | Greater than or equal to, for example, **screen and (600 >= height)**.| -| < | Less than, for example, **screen and (50 < height)**.| -| > | Greater than, for example, **screen and (600 > height)**.| - +| < = | Less than or equal to, for example, **screen and (50 <= height)**.| +| > = | Greater than or equal to, for example, **screen and (600 >= height)**.| +| < | Less than, for example, **screen and (50 < height)**.| +| > | Greater than, for example, **screen and (600 > height)**.| ### media-feature -| Type | Description | -| ----------------- | ---------------------------------------- | -| height | Height of the display area on the application page. | -| min-height | Minimum height of the display area on the application page. | -| max-height | Maximum height of the display area on the application page. | -| width | Width of the display area on the app page. | -| min-width | Minimum width of the display area on the application page. | -| max-width | Maximum width of the display area on the application page. | +| Type | Description | +| ----------------- | ------------------------------------------------------------ | +| height | Height of the display area on the application page. | +| min-height | Minimum height of the display area on the application page. | +| max-height | Maximum height of the display area on the application page. | +| width | Width of the display area on the app page. | +| min-width | Minimum width of the display area on the application page. | +| max-width | Maximum width of the display area on the application page. | | resolution | Resolution of the device. The unit can be dpi, dppx, or dpcm.
- **dpi** indicates the number of physical pixels per inch. 1 dpi ≈ 0.39 dpcm.
- **dpcm** indicates the number of physical pixels per centimeter. 1 dpcm ≈ 2.54 dpi.
- **dppx** indicates the number of physical pixels in each pixel. (This unit is calculated based on this formula: 96 px = 1 inch, which is different from the calculation method of the px unit on the page.) 1 dppx = 96 dpi.| -| min-resolution | Minimum device resolution. | -| max-resolution | Maximum device resolution. | +| min-resolution | Minimum device resolution. | +| max-resolution | Maximum device resolution. | | orientation | Screen orientation.
Options are as follows:
- orientation: portrait
- orientation: landscape| -| device-height | Height of the device. | -| min-device-height | Minimum height of the device. | -| max-device-height | Maximum height of the device. | -| device-width | Width of the device. | -| min-device-width | Minimum width of the device. | -| max-device-width | Maximum width of the device. | +| device-height | Height of the device. | +| min-device-height | Minimum height of the device. | +| max-device-height | Maximum height of the device. | +| device-width | Width of the device. | +| device-type | Type of the device.
Value range: **default** | +| min-device-width | Minimum width of the device. | +| max-device-width | Maximum width of the device. | | round-screen | Screen type. The value **true** means that the screen is round, and **false** means the opposite. | -| dark-mode | Whether the device is in dark mode. The value **true** means that the device is in dark mode, and **false** means the opposite. | +| dark-mode | Whether the device is in dark mode. The value **true** means that the device is in dark mode, and **false** means the opposite. | ## Example Scenario -Use media queries to apply different content and styles to the page text when the screen is switched between landscape and portrait modes. +In the following example, media queries are used to apply different content and styles to the page text when the screen is switched between landscape and portrait modes. ```ts import mediaquery from '@ohos.mediaquery' @@ -142,8 +151,11 @@ struct MediaQueryExample { } } ``` -When the device is in landscape orientation, the text content is displayed in landscape mode in the color of #FFD700.
+ +When the device is in landscape orientation, the text content is displayed in landscape mode in the color of #FFD700. + ![en-us_image_0000001262954829](figures/en-us_image_0000001262954829.png) -When the device is not in landscape orientation, the text content is displayed in portrait mode in the color of #DB7093.
-![en-us_image_0000001263074739](figures/en-us_image_0000001263074739.png) \ No newline at end of file +When the device is not in landscape orientation, the text content is displayed in portrait mode in the color of #DB7093. + +![en-us_image_0000001263074739](figures/en-us_image_0000001263074739.png) -- GitLab