0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙ArkTS聲明式開發(fā):跨平臺支持列表【組件標(biāo)識】 通用屬性

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-06-06 15:51 ? 次閱讀

組件標(biāo)識

id為組件的唯一標(biāo)識,在整個應(yīng)用內(nèi)唯一。本模塊提供組件標(biāo)識相關(guān)接口,可以獲取指定id組件的屬性,也提供向指定id組件發(fā)送事件的功能。

說明:
開發(fā)前請熟悉鴻蒙開發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
從API Version 8開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標(biāo)單獨標(biāo)記該內(nèi)容的起始版本。

屬性

名稱參數(shù)說明描述
idstring組件的唯一標(biāo)識,唯一性由使用者保證。 默認(rèn)值:'' 從API version 9開始,該接口支持在ArkTS卡片中使用。

接口

getInspectorByKey9+

getInspectorByKey(id: string): string

獲取指定id的組件的所有屬性,不包括子組件信息。

此接口僅用于對應(yīng)用的測試。

參數(shù):

參數(shù)類型必填描述
idstring要獲取屬性的組件id。

返回值:

類型描述
string組件屬性列表的JSON字符串。

getInspectorTree9+

getInspectorTree(): Object

獲取組件樹及組件屬性。

此接口僅用于對應(yīng)用的測試。

返回值:

類型描述
Object組件樹及組件屬性列表的JSON對象。

sendEventByKey9+

sendEventByKey(id: string, action: number, params: string): boolean

給指定id的組件發(fā)送事件。

此接口僅用于對應(yīng)用的測試。

參數(shù):

參數(shù)類型必填描述
idstring要觸發(fā)事件的組件的id。
actionnumber要觸發(fā)的事件類型,目前支持取值: - 點擊事件Click: 10 - 長按事件LongClick: 11。
paramsstring事件參數(shù),無參數(shù)傳空字符串 ""。

返回值:

類型描述
boolean找不到指定id的組件時返回false,其余情況返回true。

sendTouchEvent9+

sendTouchEvent(event: TouchObject): boolean

發(fā)送觸摸事件。

此接口僅用于對應(yīng)用的測試。

參數(shù):

參數(shù)類型必填描述
event[TouchObject]觸發(fā)觸摸事件的位置,event參數(shù)見[TouchEvent]中TouchObject的介紹。

返回值:

類型描述
boolean事件發(fā)送失敗時返回false,其余情況返回true。

sendKeyEvent9+

sendKeyEvent(event: KeyEvent): boolean

發(fā)送按鍵事件。

此接口僅用于對應(yīng)用的測試。

參數(shù):

參數(shù)類型必填描述
event[KeyEvent]按鍵事件,event參數(shù)見[KeyEvent]介紹。

返回值:

類型描述
boolean事件發(fā)送失敗時時返回false,其余情況返回true。

sendMouseEvent9+

sendMouseEvent(event: MouseEvent): boolean

發(fā)送鼠標(biāo)事件。

此接口僅用于對應(yīng)用的測試。

參數(shù):

參數(shù)類型必填描述
event[MouseEvent]鼠標(biāo)事件,event參數(shù)見[MouseEvent]介紹。

返回值:

類型描述HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
boolean事件發(fā)送失敗時返回false,其余情況返回true。
新文檔.png

示例

// xxx.ets
class Utils {
  static rect_left
  static rect_top
  static rect_right
  static rect_bottom
  static rect_value

  //獲取組件所占矩形區(qū)域坐標(biāo)
  static getComponentRect(key) {
    let strJson = getInspectorByKey(key)
    let obj = JSON.parse(strJson)
    console.info("[getInspectorByKey] current component obj is: " + JSON.stringify(obj))
    let rectInfo = JSON.parse('[' + obj.$rect + ']')
    console.info("[getInspectorByKey] rectInfo is: " + rectInfo)
    this.rect_left = JSON.parse('[' + rectInfo[0] + ']')[0]
    this.rect_top = JSON.parse('[' + rectInfo[0] + ']')[1]
    this.rect_right = JSON.parse('[' + rectInfo[1] + ']')[0]
    this.rect_bottom = JSON.parse('[' + rectInfo[1] + ']')[1]
    return this.rect_value = {
      "left": this.rect_left, "top": this.rect_top, "right": this.rect_right, "bottom": this.rect_bottom
    }
  }
}

