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