FileDocCategorySizeDatePackage
IntArrayEvaluator.javaAPI DocAndroid 5.1 API2984Thu Mar 12 22:22:08 GMT 2015android.animation

IntArrayEvaluator

public class IntArrayEvaluator extends Object implements TypeEvaluator
This evaluator can be used to perform type interpolation between int[] values. Each index into the array is treated as a separate value to interpolate. For example, evaluating {100, 200} and {300, 400} will interpolate the value at the first index between 100 and 300 and the value at the second index value between 200 and 400.

(Omit source code)

Fields Summary
private int[]
mArray
Constructors Summary
public IntArrayEvaluator()
Create an IntArrayEvaluator that does not reuse the animated value. Care must be taken when using this option because on every evaluation a new int[] will be allocated.

see
#IntArrayEvaluator(int[])

    
public IntArrayEvaluator(int[] reuseArray)
Create an IntArrayEvaluator that reuses reuseArray for every evaluate() call. Caution must be taken to ensure that the value returned from {@link android.animation.ValueAnimator#getAnimatedValue()} is not cached, modified, or used across threads. The value will be modified on each evaluate() call.

param
reuseArray The array to modify and return from evaluate.

        mArray = reuseArray;
    
Methods Summary
public int[]evaluate(float fraction, int[] startValue, int[] endValue)
Interpolates the value at each index by the fraction. If {@link #IntArrayEvaluator(int[])} was used to construct this object, reuseArray will be returned, otherwise a new int[] will be returned.

param
fraction The fraction from the starting to the ending values
param
startValue The start value.
param
endValue The end value.
return
An int[] where each element is an interpolation between the same index in startValue and endValue.

        int[] array = mArray;
        if (array == null) {
            array = new int[startValue.length];
        }
        for (int i = 0; i < array.length; i++) {
            int start = startValue[i];
            int end = endValue[i];
            array[i] = (int) (start + (fraction * (end - start)));
        }
        return array;