id為組件的唯一標識,在整個應用內(nèi)唯一。本模塊提供組件標識相關接口,可以獲取指定id組件的屬性,也提供向指定id組件發(fā)送事件的功能。
說明:
從API Version 8開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標單獨標記該內(nèi)容的起始版本。
屬性
名稱 | 參數(shù)說明 | 描述 |
---|---|---|
id | string | 組件的唯一標識,唯一性由使用者保證。 默認值:'' 從API version 9開始,該接口支持在ArkTS卡片中使用。 |
接口
getInspectorByKey9+
getInspectorByKey(id: string): string
獲取指定id的組件的所有屬性,不包括子組件信息。
此接口僅用于對應用的測試。由于耗時長,不建議使用。
參數(shù):
參數(shù) | 類型 | 必填 | 描述 |
---|---|---|---|
id | string | 是 | 要獲取屬性的組件id。 |
返回值:
類型 | 描述 |
---|---|
string | 組件屬性列表的JSON字符串。 說明: 字符串信息包含組件的tag、id、位置信息(相對于窗口左上角的坐標)以及用于測試檢查的組件所包含的相關屬性信息。 |
getInspectorTree9+
getInspectorTree(): Object
獲取組件樹及組件屬性。
此接口僅用于對應用的測試。由于耗時長,不建議使用。
返回值:
類型 | 描述 |
---|---|
Object | 組件樹及組件屬性列表的JSON對象。 |
sendEventByKey9+
sendEventByKey(id: string, action: number, params: string): boolean
給指定id的組件發(fā)送事件。
此接口僅用于對應用的測試。由于耗時長,不建議使用。
參數(shù):
參數(shù) | 類型 | 必填 | 描述 |
---|---|---|---|
id | string | 是 | 要觸發(fā)事件的組件的id。 |
action | number | 是 | 要觸發(fā)的事件類型,目前支持取值: -?點擊事件Click:?10 -?長按事件LongClick:?11。 |
params | string | 是 | 事件參數(shù),無參數(shù)傳空字符串?""。 |
返回值:
類型 | 描述 |
---|---|
boolean | 找不到指定id的組件時返回false,其余情況返回true。 |
sendTouchEvent9+
sendTouchEvent(event: TouchObject): boolean
發(fā)送觸摸事件。
此接口僅用于對應用的測試。由于耗時長,不建議使用。
參數(shù):
參數(shù) | 類型 | 必填 | 描述 |
---|---|---|---|
event | TouchObject | 是 | 觸發(fā)觸摸事件的位置,event參數(shù)見TouchEvent中TouchObject的介紹。 |
返回值:
類型 | 描述 |
---|---|
boolean | 事件發(fā)送失敗時返回false,其余情況返回true。 |
sendKeyEvent9+
sendKeyEvent(event: KeyEvent): boolean
發(fā)送按鍵事件。
此接口僅用于對應用的測試。由于耗時長,不建議使用。
參數(shù):
參數(shù) | 類型 | 必填 | 描述 |
---|---|---|---|
event | KeyEvent | 是 | 按鍵事件,event參數(shù)見KeyEvent介紹。 |
返回值:
類型 | 描述 |
---|---|
boolean | 事件發(fā)送失敗時時返回false,其余情況返回true。 |
sendMouseEvent9+
sendMouseEvent(event: MouseEvent): boolean
發(fā)送鼠標事件。
此接口僅用于對應用的測試。由于耗時長,不建議使用。
參數(shù):
參數(shù) | 類型 | 必填 | 描述 |
---|---|---|---|
event | MouseEvent | 是 | 鼠標事件,event參數(shù)見MouseEvent介紹。 |
返回值:
類型 | 描述 |
---|---|
boolean | 事件發(fā)送失敗時返回false,其余情況返回true。 |
示例
// xxx.ets
import { IntentionCode } from '@ohos.multimodalInput.intentionCode'
class Utils {
static rect_left: number
static rect_top: number
static rect_right: number
static rect_bottom: number
static rect_value: Record<string, number>
//獲取組件所占矩形區(qū)域坐標
static getComponentRect(key:string):Record<string, number> {
let strJson = getInspectorByKey(key)
let obj:Record<string, string> = JSON.parse(strJson)
console.info("[getInspectorByKey] current component obj is: " + JSON.stringify(obj))
let rectInfo:string[] = JSON.parse('[' + obj.$rect + ']')
console.info("[getInspectorByKey] rectInfo is: " + rectInfo)
Utils.rect_left = JSON.parse('[' + rectInfo[0] + ']')[0]
Utils.rect_top = JSON.parse('[' + rectInfo[0] + ']')[1]
Utils.rect_right = JSON.parse('[' + rectInfo[1] + ']')[0]
Utils.rect_bottom = JSON.parse('[' + rectInfo[1] + ']')[1]
return Utils.rect_value = {
"left": Utils.rect_left, "top": Utils.rect_top, "right": Utils.rect_right, "bottom": Utils.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ū)域坐標
let touchPoint: TouchObject = {
id: 1,
type: TouchType.Down,
x: rect.left + (rect.right - rect.left) / 2, // 相對于組件左上角的水平方向坐標
y: rect.top + (rect.bottom - rect.top) / 2, // 相對于組件左上角的垂直方向坐標
screenX: rect.left + (rect.right - rect.left) / 2, // 相對于應用窗口左上角的水平方向坐標,API10已廢棄,采用windowX替代
screenY: rect.left + (rect.right - rect.left) / 2, // 相對于應用窗口左上角的垂直方向坐標,API10已廢棄,采用windowY替代
windowX: rect.left + (rect.right - rect.left) / 2, // 相對于應用窗口左上角的水平方向坐標
windowY: rect.left + (rect.right - rect.left) / 2, // 相對于應用窗口左上角的垂直方向坐標
displayX: rect.left + (rect.right - rect.left) / 2, // 相對于設備屏幕左上角的水平方向坐標
displayY: rect.left + (rect.right - rect.left) / 2, // 相對于設備屏幕左上角的垂直方向坐標
}
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ū)域坐標
let mouseEvent: MouseEvent = {
button: MouseButton.Left,
action: MouseAction.Press,
x: rect.left + (rect.right - rect.left) / 2, // 相對于組件左上角的水平方向坐標
y: rect.top + (rect.bottom - rect.top) / 2, // 相對于組件左上角的垂直方向坐標
screenX: rect.left + (rect.right - rect.left) / 2, // 相對于應用窗口左上角的水平方向坐標,API10已廢棄,采用windowX替代
screenY: rect.left + (rect.right - rect.left) / 2, // 相對于應用窗口左上角的垂直方向坐標,API10已廢棄,采用windowY替代
windowX: rect.left + (rect.right - rect.left) / 2, // 相對于應用窗口左上角的水平方向坐標
windowY: rect.left + (rect.right - rect.left) / 2, // 相對于應用窗口左上角的垂直方向坐標
displayX: rect.left + (rect.right - rect.left) / 2, // 相對于設備屏幕左上角的水平方向坐標
displayY: rect.left + (rect.right - rect.left) / 2, // 相對于設備屏幕左上角的垂直方向坐標
stopPropagation: () => {
},
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ā)送鼠標事件
}, 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,
stopPropagation: () => {
},
intentionCode: IntentionCode.INTENTION_DOWN
}
sendKeyEvent(keyEvent) // 發(fā)送按鍵事件
}, 2000)
}).id('onMouse')
Text(this.text).fontSize(25).padding(15)
}
.width('100%').height('100%')
}
}
最后,有很多小伙伴不知道學習哪些鴻蒙開發(fā)技術?不知道需要重點掌握哪些鴻蒙應用開發(fā)知識點?而且學習時頻繁踩坑,最終浪費大量時間。所以有一份實用的鴻蒙(Harmony NEXT)資料用來跟著學習是非常有必要的。?
這份鴻蒙(Harmony NEXT)資料包含了鴻蒙開發(fā)必掌握的核心知識要點,內(nèi)容包含了(ArkTS、ArkUI開發(fā)組件、Stage模型、多端部署、分布式應用開發(fā)、音頻、視頻、WebGL、OpenHarmony多媒體技術、Napi組件、OpenHarmony內(nèi)核、Harmony南向開發(fā)、鴻蒙項目實戰(zhàn)等等)鴻蒙(Harmony NEXT)技術知識點。
希望這一份鴻蒙學習資料能夠給大家?guī)韼椭?,有需要的小伙伴自行領取,限時開源,先到先得~無套路領?。?!
?獲取這份完整版高清學習路線,請點擊→純血版全套鴻蒙HarmonyOS學習資料
鴻蒙(Harmony NEXT)最新學習路線
-
?HarmonOS基礎技能
-
HarmonOS就業(yè)必備技能?
- ?HarmonOS多媒體技術
- 鴻蒙NaPi組件進階
- HarmonOS高級技能
-
初識HarmonOS內(nèi)核?
- 實戰(zhàn)就業(yè)級設備開發(fā)
有了路線圖,怎么能沒有學習資料呢,小編也準備了一份聯(lián)合鴻蒙官方發(fā)布筆記整理收納的一套系統(tǒng)性的鴻蒙(OpenHarmony )學習手冊(共計1236頁)與鴻蒙(OpenHarmony )開發(fā)入門教學視頻,內(nèi)容包含:ArkTS、ArkUI、Web開發(fā)、應用模型、資源分類…等知識點。
獲取以上完整版高清學習路線,請點擊→純血版全套鴻蒙HarmonyOS學習資料
《鴻蒙 (OpenHarmony)開發(fā)入門教學視頻》
《鴻蒙生態(tài)應用開發(fā)V2.0白皮書》
《鴻蒙 (OpenHarmony)開發(fā)基礎到實戰(zhàn)手冊》
OpenHarmony北向、南向開發(fā)環(huán)境搭建
?《鴻蒙開發(fā)基礎》
- ArkTS語言
- 安裝DevEco Studio
- 運用你的第一個ArkTS應用
- ArkUI聲明式UI開發(fā)
- .……
?《鴻蒙開發(fā)進階》
- Stage模型入門
- 網(wǎng)絡管理
- 數(shù)據(jù)管理
- 電話服務
- 分布式應用開發(fā)
- 通知與窗口管理
- 多媒體技術
- 安全技能
- 任務管理
- WebGL
- 國際化開發(fā)
- 應用測試
- DFX面向未來設計
- 鴻蒙系統(tǒng)移植和裁剪定制
- ……
《鴻蒙進階實戰(zhàn)》
- ArkTS實踐
- UIAbility應用
- 網(wǎng)絡案例
- ……
?獲取以上完整鴻蒙HarmonyOS學習資料,請點擊→純血版全套鴻蒙HarmonyOS學習資料
總結
總的來說,華為鴻蒙不再兼容安卓,對中年程序員來說是一個挑戰(zhàn),也是一個機會。只有積極應對變化,不斷學習和提升自己,他們才能在這個變革的時代中立于不敗之地。?文章來源:http://www.zghlxwxcb.cn/news/detail-855592.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-855592.html
到了這里,關于鴻蒙Harmony應用開發(fā)—ArkTS聲明式開發(fā)(通用屬性:組件標識)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!