좋아, 그것을 해결했다. 글리치 발생에 대해 이야기했을 때 onTouch
나는 실수를했습니다. 내 RecyclerView
로 번역을 설정,하지만 난 때문에 또한 getX()
에 의해 반환 된 좌표 일관성 터치에 야생 결함의 원인이 대신 MotionEvent.getRawX()
의 MotionEvent.getX()
을 사용
recyclerView.canScrollVertically (1);
Sarthak Gandhi가 도와주었습니다. 이 시점 currentDy.invoke(dy)
에서
override fun onTouch(p0: View?, p1: MotionEvent): Boolean {
if (p1.action == MotionEvent.ACTION_UP && dragging) {
dragging = false
mInitailPoint = null
currentDy.invoke(0F)
return true
}
if (p1.action == MotionEvent.ACTION_DOWN || p1.action == MotionEvent.ACTION_MOVE) {
if (!dragging && !recyclerView.canScrollVertically(1)) {
mInitailPoint = Point(p1.rawX.toInt(), p1.rawY.toInt())
mCurrentPoint = Point(p1.rawX.toInt(), p1.rawY.toInt())
dragging = true
return true
} else if (dragging && p1.action == MotionEvent.ACTION_MOVE) {
mCurrentPoint = Point(p1.rawX.toInt(), p1.rawY.toInt())
val dy = mCurrentPoint!!.y.toFloat() - mInitailPoint!!.y.toFloat()
if (dy < 0) {
currentDy.invoke(dy)
} else {
currentDy.invoke(0F)
dragging = false
return false
}
return true
}
}
return false
}
실제로이 부싯깃 물건을 달성하기 위해 전체 코드가 아니며 날뛰는 애니메이션이 없지만,이 부분은 어떤 문제에 관한 것입니다 물론 RecyclerView
에 번역을 설정합니다. 이야기의
도덕적 : 당신이 번역 할 뷰에 대한 OnTouchListener
을 설정하는 경우 - 번역을
한 문제를 계산하는 원시 좌표를 사용하여 onScroll이 목록의 마지막에 도달 한 후 호출됩니다하지 않습니다. 그래서 내가 얼마나 많은 시각을 옮겨야하는지 모르겠다. – Alpha