Home | History | Annotate | Download | only in transition
      1 /*
      2  * Copyright (C) 2016 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.support.transition;
     18 
     19 import android.animation.Animator;
     20 import android.view.ViewGroup;
     21 
     22 class VisibilityKitKat extends TransitionKitKat implements VisibilityImpl {
     23 
     24     @Override
     25     public void init(TransitionInterface external, Object internal) {
     26         mExternalTransition = external;
     27         if (internal == null) {
     28             mTransition = new VisibilityWrapper((VisibilityInterface) external);
     29         } else {
     30             mTransition = (android.transition.Visibility) internal;
     31         }
     32     }
     33 
     34     @Override
     35     public boolean isVisible(TransitionValues values) {
     36         return ((android.transition.Visibility) mTransition).isVisible(convertToPlatform(values));
     37     }
     38 
     39     @Override
     40     public Animator onAppear(ViewGroup sceneRoot, TransitionValues startValues, int startVisibility,
     41             TransitionValues endValues, int endVisibility) {
     42         return ((android.transition.Visibility) mTransition).onAppear(sceneRoot,
     43                 convertToPlatform(startValues), startVisibility,
     44                 convertToPlatform(endValues), endVisibility);
     45     }
     46 
     47     @Override
     48     public Animator onDisappear(ViewGroup sceneRoot, TransitionValues startValues,
     49             int startVisibility, TransitionValues endValues, int endVisibility) {
     50         return ((android.transition.Visibility) mTransition).onDisappear(sceneRoot,
     51                 convertToPlatform(startValues), startVisibility,
     52                 convertToPlatform(endValues), endVisibility);
     53     }
     54 
     55     private static class VisibilityWrapper extends android.transition.Visibility {
     56 
     57         private final VisibilityInterface mVisibility;
     58 
     59         VisibilityWrapper(VisibilityInterface visibility) {
     60             mVisibility = visibility;
     61         }
     62 
     63         @Override
     64         public void captureStartValues(android.transition.TransitionValues transitionValues) {
     65             wrapCaptureStartValues(mVisibility, transitionValues);
     66         }
     67 
     68         @Override
     69         public void captureEndValues(android.transition.TransitionValues transitionValues) {
     70             wrapCaptureEndValues(mVisibility, transitionValues);
     71         }
     72 
     73         @Override
     74         public Animator createAnimator(ViewGroup sceneRoot,
     75                 android.transition.TransitionValues startValues,
     76                 android.transition.TransitionValues endValues) {
     77             return mVisibility.createAnimator(sceneRoot, convertToSupport(startValues),
     78                     convertToSupport(endValues));
     79         }
     80 
     81         @Override
     82         public boolean isVisible(android.transition.TransitionValues values) {
     83             if (values == null) {
     84                 return false;
     85             }
     86             TransitionValues externalValues = new TransitionValues();
     87             copyValues(values, externalValues);
     88             return mVisibility.isVisible(externalValues);
     89         }
     90 
     91         @Override
     92         public Animator onAppear(ViewGroup sceneRoot,
     93                 android.transition.TransitionValues startValues, int startVisibility,
     94                 android.transition.TransitionValues endValues, int endVisibility) {
     95             return mVisibility.onAppear(sceneRoot, convertToSupport(startValues), startVisibility,
     96                     convertToSupport(endValues), endVisibility);
     97         }
     98 
     99         @Override
    100         public Animator onDisappear(ViewGroup sceneRoot,
    101                 android.transition.TransitionValues startValues, int startVisibility,
    102                 android.transition.TransitionValues endValues, int endVisibility) {
    103             return mVisibility.onDisappear(sceneRoot, convertToSupport(startValues),
    104                     startVisibility,
    105                     convertToSupport(endValues), endVisibility);
    106         }
    107 
    108     }
    109 
    110 }
    111