自定义RecyclerView LayoutManager不会(顺利)

Mar*_*kus 5 android scroll smooth-scrolling android-layout android-recyclerview

我正在开发一个看起来像这样的应用程序:

在此输入图像描述

RecyclerView使用自定义LayoutManager,其自定义实现为"scrollVerticallyBy"

首先.recyclerview滚动黄油平滑并且以低于所需的16毫秒的方式呈现.我想我可以在Nexus 5上大约5毫秒.

但是,我还希望能够滚动RecyclerView触摸它上方的View(它是RelativeLayout).

这是问题所在:

1)如果我只是转发onTouchEvents,滚动是黄油平滑的.但是,只有在手指触摸屏幕时,才会调用RecyclerView.fling(...)并且只能滚动.没有投掷感觉非常尴尬.

@Override
     public boolean onTouchEvent(MotionEvent event) {
    return mRecyclerView.onTouchEvent(event);
}
Run Code Online (Sandbox Code Playgroud)

2)如果我在RecyclerView中覆盖.fling(...),我可以使用Scroller进行"投掷"工作.这有效,但确实会导致一些奇怪的大滞后.

@Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    if (mScroller.computeScrollOffset()) {
        Log.d("RecyclerView", "(ondraw) Y: " + mScroller.getCurrY());
        scrollBy(0, mScroller.getCurrY()- mLastY);
        mLastY = mScroller.getCurrY();
        postInvalidateDelayed(16); // 60 Hz
    }
}


@Override
public boolean fling(int velocityX, int velocityY) {
    mLastY = 0;
    mScroller.fling(0, 0, velocityX, velocityY, 0, 0, -10000 ,10000);
    return true;
} 
Run Code Online (Sandbox Code Playgroud)

我不确定这样做的正确方法是什么.我觉得如果我没有覆盖.fling()并强制我的应用程序通过使用Scroller重复调用scrollBy()滚动工作方式不同.

我怀疑这可能与"startSmoothScroll"和"smoothScrollToPosition"有关,我还没有覆盖.老实说,我不知道smoothscrolling是什么,但这听起来与这个问题有关:)