docs: public final void smoothScrollBy(int dx, int dy) {
          long duration = AnimationUtils.currentAnimationTimeMillis() - mLastScroll;
          if (duration > ANIMATED_SCROLL_GAP) {
              mScroller.startScroll(getScrollX(), getScrollY(), dx, dy);
              awakenScrollBars(mScroller.getDuration());
              invalidate();
          } else {
              if (!mScroller.isFinished()) {
                  mScroller.abortAnimation();
              }
              scrollBy(dx, dy);
          }
          mLastScroll = AnimationUtils.currentAnimationTimeMillis();
      }