/** * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ package com.facebook.react.animation; import android.view.View; /** * Base class for {@link AnimationPropertyUpdater} subclasses that updates a single float property * value. It helps to handle convertion from animation progress to the actual value as well as the * quite common case when no starting value is provided. */ public abstract class AbstractSingleFloatProperyUpdater implements AnimationPropertyUpdater { private float mFromValue, mToValue; private boolean mFromSource; protected AbstractSingleFloatProperyUpdater(float toValue) { mToValue = toValue; mFromSource = true; } protected AbstractSingleFloatProperyUpdater(float fromValue, float toValue) { this(toValue); mFromValue = fromValue; mFromSource = false; } protected abstract float getProperty(View view); protected abstract void setProperty(View view, float propertyValue); @Override public final void prepare(View view) { if (mFromSource) { mFromValue = getProperty(view); } } @Override public final void onUpdate(View view, float progress) { setProperty(view, mFromValue + (mToValue - mFromValue) * progress); } @Override public void onFinish(View view) { setProperty(view, mToValue); } }