專家
ViewTreeWatcher
定義於 fuchsia.ui.observation.幾何圖形/watcher.fidl
取得特定檢視畫面、「內容檢視」及其子項檢視畫面 (如果有的話) 的資料檢視樹狀結構快照的方法。傳回的資料是在觀察期間的快照序列,從用戶端 Watch() 呼叫之前的 epoch_end (或 zx.Time 0) 開始,直到目前的 epoch_end 結束。時間長度為 ZX_CLOCK_MONOTONIC。
用戶端通常會在測試中取得 ViewTreeWatcher
能力,而且通常無法在測試環境之外取得。詳情請參閱 fuchsia.ui.observation.test.Registry
和 fuchsia.ui.test.scene.Controller
。
使用情形附註。透過這個通訊協定,用戶端可監控其具備授權的檢視畫面樹狀結構是否有變更。舉例來說,如果用戶端擁有檢視畫面 A,則 A 會做為 A 子樹狀結構 (即「根層級檢視畫面」) 的結構定義檢視畫面,其中 A 是檢視畫面 B 的父項,而 B 是檢視畫面 C 的父項。然後,用戶端可以透過可靠且符合人體工學的方式,觀察所有 A、B 和 C 中的重要生命週期事件,例如新連結的檢視畫面、檢視位置和大小的變更等。如此一來,用戶端就能以可靠且符合人體工學的方式,控管對檢視區塊樹狀結構所做的變更動作。例如,用戶端可以等子檢視畫面 C 連線後,再要求將焦點轉移到 C。
設定:結構定義檢視畫面不在這個通訊協定範圍內。
頻率:用戶端可以在每個影格接收一或多個快照。用戶端不應「計算快照」,因為每個影格的快照數量可能並不固定。用戶端應改為尋找快照狀態的特定條件。
核發:如果結構定義檢視畫面與螢幕中斷連線,系統不會代表內容檢視畫面發出影格,而且 Watch() 呼叫會安靜靜止不動。
生命週期:在結構定義檢視畫面失敗時,伺服器端點會關閉。
觀看
取得特定檢視表檢視表樹狀結構快照的方法。
此呼叫以「等待取得」模式進行,用戶端會要求一組最近的快照,並透過回呼接收這些快照。這個提取式方法可確保用戶端能夠按自己的步調處理事件;事件不會以不受限的方式記錄管道。
處理錯誤。如未設定「Error」,用戶端可能會假設回應會包含在週期內具有完整資訊的更新內容。
流量控制呼叫端一次最多允許在通話中 |觀看| 呼叫;而同時呼叫 |Watch| 則是一種邏輯錯誤。違反規定會導致管道關閉。
用戶端放送速度:伺服器會盡可能以無損的方式將快照分派給呼叫端,但呼叫端必須分配足夠的時間才能跟上新的快照。
要求
<EMPTY>
回應
名稱 | 類型 |
---|---|
payload |
WatchResponse
|
結構
AlignedExtent
定義於 fuchsia.ui.observation.幾何圖形/watcher.fidl
檢視畫面的定界框,如檢視畫面的座標系統所述。具體而言,|AlignedExtent| 描述檢視區塊定界框的最小和最大點,矩形與軸對齊。
注意:如要說明檢視畫面的定界框與其他檢視畫面的座標系統,請參閱 |RotatableExtent|。
來源的最小值。 大小為:(abs(max.x - min.x)、abs(max.y - min.y)。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
min |
fuchsia.math/PointF
|
檢視邊框的最小位置。 |
無預設 |
max |
fuchsia.math/PointF
|
檢視定界框的最大位置。 |
無預設 |
版面配置
定義於 fuchsia.ui.observation.幾何圖形/watcher.fidl
檢視畫面的幾何圖形資料。
請注意,這些是伺服器端值,而部分圖形 API 在這些值「生效」時,並未保證 UI 用戶端之間的一致性。也就是說,您可能需要直接查詢 UI 用戶端,瞭解其目前使用的值。不過,UI 用戶端應該會在幾個影格內「立即」使用這些值。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
extent |
AlignedExtent
|
檢視畫面定界框的最小和最大點 (位於該檢視畫面的座標系統中)。 |
無預設 |
pixel_scale |
PixelScale
|
從螢幕的實際像素 (螢幕) 到邏輯像素 (檢視畫面的座標系統) 的轉換比率。 |
無預設 |
inset |
fuchsia.math/InsetF
|
檢視畫面定界框的偏移資料位於該檢視畫面的座標系統中。 |
無預設 |
RotatableExtent
定義於 fuchsia.ui.observation.幾何圖形/watcher.fidl
檢視畫面定界框,如另一個檢視畫面的座標系統所述。具體而言,|RotatableExtent| 會說明檢視畫面的定界框的起點、大小和旋轉角度。
注意:如要說明檢視畫面的座標系統中的定界框,請參閱 |AlignedExtent|。
我們會使用「V」參照所描述的檢視畫面,「W」則代表描述 V 的檢視畫面。
請注意,雖然 |angle| 可以是任意值,但一般用途是採用軸對齊。以順時針順序找出 V 的定界框,以 W 為單位,以 |origin|.、hx、ox、o、o、o、o、o、w、o、o、o、o、o、o、o、o、o、o、o、o、o、o、o、o、o、o、為讀、重寫拼功能或重寫功能就是難度一次,那麼使用 o=origin、w=width、h=height、o.y)、(o.x + wo.y)、
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
origin |
fuchsia.math/PointF
|
V 定界框的起點,位於 W 座標系統中。 |
無預設 |
width |
float32
|
V 定界框的寬度 (以及 V x 軸增加的方向) 在 W 座標系統中。 |
無預設 |
height |
float32
|
V 定界框的高度 (與 V 軸 y 軸上升的方向) 在 W 座標系統中。 |
無預設 |
angle_degrees |
float32
|
以度為單位的順時針旋轉原點。 |
無預設 |
資料表
ViewDescriptor
定義於 fuchsia.ui.observation.幾何圖形/watcher.fidl
特定檢視畫面的資料:ID、位置和子項。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
view_ref_koid |
zx/Koid
|
這個檢視畫面的 fuchsia.ui.views.ViewRef 目錄。 |
2 |
layout |
Layout
|
此檢視畫面的起點、邏輯大小、像素比例和插邊資料 (位於檢視畫面自己的座標系統中)。 限制。伺服器和用戶端之間的資料一致性取決於特定的圖形 API。部分 API 提供弱式一致性,在某些情況下,伺服器端資料 (這項資料) 和用戶端資料 (在檢視畫面的 UI 用戶端中) 可以有一段時間的落差。 |
3 |
extent_in_context |
RotatableExtent
|
此檢視畫面的程度 (在內容檢視畫面的座標系統中)。但「不會」描述子項檢視畫面的邏輯大小。 這說明此檢視畫面在內容檢視畫面中的「實際」位置,不受檢視區塊樹狀結構深度或中繼檢視畫面的特定版面配置狀態影響。 限制。未說明檢視畫面是否「可見」(例如檢視區塊已套用不透明度,或未由其他檢視區塊遮蔽),而且「不會」描述檢視區塊是否「可命中」(例如檢視畫面是否完全放置在每個祖系檢視畫面的定界框中)。 |
4 |
extent_in_parent |
RotatableExtent
|
父項檢視畫面座標系統內佔用的空間。但「不會」描述子項檢視畫面的邏輯大小。 |
5 |
children |
vector<uint32>[300]
|
子檢視畫面的清單,依圖形 API 已知的順序排列。 這個向量中的每個整數都代表父項在 | 檢視區塊| 或 |incomplete| 向量中的子項位置。 每個子檢視畫面的身分、位置和大小。位置和大小由父項檢視畫面座標系統中子項檢視畫面的範圍描述。 檢視表樹狀結構拓撲可靠,在這裡放置的子項,相當於父項檢視區塊接收「已連接子檢視」信號。 限制。父項檢視畫面的座標系統中描述了子項的檢視邊界,這有低一致性的低強度 (視圖形 API 而定)。也就是說,當父項檢視畫面的大小或指標發生變化時,上層檢視畫面會納入這些資料,因此背景檢視畫面可能會觀測到「跳躍」。在這種情況下,系統會發出新的 ViewTreeSnapshot,以描述相對於情境檢視畫面的位置變更。 |
ViewTreeSnapshot
定義於 fuchsia.ui.observation.幾何圖形/watcher.fidl
結構定義檢視畫面及其子系檢視畫面的說明 (如果有的話)。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
time |
zx/Time
|
拍攝快照的時間。時間基群為單調時間。 |
2 |
views |
vector<ViewDescriptor>[300]
|
結構定義檢視畫面 (位於元素 0) 及其子系檢視畫面的完整清單。 如果超過 |
WatchResponse
定義於 fuchsia.ui.observation.幾何圖形/watcher.fidl
對 fuchsia.ui.observation.幾何圖形.ViewTreeWatcher.Watch 的回應。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
epoch_end |
zx/Time
|
傳送回應時。時間基群為單調時間。 |
2 |
updates |
vector<ViewTreeSnapshot>[200]
|
特定檢視畫面的最新更新清單。 |
3 |
error |
Error
|
只有在偵測到錯誤狀況時才設定。如未設定,用戶端可能會假設更新在週期內具備完整資訊。 |
節拍
錯誤彈性
類型:uint32
定義位置:fuchsia.ui.observation.幾何圖形/watcher.fidl
名稱 | 值 | 說明 |
---|---|---|
CHANNEL_OVERFLOW |
1 | 在 |
BUFFER_OVERFLOW |
2 | 在 |
VIEWS_OVERFLOW |
4 | 如果 |
場景
名稱 | 值 | 類型 | 說明 |
---|---|---|---|
BUFFER_SIZE |
200
|
uint32 |
用戶端在 基於 FIDL 管道的大小限制,可納入 注意:修改 |
MAX_VIEW_COUNT |
300
|
uint32 |
用戶端在 基於 FIDL 管道的大小限制,可納入 注意:修改 |
別名
名稱 | 值 | 說明 |
---|---|---|
PixelScale |
array [2 ] |
從螢幕的實體像素 (顯示器) 與檢視畫面座標系統邏輯像素 (座標系統) 之間的比率。
|