public class

RectEvaluator

extends java.lang.Object

implements TypeEvaluator<Rect>

 java.lang.Object

↳androidx.core.animation.RectEvaluator

Gradle dependencies

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

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

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

Overview

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

Summary

Constructors
publicRectEvaluator()

Construct a RectEvaluator that returns a new Rect on every evaluate call.

publicRectEvaluator(Rect reuseRect)

Constructs a RectEvaluator that modifies and returns reuseRect in RectEvaluator calls.

Methods
public Rectevaluate(float fraction, Rect startValue, Rect endValue)

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

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

Constructors

public RectEvaluator()

Construct a RectEvaluator that returns a new Rect on every evaluate call. To avoid creating an object for each evaluate call, RectEvaluator should be used whenever possible.

public RectEvaluator(Rect reuseRect)

Constructs a RectEvaluator that modifies and returns reuseRect in RectEvaluator calls. The value returned from RectEvaluator should not be cached because it will change over time as the object is reused on each call.

Parameters:

reuseRect: A Rect to be modified and returned by evaluate.

Methods

public Rect evaluate(float fraction, Rect startValue, Rect endValue)

This function returns the result of linearly interpolating the start and end Rect values, with fraction representing the proportion between the start and end values. The calculation is a simple parametric calculation on each of the separate components in the Rect objects (left, top, right, and bottom).

If RectEvaluator was used to construct this RectEvaluator, the object returned will be the reuseRect passed into the constructor.

Parameters:

fraction: The fraction from the starting to the ending values
startValue: The start Rect
endValue: The end Rect

Returns:

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

Source

/*
 * Copyright (C) 2013 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.graphics.Rect;

import androidx.annotation.NonNull;

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

    /**
     * When null, a new Rect is returned on every evaluate call. When non-null,
     * mRect will be modified and returned on every evaluate.
     */
    private Rect mRect;

    /**
     * Construct a RectEvaluator that returns a new Rect on every evaluate call.
     * To avoid creating an object for each evaluate call,
     * {@link RectEvaluator#RectEvaluator(android.graphics.Rect)} should be used
     * whenever possible.
     */
    public RectEvaluator() {
    }

    /**
     * Constructs a RectEvaluator that modifies and returns <code>reuseRect</code>
     * in {@link #evaluate(float, android.graphics.Rect, android.graphics.Rect)} calls.
     * The value returned from
     * {@link #evaluate(float, android.graphics.Rect, android.graphics.Rect)} should
     * not be cached because it will change over time as the object is reused on each
     * call.
     *
     * @param reuseRect A Rect to be modified and returned by evaluate.
     */
    public RectEvaluator(@NonNull Rect reuseRect) {
        mRect = reuseRect;
    }

    /**
     * This function returns the result of linearly interpolating the start and
     * end Rect values, with <code>fraction</code> representing the proportion
     * between the start and end values. The calculation is a simple parametric
     * calculation on each of the separate components in the Rect objects
     * (left, top, right, and bottom).
     *
     * <p>If {@link #RectEvaluator(android.graphics.Rect)} was used to construct
     * this RectEvaluator, the object returned will be the <code>reuseRect</code>
     * passed into the constructor.</p>
     *
     * @param fraction   The fraction from the starting to the ending values
     * @param startValue The start Rect
     * @param endValue   The end Rect
     * @return A linear interpolation between the start and end values, given the
     *         <code>fraction</code> parameter.
     */
    @Override
    @NonNull
    public Rect evaluate(float fraction, @NonNull Rect startValue, @NonNull Rect endValue) {
        int left = startValue.left + (int) ((endValue.left - startValue.left) * fraction);
        int top = startValue.top + (int) ((endValue.top - startValue.top) * fraction);
        int right = startValue.right + (int) ((endValue.right - startValue.right) * fraction);
        int bottom = startValue.bottom + (int) ((endValue.bottom - startValue.bottom) * fraction);
        if (mRect == null) {
            return new Rect(left, top, right, bottom);
        } else {
            mRect.set(left, top, right, bottom);
            return mRect;
        }
    }
}