IWindowManager.TransferTouchGesture 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將目前進行中的觸控手勢從 transferFromToken 轉移到 transferToToken。
[Android.Runtime.Register("transferTouchGesture", "(Landroid/window/InputTransferToken;Landroid/window/InputTransferToken;)Z", "GetTransferTouchGesture_Landroid_window_InputTransferToken_Landroid_window_InputTransferToken_Handler:Android.Views.IWindowManager, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", ApiSince=35)]
public virtual bool TransferTouchGesture(Android.Window.InputTransferToken transferFromToken, Android.Window.InputTransferToken transferToToken);
[<Android.Runtime.Register("transferTouchGesture", "(Landroid/window/InputTransferToken;Landroid/window/InputTransferToken;)Z", "GetTransferTouchGesture_Landroid_window_InputTransferToken_Landroid_window_InputTransferToken_Handler:Android.Views.IWindowManager, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", ApiSince=35)>]
abstract member TransferTouchGesture : Android.Window.InputTransferToken * Android.Window.InputTransferToken -> bool
override this.TransferTouchGesture : Android.Window.InputTransferToken * Android.Window.InputTransferToken -> bool
參數
- transferFromToken
- InputTransferToken
目前啟用的手勢的 InputTransferToken
- transferToToken
- InputTransferToken
將手勢傳送到 InputTransferToken 上。
傳回
觸控串流是否被傳輸。
- 屬性
備註
將目前進行中的觸控手勢從 transferFromToken 轉移到 transferToToken。
<br> 這需要 fromToken 與 toToken 彼此關聯。 關聯方式可依嵌入視窗的建立方式而有所不同。
<ul><li> 創造並SurfaceControlViewHost傳遞主機的InputTransferToken。SurfaceControlViewHost#SurfaceControlViewHost(Context, Display, InputTransferToken)
</li><li> 註冊 SurfaceControl 輸入並將主機的標記傳遞給 #registerBatchedSurfaceControlInputReceiver(InputTransferToken, SurfaceControl, Choreographer, SurfaceControlInputReceiver) 或 #registerUnbatchedSurfaceControlInputReceiver(InputTransferToken, SurfaceControl, Looper, SurfaceControlInputReceiver)。
</li></ul>
主機通常是 , AttachedSurfaceControl 因此宿主權杖可透過 AttachedSurfaceControl#getInputTransferToken()取得。
<br> 當主機想要將觸控手勢傳送給嵌入者時,可以透過 SurfaceControlViewHost.SurfacePackage#getInputTransferToken() 或 取回嵌入的標記,或使用其中一#registerBatchedSurfaceControlInputReceiver(InputTransferToken, SurfaceControl, Choreographer, SurfaceControlInputReceiver)#registerUnbatchedSurfaceControlInputReceiver(InputTransferToken, SurfaceControl, Looper, SurfaceControlInputReceiver)單位回傳的值,並將自己的標記作為 transferFromToken。
當嵌入式想要將觸控手勢傳送給主機時,它可以將自己的令牌作為 transferFromToken 傳遞,並使用對應主機 InputTransferToken 的 TransferToToken 作為
<br> 當觸控轉移時,目前接收觸控的視窗會獲得ACTION_CANCEL,且不會再接收此手勢的輸入事件。
轉移到視窗接收一個ACTION_DOWN事件,接著接收該手勢的其餘輸入事件。 它不會接收起始視窗所接收到的任何先前動作事件。
transferTouchGesture API 只支援目前的手勢。 當有新的手勢到達時,輸入調度器會進行新一輪的命中測試。 所以,如果主機視窗仍然是第一個被觸碰的物件,那麼它會再次收到新的手勢。 這個新手勢再次由主持人負責傳遞給嵌入者。
<br> 呼叫可能因以下原因而失敗: <ul><li> 呼叫者嘗試從沒有主動手勢的標記轉移觸碰手勢。
</li><li> 手勢會轉移到一個與 transferFromToken 無關聯的標記上。 例如,若呼叫者透過 轉接至 SurfaceControlViewHost 未連接主機視窗 SurfaceView#setChildSurfacePackage(SurfacePackage)的 。
</li><li> 主動動作在轉移完成前就已完成,例如短暫的曖昧。
</li></ul>
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。