diff --git a/zh-cn/application-dev/reference/apis-arkui/js-apis-arkui-frameNode.md b/zh-cn/application-dev/reference/apis-arkui/js-apis-arkui-frameNode.md index f9156cedb2b8607b7c466d46ae3dc451fb781de8..dd1c63efe476d2745b96ed1822b393abeb4f15a3 100644 --- a/zh-cn/application-dev/reference/apis-arkui/js-apis-arkui-frameNode.md +++ b/zh-cn/application-dev/reference/apis-arkui/js-apis-arkui-frameNode.md @@ -520,6 +520,67 @@ getPositionToWindow(): Position **示例:** +```ts +import { NodeController, FrameNode, UIContext } from '@kit.ArkUI'; + +const TEST_TAG: string = "FrameNode "; + +class MyNodeController extends NodeController { + public frameNode: FrameNode | null = null; + private rootNode: FrameNode | null = null; + + makeNode(uiContext: UIContext): FrameNode | null { + this.rootNode = new FrameNode(uiContext); + this.frameNode = new FrameNode(uiContext); + this.frameNode.commonAttribute.backgroundColor(Color.Pink); + this.frameNode.commonAttribute.size({ width: 100, height: 100 }); + this.rootNode.appendChild(this.frameNode); + return this.rootNode; + } + + getPositionToWindow() { + let positionToWindow = this.rootNode?.getPositionToWindow(); + console.info(TEST_TAG + JSON.stringify(positionToWindow)); + } +} + +@Entry +@Component +struct Index { + private myNodeController: MyNodeController = new MyNodeController(); + private scroller: Scroller = new Scroller(); + @State index: number = 0; + + build() { + Scroll(this.scroller) { + Column({ space: 8 }) { + Column() { + Text("This is a NodeContainer.") + .textAlign(TextAlign.Center) + .borderRadius(10) + .backgroundColor(0xFFFFFF) + .width('100%') + .fontSize(16) + NodeContainer(this.myNodeController) + .borderWidth(1) + .width(300) + .height(100) + } + + Button("getPositionToWindow") + .width(300) + .onClick(() => { + this.myNodeController.getPositionToWindow(); + }) + } + .width("100%") + } + .scrollable(ScrollDirection.Vertical) // 滚动方向纵向 + } +} + +``` + 请参考[节点操作示例](#节点操作示例)。 @@ -541,6 +602,68 @@ getPositionToParent(): Position **示例:** +```ts +import { NodeController, FrameNode, UIContext } from '@kit.ArkUI'; + +const TEST_TAG: string = "FrameNode "; + +class MyNodeController extends NodeController { + public frameNode: FrameNode | null = null; + private rootNode: FrameNode | null = null; + + makeNode(uiContext: UIContext): FrameNode | null { + this.rootNode = new FrameNode(uiContext); + + this.frameNode = new FrameNode(uiContext); + this.frameNode.commonAttribute.backgroundColor(Color.Pink); + this.frameNode.commonAttribute.size({ width: 100, height: 100 }); + this.rootNode.appendChild(this.frameNode); + return this.rootNode; + } + + getPositionToParent() { + let positionToParent = this.rootNode?.getPositionToParent(); + console.info(TEST_TAG + JSON.stringify(positionToParent)); + } +} + +@Entry +@Component +struct Index { + private myNodeController: MyNodeController = new MyNodeController(); + private scroller: Scroller = new Scroller(); + @State index: number = 0; + + build() { + Scroll(this.scroller) { + Column({ space: 8 }) { + Column() { + Text("This is a NodeContainer.") + .textAlign(TextAlign.Center) + .borderRadius(10) + .backgroundColor(0xFFFFFF) + .width('100%') + .fontSize(16) + NodeContainer(this.myNodeController) + .borderWidth(1) + .width(300) + .height(100) + } + + Button("getPositionToParent") + .width(300) + .onClick(() => { + this.myNodeController.getPositionToParent(); + }) + } + .width("100%") + } + .scrollable(ScrollDirection.Vertical) // 滚动方向纵向 + } +} + +``` + 请参考[节点操作示例](#节点操作示例)。 ### getPositionToScreen12+ @@ -561,6 +684,68 @@ getPositionToScreen(): Position **示例:** +```ts +import { NodeController, FrameNode, UIContext } from '@kit.ArkUI'; + +const TEST_TAG: string = "FrameNode "; + +class MyNodeController extends NodeController { + public frameNode: FrameNode | null = null; + private rootNode: FrameNode | null = null; + + makeNode(uiContext: UIContext): FrameNode | null { + this.rootNode = new FrameNode(uiContext); + + this.frameNode = new FrameNode(uiContext); + this.frameNode.commonAttribute.backgroundColor(Color.Pink); + this.frameNode.commonAttribute.size({ width: 100, height: 100 }); + this.rootNode.appendChild(this.frameNode); + return this.rootNode; + } + + getPositionToScreen() { + let positionToScreen = this.rootNode?.getPositionToScreen(); + console.info(TEST_TAG + JSON.stringify(positionToScreen)); + } +} + +@Entry +@Component +struct Index { + private myNodeController: MyNodeController = new MyNodeController(); + private scroller: Scroller = new Scroller(); + @State index: number = 0; + + build() { + Scroll(this.scroller) { + Column({ space: 8 }) { + Column() { + Text("This is a NodeContainer.") + .textAlign(TextAlign.Center) + .borderRadius(10) + .backgroundColor(0xFFFFFF) + .width('100%') + .fontSize(16) + NodeContainer(this.myNodeController) + .borderWidth(1) + .width(300) + .height(100) + } + + Button("getPositionToScreen") + .width(300) + .onClick(() => { + this.myNodeController.getPositionToScreen(); + }) + } + .width("100%") + } + .scrollable(ScrollDirection.Vertical) // 滚动方向纵向 + } +} + +``` + 请参考[节点操作示例](#节点操作示例)。 @@ -582,6 +767,67 @@ getPositionToParentWithTransform(): Position **示例:** +```ts +import { NodeController, FrameNode, UIContext } from '@kit.ArkUI'; + +const TEST_TAG: string = "FrameNode "; + +class MyNodeController extends NodeController { + public frameNode: FrameNode | null = null; + private rootNode: FrameNode | null = null; + + makeNode(uiContext: UIContext): FrameNode | null { + this.rootNode = new FrameNode(uiContext); + + this.frameNode = new FrameNode(uiContext); + this.frameNode.commonAttribute.backgroundColor(Color.Pink); + this.frameNode.commonAttribute.size({ width: 100, height: 100 }); + this.rootNode.appendChild(this.frameNode); + return this.rootNode; + } + + getPositionToParentWithTransform() { + let positionToParentWithTransform = this.rootNode?.getPositionToParentWithTransform(); + console.info(TEST_TAG + JSON.stringify(positionToParentWithTransform)); + } +} + +@Entry +@Component +struct Index { + private myNodeController: MyNodeController = new MyNodeController(); + private scroller: Scroller = new Scroller(); + @State index: number = 0; + + build() { + Scroll(this.scroller) { + Column({ space: 8 }) { + Column() { + Text("This is a NodeContainer.") + .textAlign(TextAlign.Center) + .borderRadius(10) + .backgroundColor(0xFFFFFF) + .width('100%') + .fontSize(16) + NodeContainer(this.myNodeController) + .borderWidth(1) + .width(300) + .height(100) + } + + Button("getPositionToParentWithTransform") + .width(300) + .onClick(() => { + this.myNodeController.getPositionToParentWithTransform(); + }) + } + .width("100%") + } + .scrollable(ScrollDirection.Vertical) // 滚动方向纵向 + } +} +``` + 请参考[节点操作示例](#节点操作示例)。 ### getPositionToWindowWithTransform12+ @@ -602,6 +848,66 @@ getPositionToWindowWithTransform(): Position **示例:** +```ts +import { NodeController, FrameNode, UIContext } from '@kit.ArkUI'; + +const TEST_TAG: string = "FrameNode "; + +class MyNodeController extends NodeController { + public frameNode: FrameNode | null = null; + private rootNode: FrameNode | null = null; + + makeNode(uiContext: UIContext): FrameNode | null { + this.rootNode = new FrameNode(uiContext); + + this.frameNode = new FrameNode(uiContext); + this.frameNode.commonAttribute.backgroundColor(Color.Pink); + this.frameNode.commonAttribute.size({ width: 100, height: 100 }); + this.rootNode.appendChild(this.frameNode); + return this.rootNode; + } + + getPositionToWindowWithTransform() { + let positionToWindowWithTransform = this.rootNode?.getPositionToWindowWithTransform(); + console.info(TEST_TAG + JSON.stringify(positionToWindowWithTransform)); + } +} + +@Entry +@Component +struct Index { + private myNodeController: MyNodeController = new MyNodeController(); + private scroller: Scroller = new Scroller(); + @State index: number = 0; + + build() { + Scroll(this.scroller) { + Column({ space: 8 }) { + Column() { + Text("This is a NodeContainer.") + .textAlign(TextAlign.Center) + .borderRadius(10) + .backgroundColor(0xFFFFFF) + .width('100%') + .fontSize(16) + NodeContainer(this.myNodeController) + .borderWidth(1) + .width(300) + .height(100) + } + Button("getPositionToWindowWithTransform") + .width(300) + .onClick(() => { + this.myNodeController.getPositionToWindowWithTransform(); + }) + } + .width("100%") + } + .scrollable(ScrollDirection.Vertical) // 滚动方向纵向 + } +} +``` + 请参考[节点操作示例](#节点操作示例)。 ### getPositionToScreenWithTransform12+ @@ -622,6 +928,67 @@ getPositionToScreenWithTransform(): Position **示例:** +```ts +import { NodeController, FrameNode, UIContext } from '@kit.ArkUI'; + +const TEST_TAG: string = "FrameNode "; + +class MyNodeController extends NodeController { + public frameNode: FrameNode | null = null; + private rootNode: FrameNode | null = null; + + makeNode(uiContext: UIContext): FrameNode | null { + this.rootNode = new FrameNode(uiContext); + + this.frameNode = new FrameNode(uiContext); + this.frameNode.commonAttribute.backgroundColor(Color.Pink); + this.frameNode.commonAttribute.size({ width: 100, height: 100 }); + this.rootNode.appendChild(this.frameNode); + return this.rootNode; + } + + getPositionToScreenWithTransform() { + let positionToScreenWithTransform = this.rootNode?.getPositionToScreenWithTransform(); + console.info(TEST_TAG + JSON.stringify(positionToScreenWithTransform)); + } +} + +@Entry +@Component +struct Index { + private myNodeController: MyNodeController = new MyNodeController(); + private scroller: Scroller = new Scroller(); + @State index: number = 0; + + build() { + Scroll(this.scroller) { + Column({ space: 8 }) { + Column() { + Text("This is a NodeContainer.") + .textAlign(TextAlign.Center) + .borderRadius(10) + .backgroundColor(0xFFFFFF) + .width('100%') + .fontSize(16) + NodeContainer(this.myNodeController) + .borderWidth(1) + .width(300) + .height(100) + } + + Button("getPositionToScreenWithTransform") + .width(300) + .onClick(() => { + this.myNodeController.getPositionToScreenWithTransform(); + }) + } + .width("100%") + } + .scrollable(ScrollDirection.Vertical) // 滚动方向纵向 + } +} +``` + 请参考[节点操作示例](#节点操作示例)。 diff --git a/zh-cn/application-dev/ui/arkts-user-defined-arktsNode-frameNode.md b/zh-cn/application-dev/ui/arkts-user-defined-arktsNode-frameNode.md index 381c6ff497795cacc77c1aa53b3cda5fca369015..8140a4bcd020df546fc9105c990c518c360cc34c 100644 --- a/zh-cn/application-dev/ui/arkts-user-defined-arktsNode-frameNode.md +++ b/zh-cn/application-dev/ui/arkts-user-defined-arktsNode-frameNode.md @@ -766,6 +766,10 @@ FrameNode提供了查询接口用于返回实体节点的基础信息。具体 FrameNode提供了查询节点相对窗口、父组件以及屏幕位置偏移的信息接口([getPositionToWindow](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontowindow12),[getPositionToParent](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontoparent12),[getPositionToScreen](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontoscreen12),[getPositionToWindowWithTransform](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontowindowwithtransform12),[getPositionToParentWithTransform](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontoparentwithtransform12),[getPositionToScreenWithTransform](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontoscreenwithtransform12),[getLayoutPosition](../reference/apis-arkui/js-apis-arkui-frameNode.md#getlayoutposition12),[getUserConfigBorderWidth](../reference/apis-arkui/js-apis-arkui-frameNode.md#getuserconfigborderwidth12),[getUserConfigPadding](../reference/apis-arkui/js-apis-arkui-frameNode.md#getuserconfigpadding12),[getUserConfigMargin](../reference/apis-arkui/js-apis-arkui-frameNode.md#getuserconfigmargin12))。 +[getPositionToWindow](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontowindow12),[getPositionToParent](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontoparent12),[getPositionToScreen](../reference/apis-arkui/js-apis-arkui-frameNode.md#getpositiontoscreen12)三个接口获取到的位置信息关系如下图所示: + +![FrameNode-Position-Relation](./figures/frameNode-position-relation.png) + ```ts import { NodeController, FrameNode, UIContext } from '@kit.ArkUI'; diff --git a/zh-cn/application-dev/ui/figures/frameNode-position-relation.png b/zh-cn/application-dev/ui/figures/frameNode-position-relation.png new file mode 100644 index 0000000000000000000000000000000000000000..484e56be7b9be9c39c309e33f774fb92def67f97 Binary files /dev/null and b/zh-cn/application-dev/ui/figures/frameNode-position-relation.png differ