mover una vista dependiendo de la dirección del deslizamiento

Tengo un grupo de imageView que quiero mover según la dirección del deslizamiento, pero el problema aquí es que dejan de moverse después del primer deslizamiento hacia abajo, lo mismo para arriba y para la izquierda y la derecha.

aquí está mi código:

imageView.setOnTouchListener(object : OnSwipeTouchListener(this) { override fun onSwipeTop() { dis = distance(imageView) imageView.animate().translationY(-dis) } override fun onSwipeLeft() { dis = distance(imageView) imageView.animate().translationX(-dis) } override fun onSwipeRight() { dis = distance(imageView) imageView.animate().translationX(dis) } override fun onSwipeBottom() { dis = distance(imageView) imageView.animate().translationY(dis) } }) 

aquí está la implementación de la function de distancia ():

 fun distance(_view: ImageView): Float { when (resources.displayMetrics.density) { 0.75F -> return 60F 1F -> return 80F 1.5F -> return 120F 2F -> return 160F 3F -> return 240F 4F -> return 320F else -> return 0F } }