@Entry
@Component
struct IdExample {
  @State text: string = ''

  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {

      Button() {
        Text('onKeyTab').fontSize(25).fontWeight(FontWeight.Bold)
      }.margin({ top: 20 }).backgroundColor('#0D9FFB')
      .onKeyEvent(() = > {
        this.text = "onKeyTab"
      })

      Button() {
        Text('click to start').fontSize(25).fontWeight(FontWeight.Bold)
      }.margin({ top: 20 })
      .onClick(() = > {
        console.info(getInspectorByKey("click"))
        console.info(JSON.stringify(getInspectorTree()))
        this.text = "Button 'click to start' is clicked"
        setTimeout(() = > {
          sendEventByKey("longClick", 11, "") // 向id為"longClick"的組件發(fā)送長按事件
        }, 2000)
      }).id('click')

      Button() {
        Text('longClick').fontSize(25).fontWeight(FontWeight.Bold)
      }.margin({ top: 20 }).backgroundColor('#0D9FFB')
      .gesture(
      LongPressGesture().onActionEnd(() = > {
        console.info('long clicked')
        this.text = "Button 'longClick' is longclicked"
        setTimeout(() = > {
          let rect = Utils.getComponentRect('onTouch') // 獲取id為"onTouch"組件的矩形區(qū)域坐標(biāo)
          let touchPoint: TouchObject = {
            id: 1,
            x: rect.left + (rect.right - rect.left) / 2, // 組件中心點x坐標(biāo)
            y: rect.top + (rect.bottom - rect.top) / 2, // 組件中心點y坐標(biāo)
            type: TouchType.Down,
            screenX: rect.left + (rect.right - rect.left) / 2, // 組件中心點x坐標(biāo)
            screenY: rect.left + (rect.right - rect.left) / 2, // 組件中心點y坐標(biāo)
          }
          sendTouchEvent(touchPoint) // 發(fā)送觸摸事件
          touchPoint.type = TouchType.Up
          sendTouchEvent(touchPoint) // 發(fā)送觸摸事件
        }, 2000)
      })).id('longClick')

      Button() {
        Text('onTouch').fontSize(25).fontWeight(FontWeight.Bold)
      }.type(ButtonType.Capsule).margin({ top: 20 })
      .onClick(() = > {
        console.info('onTouch is clicked')
        this.text = "Button 'onTouch' is clicked"
        setTimeout(() = > {
          let rect = Utils.getComponentRect('onMouse') // 獲取id為"onMouse"組件的矩形區(qū)域坐標(biāo)
          let mouseEvent: MouseEvent = {
            button: MouseButton.Left,
            action: MouseAction.Press,
            x: rect.left + (rect.right - rect.left) / 2, // 組件中心點x坐標(biāo)
            y: rect.top + (rect.bottom - rect.top) / 2, // 組件中心點y坐標(biāo)
            screenX: rect.left + (rect.right - rect.left) / 2, // 組件中心點x坐標(biāo)
            screenY: rect.top + (rect.bottom - rect.top) / 2, // 組件中心點y坐標(biāo)
            timestamp: 1,
            target: {
              area: {
                width: 1,
                height: 1,
                position: {
                  x: 1,
                  y: 1
                },
                globalPosition: {
                  x: 1,
                  y: 1
                }
              }
            },
            source: SourceType.Mouse,
            pressure: 1,
            tiltX: 1,
            tiltY: 1,
            sourceTool: SourceTool.Unknown
          }
          sendMouseEvent(mouseEvent) // 發(fā)送鼠標(biāo)事件
        }, 2000)
      }).id('onTouch')

      Button() {
        Text('onMouse').fontSize(25).fontWeight(FontWeight.Bold)
      }.margin({ top: 20 }).backgroundColor('#0D9FFB')
      .onMouse(() = > {
        console.info('onMouse')
        this.text = "Button 'onMouse' in onMouse"
        setTimeout(() = > {
          let keyEvent: KeyEvent = {
            type: KeyType.Down,
            keyCode: 2049,
            keyText: 'tab',
            keySource: 4,
            deviceId: 0,
            metaKey: 0,
            timestamp: 0
          }
          sendKeyEvent(keyEvent) // 發(fā)送按鍵事件
        }, 2000)
      }).id('onMouse')

      Text(this.text).fontSize(25).padding(15)
    }
    .width('100%').height('100%')
  }
}

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 組件
    +關(guān)注

    關(guān)注

    1

    文章

    515

    瀏覽量

    17865
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2382

    瀏覽量

    42941
