public class

IntEvaluator

extends java.lang.Object

implements TypeEvaluator<java.lang.Integer>

 java.lang.Object

↳androidx.core.animation.IntEvaluator

Gradle dependencies

compile group: 'androidx.core', name: 'core-animation', version: '1.0.0'

  • groupId: androidx.core
  • artifactId: core-animation
  • version: 1.0.0

Artifact androidx.core:core-animation:1.0.0 it located at Google repository (https://maven.google.com/)

Overview

This evaluator can be used to perform type interpolation between int values.

Summary

Methods
public java.lang.Integerevaluate(float fraction, java.lang.Integer startValue, java.lang.Integer endValue)

This function returns the result of linearly interpolating the start and end values, with fraction representing the proportion between the start and end values.

public static IntEvaluatorgetInstance()

Returns an instance of IntEvaluator that may be used in ValueAnimator.setEvaluator(TypeEvaluator).

from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Methods

public static IntEvaluator getInstance()

Returns an instance of IntEvaluator that may be used in ValueAnimator.setEvaluator(TypeEvaluator). The same instance may be used in multiple Animators because it holds no state.

Returns:

An instance of IntEvaluator.

public java.lang.Integer evaluate(float fraction, java.lang.Integer startValue, java.lang.Integer endValue)

This function returns the result of linearly interpolating the start and end values, with fraction representing the proportion between the start and end values. The calculation is a simple parametric calculation: result = x0 + t * (x1 - x0), where x0 is startValue, x1 is endValue, and t is fraction.

Parameters:

fraction: The fraction from the starting to the ending values
startValue: The start value; should be of type int or Integer
endValue: The end value; should be of type int or Integer

Returns:

A linear interpolation between the start and end values, given the fraction parameter.

Source

/*
 * Copyright 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package androidx.core.animation;

import android.annotation.SuppressLint;

import androidx.annotation.NonNull;

/**
 * This evaluator can be used to perform type interpolation between <code>int</code> values.
 */
public class IntEvaluator implements TypeEvaluator<Integer> {

    private static final IntEvaluator sInstance = new IntEvaluator();

    /**
     * Returns an instance of <code>IntEvaluator</code> that may be used in
     * {@link ValueAnimator#setEvaluator(TypeEvaluator)}. The same instance may
     * be used in multiple <code>Animator</code>s because it holds no state.
     * @return An instance of <code>IntEvaluator</code>.
     */
    @NonNull
    public static IntEvaluator getInstance() {
        return sInstance;
    }

    private IntEvaluator() {
    }

    /**
     * This function returns the result of linearly interpolating the start and end values, with
     * <code>fraction</code> representing the proportion between the start and end values. The
     * calculation is a simple parametric calculation: <code>result = x0 + t * (x1 - x0)</code>,
     * where <code>x0</code> is <code>startValue</code>, <code>x1</code> is <code>endValue</code>,
     * and <code>t</code> is <code>fraction</code>.
     *
     * @param fraction   The fraction from the starting to the ending values
     * @param startValue The start value; should be of type <code>int</code> or
     *                   <code>Integer</code>
     * @param endValue   The end value; should be of type <code>int</code> or <code>Integer</code>
     * @return A linear interpolation between the start and end values, given the
     *         <code>fraction</code> parameter.
     */
    @SuppressLint("AutoBoxing") /* Generics */
    @Override
    @NonNull
    public Integer evaluate(
            float fraction,
            @SuppressLint("AutoBoxing") @NonNull Integer startValue,
            @SuppressLint("AutoBoxing") @NonNull Integer endValue
    ) {
        int startInt = startValue;
        return (int) (startInt + fraction * (endValue - startInt));
    }
}