@Override
  protected void updateLayout(long time, long dt) {
    super.updateLayout(time, dt);
    if (mBaseTab == null) return;

    mBaseTab.setY(mSearchPanel.getBasePageY());
    mBaseTab.setBrightness(mSearchPanel.getBasePageBrightness());

    boolean needUpdate = mBaseTab.updateSnap(dt);
    if (needUpdate) requestUpdate();
  }
  /**
   * Updates the position, scale, rotation and alpha values of mAnimatedTab.
   *
   * @param discard The value that specify how far along are we in the discard animation. 0 is
   *     filling the screen. Valid values are [-range .. range] where range is computed by {@link
   *     SimpleAnimationLayout#getDiscardRange()}.
   */
  private void setDiscardAmount(float discard) {
    if (mAnimatedTab != null) {
      final float range = getDiscardRange();
      final float scale = Stack.computeDiscardScale(discard, range, true);

      final float deltaX = mAnimatedTab.getOriginalContentWidth();
      final float deltaY = mAnimatedTab.getOriginalContentHeight() / 2.f;
      mAnimatedTab.setX(deltaX * (1.f - scale));
      mAnimatedTab.setY(deltaY * (1.f - scale));
      mAnimatedTab.setScale(scale);
      mAnimatedTab.setBorderScale(scale);
      mAnimatedTab.setAlpha(Stack.computeDiscardAlpha(discard, range));
    }
  }