private void onScrollChanged()

in app/src/main/java/com/google/reviewit/widget/ScrollWithHeadingsView.java [187:238]


  private void onScrollChanged(
      Content content, final Content prevContent, final Content nextContent) {
    final View contentView = content.getContent();
    final Heading heading = content.getHeading();
    final Heading prevHeading =
        prevContent != null
            ? prevContent.getHeading()
            : null;
    final Heading nextHeading =
        nextContent != null
            ? nextContent.getHeading()
            : null;
    if (scroll.getScrollY() >= contentView.getTop()) {
      int scrollYRelativeToContentView =
          scroll.getScrollY() - contentView.getTop();
      if (scrollYRelativeToContentView < heading.getSquishableHeight()) {
        fixHeadingAtTop(heading, scrollYRelativeToContentView);
      } else {
        if (nextHeading != null
            && nextHeading.getView().getTranslationY() > 0) {
          // the position of nextHeading is only updated after this
          // onScrollChanged callback, but we need its correct position
          // now, hence update its position now
          nextHeading.getView().setTranslationY(
              nextContent.getContent().getTop() - scroll.getScrollY());
        }
        if ((nextHeading != null
            && nextHeading.getView().getTranslationY() <= 0)
            || (prevHeading != null
                && prevHeading.getView().getTranslationY() >= 0)) {
          heading.squish(heading.getSquishableHeight());
          heading.getView().setTranslationY(
              contentView.getTop() - scroll.getScrollY());
        } else {
          fixHeadingAtTop(heading, heading.getSquishableHeight());
        }
      }
    } else {
      heading.squish(0);
      heading.getView().setTranslationY(
          contentView.getTop() - scroll.getScrollY());

      if (prevHeading != null) {
        if (prevHeading.getView().getHeight()
            > heading.getView().getTranslationY()) {
          prevHeading.getView().setTranslationY(
              heading.getView().getTranslationY()
                  - prevHeading.getView().getHeight());
        }
      }
    }
  }