手勢事件作用域 awaitPointerEventScope
手勢事件作用域 awaitPointerEventScope
我們前面介紹的 GestureDetector 系列 API 本質(zhì)上仍然是一種封裝,既然手勢處理是在協(xié)程中完成的,所以手勢監(jiān)聽必然是通過協(xié)程的掛起恢復(fù)實現(xiàn)的,以取代傳統(tǒng)的回調(diào)監(jiān)聽方式。 要想深入理解 Compose 手勢處理,就需要學(xué)習(xí)更為底層的手勢處理掛起方法。\n\n在 PointerInputScope 中我們使用 awaitPointerEventScope 方法獲得 AwaitPointerEventScope 作用域,在 AwaitPointerEventScope 作用域中我們可以使用 Compose 中所有低級別的手勢處理掛起方法。 當(dāng) awaitPointerEventScope 內(nèi)所有手勢事件都處理完成后 awaitPointerEventScope 便會恢復(fù)執(zhí)行將 Lambda 中最后一行表達(dá)式的數(shù)值作為返回值返回。
suspend fun
??block: suspend AwaitPointerEventScope.() -> R
): R
我們在 AwaitPointerEventScope 中發(fā)現(xiàn)了以下這些基礎(chǔ)手勢方法,可以發(fā)現(xiàn)這些 API 均是掛起函數(shù) awaitPointerEvent\t手勢事件 awaitFirstDown\t第一根手指的按下事件 drag\t拖動事件 horizontalDrag\t水平拖動事件 verticalDrag\t垂直拖動事件 awaitDragOrCancellation\t單次拖動事件 awaitHorizontalDragOrCancellation\t單次水平拖動事件 awaitVerticalDragOrCancellation\t單次垂直拖動事件 awaitTouchSlopOrCancellation\t有效拖動事件 awaitHorizontalTouchSlopOrCancellation\t有效水平拖動事件 awaitVerticalTouchSlopOrCancellation\t有效垂直拖動事件