17a33db57c360aaabfa5c16dff109072925576b0bDoris Liu/*
27a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * Copyright (C) 2017 The Android Open Source Project
37a33db57c360aaabfa5c16dff109072925576b0bDoris Liu *
47a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * Licensed under the Apache License, Version 2.0 (the "License");
57a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * you may not use this file except in compliance with the License.
67a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * You may obtain a copy of the License at
77a33db57c360aaabfa5c16dff109072925576b0bDoris Liu *
87a33db57c360aaabfa5c16dff109072925576b0bDoris Liu *      http://www.apache.org/licenses/LICENSE-2.0
97a33db57c360aaabfa5c16dff109072925576b0bDoris Liu *
107a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * Unless required by applicable law or agreed to in writing, software
117a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * distributed under the License is distributed on an "AS IS" BASIS,
127a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * See the License for the specific language governing permissions and
147a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * limitations under the License.
157a33db57c360aaabfa5c16dff109072925576b0bDoris Liu */
167a33db57c360aaabfa5c16dff109072925576b0bDoris Liu
17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.dynamicanimation.animation;
187a33db57c360aaabfa5c16dff109072925576b0bDoris Liu
197a33db57c360aaabfa5c16dff109072925576b0bDoris Liu/**
207a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * <p>FloatValueHolder holds a float value. FloatValueHolder provides a setter and a getter (
217a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * i.e. {@link #setValue(float)} and {@link #getValue()}) to access this float value. Animations can
227a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * be performed on a FloatValueHolder instance. During each frame of the animation, the
237a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * FloatValueHolder will have its value updated via {@link #setValue(float)}. The caller can
247a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * obtain the up-to-date animation value via {@link FloatValueHolder#getValue()}.
257a33db57c360aaabfa5c16dff109072925576b0bDoris Liu *
267a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * <p> Here is an example for creating a {@link FlingAnimation} with a FloatValueHolder:
277a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * <pre class="prettyprint">
287a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * // Create a fling animation with an initial velocity of 5000 (pixel/s) and an initial position
297a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * // of 20f.
307a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * FloatValueHolder floatValueHolder = new FloatValueHolder(20f);
317a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * FlingAnimation anim = new FlingAnimation(floatValueHolder).setStartVelocity(5000);
327a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * anim.start();
337a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * </pre>
347a33db57c360aaabfa5c16dff109072925576b0bDoris Liu *
357a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * @see SpringAnimation#SpringAnimation(FloatValueHolder)
367a33db57c360aaabfa5c16dff109072925576b0bDoris Liu * @see FlingAnimation#FlingAnimation(FloatValueHolder)
377a33db57c360aaabfa5c16dff109072925576b0bDoris Liu */
387a33db57c360aaabfa5c16dff109072925576b0bDoris Liu
397a33db57c360aaabfa5c16dff109072925576b0bDoris Liupublic final class FloatValueHolder {
407a33db57c360aaabfa5c16dff109072925576b0bDoris Liu    private float mValue = 0.0f;
417a33db57c360aaabfa5c16dff109072925576b0bDoris Liu
427a33db57c360aaabfa5c16dff109072925576b0bDoris Liu    /**
437a33db57c360aaabfa5c16dff109072925576b0bDoris Liu     * Constructs a holder for a float value that is initialized to 0.
447a33db57c360aaabfa5c16dff109072925576b0bDoris Liu     */
457a33db57c360aaabfa5c16dff109072925576b0bDoris Liu    public FloatValueHolder() {
467a33db57c360aaabfa5c16dff109072925576b0bDoris Liu    }
477a33db57c360aaabfa5c16dff109072925576b0bDoris Liu
487a33db57c360aaabfa5c16dff109072925576b0bDoris Liu    /**
497a33db57c360aaabfa5c16dff109072925576b0bDoris Liu     * Constructs a holder for a float value that is initialized to the input value.
507a33db57c360aaabfa5c16dff109072925576b0bDoris Liu     *
517a33db57c360aaabfa5c16dff109072925576b0bDoris Liu     * @param value the value to initialize the value held in the FloatValueHolder
527a33db57c360aaabfa5c16dff109072925576b0bDoris Liu     */
537a33db57c360aaabfa5c16dff109072925576b0bDoris Liu    public FloatValueHolder(float value) {
547a33db57c360aaabfa5c16dff109072925576b0bDoris Liu        setValue(value);
557a33db57c360aaabfa5c16dff109072925576b0bDoris Liu    }
567a33db57c360aaabfa5c16dff109072925576b0bDoris Liu
577a33db57c360aaabfa5c16dff109072925576b0bDoris Liu    /**
587a33db57c360aaabfa5c16dff109072925576b0bDoris Liu     * Sets the value held in the FloatValueHolder instance.
597a33db57c360aaabfa5c16dff109072925576b0bDoris Liu     *
607a33db57c360aaabfa5c16dff109072925576b0bDoris Liu     * @param value float value held in the FloatValueHolder instance
617a33db57c360aaabfa5c16dff109072925576b0bDoris Liu     */
627a33db57c360aaabfa5c16dff109072925576b0bDoris Liu    public void setValue(float value) {
637a33db57c360aaabfa5c16dff109072925576b0bDoris Liu        mValue = value;
647a33db57c360aaabfa5c16dff109072925576b0bDoris Liu    }
657a33db57c360aaabfa5c16dff109072925576b0bDoris Liu
667a33db57c360aaabfa5c16dff109072925576b0bDoris Liu    /**
677a33db57c360aaabfa5c16dff109072925576b0bDoris Liu     * Returns the float value held in the FloatValueHolder instance.
687a33db57c360aaabfa5c16dff109072925576b0bDoris Liu     *
697a33db57c360aaabfa5c16dff109072925576b0bDoris Liu     * @return float value held in the FloatValueHolder instance
707a33db57c360aaabfa5c16dff109072925576b0bDoris Liu     */
717a33db57c360aaabfa5c16dff109072925576b0bDoris Liu    public float getValue() {
727a33db57c360aaabfa5c16dff109072925576b0bDoris Liu        return mValue;
737a33db57c360aaabfa5c16dff109072925576b0bDoris Liu    }
747a33db57c360aaabfa5c16dff109072925576b0bDoris Liu}
75