收藏 人收藏

    評論

    相關(guān)推薦

    鴻蒙ArkTS聲明開發(fā)平臺支持列表【安全區(qū)域】

    通過expandSafeArea屬性支持組件擴(kuò)展其安全區(qū)域。
    的頭像 發(fā)表于 06-13 22:20 ?557次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>聲明</b><b class='flag-5'>式</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>跨</b><b class='flag-5'>平臺</b><b class='flag-5'>支持</b><b class='flag-5'>列表</b>【安全區(qū)域】

    鴻蒙ArkTS聲明開發(fā)平臺支持列表【文本通用

    文本通用屬性目前只針對包含文本元素的組件,設(shè)置文本樣式。
    的頭像 發(fā)表于 06-13 15:09 ?516次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>聲明</b><b class='flag-5'>式</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>跨</b><b class='flag-5'>平臺</b><b class='flag-5'>支持</b><b class='flag-5'>列表</b>【文本<b class='flag-5'>通用</b>】

    鴻蒙ArkTS聲明開發(fā)平臺支持列表【觸摸熱區(qū)設(shè)置】觸摸交互控制

    適用于支持通用點擊事件、通用觸摸事件、通用手勢處理的組件。
    的頭像 發(fā)表于 06-13 10:33 ?487次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>聲明</b><b class='flag-5'>式</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>跨</b><b class='flag-5'>平臺</b><b class='flag-5'>支持</b><b class='flag-5'>列表</b>【觸摸熱區(qū)設(shè)置】觸摸交互控制

    鴻蒙ArkTS聲明開發(fā)平臺支持列表【無障礙屬性通用屬性

    組件可以設(shè)置相應(yīng)的無障礙屬性和事件來更好地使用無障礙能力。
    的頭像 發(fā)表于 06-11 17:30 ?424次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>聲明</b><b class='flag-5'>式</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>跨</b><b class='flag-5'>平臺</b><b class='flag-5'>支持</b><b class='flag-5'>列表</b>【無障礙<b class='flag-5'>屬性</b>】 <b class='flag-5'>通用</b><b class='flag-5'>屬性</b>

    鴻蒙ArkTS聲明開發(fā)平臺支持列表組件內(nèi)容模糊】 通用屬性

    為當(dāng)前組件提供內(nèi)容模糊能力。 value: 內(nèi)容模糊樣式。模糊樣式由模糊半徑、蒙版顏色、蒙版透明度、飽和度、亮度五個參數(shù)組成。 options: 可選參數(shù),內(nèi)容模糊選項。
    的頭像 發(fā)表于 06-10 18:32 ?670次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>聲明</b><b class='flag-5'>式</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>跨</b><b class='flag-5'>平臺</b><b class='flag-5'>支持</b><b class='flag-5'>列表</b>【<b class='flag-5'>組件</b>內(nèi)容模糊】 <b class='flag-5'>通用</b><b class='flag-5'>屬性</b>

    鴻蒙ArkTS聲明開發(fā)平臺支持列表【分布遷移標(biāo)識通用屬性

    組件的分布遷移標(biāo)識,指明了該組件在分布遷移場景下可以將特定狀態(tài)恢復(fù)到對端設(shè)備。
    的頭像 發(fā)表于 06-07 21:15 ?421次閱讀

    鴻蒙ArkTS聲明開發(fā)平臺支持列表【多態(tài)樣式】 通用屬性

    設(shè)置組件不同狀態(tài)的樣式。 從API version 9開始,該接口支持ArkTS卡片中使用。
    的頭像 發(fā)表于 06-07 09:48 ?439次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>聲明</b><b class='flag-5'>式</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>跨</b><b class='flag-5'>平臺</b><b class='flag-5'>支持</b><b class='flag-5'>列表</b>【多態(tài)樣式】 <b class='flag-5'>通用</b><b class='flag-5'>屬性</b>

    鴻蒙ArkTS聲明開發(fā)平臺支持列表【菜單控制】 通用屬性

    組件綁定彈出菜單,彈出菜單以垂直列表形式顯示菜單項,可通過長按、點擊或鼠標(biāo)右鍵觸發(fā)。
    的頭像 發(fā)表于 06-06 09:17 ?725次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>聲明</b><b class='flag-5'>式</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>跨</b><b class='flag-5'>平臺</b><b class='flag-5'>支持</b><b class='flag-5'>列表</b>【菜單控制】 <b class='flag-5'>通用</b><b class='flag-5'>屬性</b>

    鴻蒙ArkTS聲明開發(fā)平臺支持列表【柵格設(shè)置】 通用屬性

    默認(rèn)占用列數(shù),指useSizeType屬性沒有設(shè)置對應(yīng)尺寸的列數(shù)(span)時,占用的柵格列數(shù)。
    的頭像 發(fā)表于 06-05 09:28 ?422次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>聲明</b><b class='flag-5'>式</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>跨</b><b class='flag-5'>平臺</b><b class='flag-5'>支持</b><b class='flag-5'>列表</b>【柵格設(shè)置】 <b class='flag-5'>通用</b><b class='flag-5'>屬性</b>

    鴻蒙ArkTS聲明開發(fā)平臺支持列表【顏色漸變】 通用屬性

    設(shè)置組件的顏色漸變效果。
    的頭像 發(fā)表于 06-05 09:17 ?726次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>聲明</b><b class='flag-5'>式</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>跨</b><b class='flag-5'>平臺</b><b class='flag-5'>支持</b><b class='flag-5'>列表</b>【顏色漸變】 <b class='flag-5'>通用</b><b class='flag-5'>屬性</b>

    鴻蒙ArkTS聲明開發(fā)平臺支持列表【形狀裁剪】 通用屬性

    參數(shù)為相應(yīng)類型的組件,按指定的形狀對當(dāng)前組件進(jìn)行裁剪;參數(shù)為boolean類型時,設(shè)置是否按照父容器邊緣輪廓進(jìn)行裁剪。 默認(rèn)值:false 從API version 9開始,該接口支持Ark
    的頭像 發(fā)表于 06-04 15:22 ?494次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>聲明</b><b class='flag-5'>式</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>跨</b><b class='flag-5'>平臺</b><b class='flag-5'>支持</b><b class='flag-5'>列表</b>【形狀裁剪】 <b class='flag-5'>通用</b><b class='flag-5'>屬性</b>

    鴻蒙ArkTS聲明開發(fā)平臺支持列表【顯隱控制】 通用屬性

    控制當(dāng)前組件顯示或隱藏。注意,即使組件處于隱藏狀態(tài),在頁面刷新時仍存在重新創(chuàng)建過程,因此當(dāng)對性能有嚴(yán)格要求時建議使用[條件渲染]代替。 默認(rèn)值:Visibility.Visible 從API version 9開始,該接口支持
    的頭像 發(fā)表于 06-03 14:46 ?627次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>聲明</b><b class='flag-5'>式</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>跨</b><b class='flag-5'>平臺</b><b class='flag-5'>支持</b><b class='flag-5'>列表</b>【顯隱控制】 <b class='flag-5'>通用</b><b class='flag-5'>屬性</b>

    鴻蒙ArkTS聲明開發(fā)平臺支持列表【Flex布局】 通用屬性

    從API Version 7開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標(biāo)單獨標(biāo)記該內(nèi)容的起始版本。 > - 僅當(dāng)父組件是 Flex、Column、Row 、GridRow時生效。
    的頭像 發(fā)表于 05-30 14:38 ?635次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>聲明</b><b class='flag-5'>式</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>跨</b><b class='flag-5'>平臺</b><b class='flag-5'>支持</b><b class='flag-5'>列表</b>【Flex布局】 <b class='flag-5'>通用</b><b class='flag-5'>屬性</b>

    鴻蒙ArkTS聲明開發(fā)平臺支持列表【布局約束】 通用屬性

    通過組件的寬高比和顯示優(yōu)先級約束組件顯示效果。
    的頭像 發(fā)表于 05-30 09:35 ?382次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>聲明</b><b class='flag-5'>式</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>跨</b><b class='flag-5'>平臺</b><b class='flag-5'>支持</b><b class='flag-5'>列表</b>【布局約束】 <b class='flag-5'>通用</b><b class='flag-5'>屬性</b>

    鴻蒙ArkTS聲明開發(fā)平臺支持列表【按鍵事件】

    按鍵事件指組件與鍵盤、遙控器等按鍵設(shè)備交互時觸發(fā)的事件,適用于所有可獲焦組件,例如Button。對于Text,Image等默認(rèn)不可獲焦的組件,可以設(shè)置focusable屬性為true后
    的頭像 發(fā)表于 05-28 18:12 ?899次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>聲明</b><b class='flag-5'>式</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>跨</b><b class='flag-5'>平臺</b><b class='flag-5'>支持</b><b class='flag-5'>列表</b>【按鍵事件】