code: @Nullable
      public Animator onAppear(@NonNull ViewGroup sceneRoot,
                               @Nullable TransitionValues startValues, int startVisibility,
                               @Nullable TransitionValues endValues, int endVisibility) {
          if ((mMode & MODE_IN) != MODE_IN || endValues == null) {
              return null;
          }
          if (startValues == null) {
              VisibilityInfo parentVisibilityInfo = null;
              View endParent = (View) endValues.view.getParent();
              TransitionValues startParentValues = getMatchedTransitionValues(endParent,
                      false);
              TransitionValues endParentValues = getTransitionValues(endParent, false);
              parentVisibilityInfo =
                      getVisibilityChangeInfo(startParentValues, endParentValues);
              if (parentVisibilityInfo.visibilityChange) {
                  return null;
              }
          }
          final boolean isForcedVisibility = mForcedStartVisibility != -1 ||
                  mForcedEndVisibility != -1;
          if (isForcedVisibility) {
              // Make sure that we reverse the effect of onDisappear's setTransitionAlpha(0)
              Object savedAlpha = endValues.view.getTag(R.id.transitionAlpha);
              if (savedAlpha instanceof Float) {
                  endValues.view.setAlpha((Float) savedAlpha);
                  endValues.view.setTag(R.id.transitionAlpha, null);
              }
          }
          return onAppear(sceneRoot, endValues.view, startValues, endValues);
      }
docs: The default implementation of this method calls
  {@link #onAppear(ViewGroup, View, TransitionValues, TransitionValues)}.
  Subclasses should override this method or
  {@link #onAppear(ViewGroup, View, TransitionValues, TransitionValues)}.
  if they need to create an Animator when targets appear.
  The method should only be called by the Visibility class; it is
  not intended to be called from external classes.
  
  @param sceneRoot The root of the transition hierarchy
  @param startValues The target values in the start scene
  @param startVisibility The target visibility in the start scene
  @param endValues The target values in the end scene
  @param endVisibility The target visibility in the end scene
  @return An Animator to be started at the appropriate time in the
  overall transition for this scene change. A null value means no animation
  should be run.