in app/src/main/java/com/amazonaws/ivs/player/ecommerce/ui/MainActivity.kt [184:225]
override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
if (event != null && isShowingStreams) {
when (event.action) {
MotionEvent.ACTION_DOWN -> {
if (binding.playerView.isTouched(event.x, event.y)) {
touchOffset = binding.playerView.getTouchOffset(event.x, event.y)
}
}
MotionEvent.ACTION_MOVE -> {
touchOffset?.let { offset ->
binding.playerView.x = event.x - offset.x
binding.playerView.y = event.y - offset.y
}
}
MotionEvent.ACTION_UP -> {
val eventDuration = event.eventTime - event.downTime
if (eventDuration <= CLICK_THRESHOLD || touchOffset == null) {
touchOffset = null
return super.dispatchTouchEvent(event)
}
val anchorPoint = binding.motionLayout.getAnchorPoint(PlayerParams(
event.x,
event.y,
binding.playerView.width,
binding.playerView.height
))
anchorType = anchorPoint.type
launchUI {
delay(50L)
binding.playerView.animate()
.x(anchorPoint.x)
.y(anchorPoint.y)
.setDuration(ANIMATION_DURATION)
.start()
touchOffset = null
updatePlayerState()
}
}
}
}
return super.dispatchTouchEvent(event)
}