эффект отскока при перетаскивании не работает в Android - PullRequest
0 голосов
/ 23 мая 2019

У меня есть просмотрщик, который прокручивает по горизонтали. Я отключил прокрутку в окне реселлера, когда пользователь нажимает на элемент. Теперь, если пользователь попытается прокрутить список при его блокировке, я хочу показать эффект отказов, который он / она не сможет прокрутить дальше.

Например:

У меня есть список из 10 элементов, и пользователь щелкнул 5-й элемент. Теперь прокрутка заблокирована, и когда пользователь пытается прокрутить, я хочу показать эффект отскока, который пользователь не может прокрутить.

Моя работа по отключению прокрутки:

Я использую приведенный ниже метод для блокировки прокрутки:

class RecyclerViewDisabler(isEnable: Boolean = true) : RecyclerView.OnItemTouchListener {

  var isEnable = true

  init {
    this.isEnable = isEnable
  }

  override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
    return if(!isEnable){
      rv.scrollState == RecyclerView.SCROLL_STATE_DRAGGING
    }else{
      false
    }
  }

  override fun onTouchEvent(rv: RecyclerView, e: MotionEvent) {}

  override fun onRequestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {}
}

Моя попытка создать эффект отскока:

override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
    x = rv.x.toInt()
    y = rv.y.toInt()
    return if(!isEnable){
      if(rv.scrollState == RecyclerView.SCROLL_STATE_DRAGGING){
        rv.smoothScrollBy((x + 1000), y) //Bounce front
      }else{
        rv.smoothScrollBy(x, y) //Bounce back
      }
      rv.scrollState == RecyclerView.SCROLL_STATE_DRAGGING
    }else{
      false
    }
  }

Но это не работает. Как мне этого добиться?

...