Android Open Source - example Cubic Bezier Interpolator






From Project

Back to project page example.

License

The source code is released under:

Apache License

If you think the Android project example listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package me.pratama.examplematerial.interpolator;
//  ww  w  .jav a 2 s .  c  om
import android.graphics.PointF;
import android.view.animation.Interpolator;

/**
 * Derived from: https://github.com/rdallasgray/bez
 */
public class CubicBezierInterpolator implements Interpolator {

    protected PointF start;
    protected PointF end;
    protected PointF a = new PointF();
    protected PointF b = new PointF();
    protected PointF c = new PointF();

    public CubicBezierInterpolator(PointF start, PointF end) throws IllegalArgumentException {
        if (start.x < 0 || start.x > 1) {
            throw new IllegalArgumentException("startX value must be in the range [0, 1]");
        }
        if (end.x < 0 || end.x > 1) {
            throw new IllegalArgumentException("endX value must be in the range [0, 1]");
        }
        this.start = start;
        this.end = end;
    }

    public CubicBezierInterpolator(float startX, float startY, float endX, float endY) {
        this(new PointF(startX, startY), new PointF(endX, endY));
    }

    public CubicBezierInterpolator(double startX, double startY, double endX, double endY) {
        this((float) startX, (float) startY, (float) endX, (float) endY);
    }

    @Override
    public float getInterpolation(float time) {
        return getBezierCoordinateY(getXForTime(time));
    }

    protected float getBezierCoordinateY(float time) {
        c.y = 3 * start.y;
        b.y = 3 * (end.y - start.y) - c.y;
        a.y = 1 - c.y - b.y;
        return time * (c.y + time * (b.y + time * a.y));
    }

    protected float getXForTime(float time) {
        float x = time;
        float z;
        for (int i = 1; i < 14; i++) {
            z = getBezierCoordinateX(x) - time;
            if (Math.abs(z) < 1e-3) {
                break;
            }
            x -= z / getXDerivate(x);
        }
        return x;
    }

    private float getXDerivate(float t) {
        return c.x + t * (2 * b.x + 3 * a.x * t);
    }

    private float getBezierCoordinateX(float time) {
        c.x = 3 * start.x;
        b.x = 3 * (end.x - start.x) - c.x;
        a.x = 1 - c.x - b.x;
        return time * (c.x + time * (b.x + time * a.x));
    }
}




Java Source Code List

com.pratamawijaya.example_gson.ApplicationTest.java
com.pratamawijaya.example_gson.MainActivity.java
com.pratamawijaya.examplebuildflavor.ApplicationTest.java
com.pratamawijaya.examplebuildflavor.MainActivity.java
com.pratamawijaya.exampledynamicedittext.ApplicationTest.java
com.pratamawijaya.exampledynamicedittext.MainActivity.java
com.pratamawijaya.examplefragment.ApplicationTest.java
com.pratamawijaya.examplefragment.MyActivity.java
com.pratamawijaya.examplefragment.MyFragment.java
com.pratamawijaya.examplefusedlocation.ApplicationTest.java
com.pratamawijaya.examplefusedlocation.MainActivity.java
com.pratamawijaya.exampleinstagram.ApplicationTest.java
com.pratamawijaya.exampleinstagram.BaseActivity.java
com.pratamawijaya.exampleinstagram.BaseApplication.java
com.pratamawijaya.exampleinstagram.MainActivity.java
com.pratamawijaya.exampleinstagram.authentication.InstagramApp.java
com.pratamawijaya.exampleinstagram.authentication.InstagramWebviewAuthActivity.java
com.pratamawijaya.examplepallete.ApplicationTest.java
com.pratamawijaya.examplepallete.MainActivity.java
com.pratamawijaya.examplepallete.adapter.CoverAdapter.java
com.pratamawijaya.examplepallete.model.CoverItem.java
com.pratamawijaya.exampleparse.ApplicationTest.java
com.pratamawijaya.exampleparse.BaseApplication.java
com.pratamawijaya.exampleparse.MainActivity.java
com.pratamawijaya.examplerealmio.ApplicationTest.java
com.pratamawijaya.examplerealmio.InsertDataActivity.java
com.pratamawijaya.examplerealmio.MainActivity.java
com.pratamawijaya.examplerealmio.ReadDataActivity.java
com.pratamawijaya.examplerealmio.User.java
com.pratamawijaya.exampleretrofit.ApplicationTest.java
com.pratamawijaya.exampleretrofit.MyActivity.java
id.pratama.example.cardslib.MainActivity.java
id.pratama.example.facebooklogin.MainActivity.java
id.pratama.example.streamingaudio.CobaSaja.java
id.pratama.example.streamingaudio.MainActivity.java
id.pratama.example.streamingaudio.Test.java
id.pratama.example.streamingaudio.service.StreamService.java
id.pratama.example.streamingaudio.utils.Utils.java
id.pratama.example.volley.MainActivity.java
it.gmariotti.cardslib.library.Constants.java
it.gmariotti.cardslib.library.internal.CardArrayAdapter.java
it.gmariotti.cardslib.library.internal.CardArrayMultiChoiceAdapter.java
it.gmariotti.cardslib.library.internal.CardCursorAdapter.java
it.gmariotti.cardslib.library.internal.CardExpand.java
it.gmariotti.cardslib.library.internal.CardGridArrayAdapter.java
it.gmariotti.cardslib.library.internal.CardGridCursorAdapter.java
it.gmariotti.cardslib.library.internal.CardHeader.java
it.gmariotti.cardslib.library.internal.CardThumbnail.java
it.gmariotti.cardslib.library.internal.Card.java
it.gmariotti.cardslib.library.internal.ViewToClickToExpand.java
it.gmariotti.cardslib.library.internal.base.BaseCardArrayAdapter.java
it.gmariotti.cardslib.library.internal.base.BaseCardCursorAdapter.java
it.gmariotti.cardslib.library.internal.base.BaseCard.java
it.gmariotti.cardslib.library.internal.base.CardUIInferface.java
it.gmariotti.cardslib.library.internal.multichoice.DefaultOptionMultiChoice.java
it.gmariotti.cardslib.library.internal.multichoice.MultiChoiceAdapterHelperBase.java
it.gmariotti.cardslib.library.internal.multichoice.MultiChoiceAdapter.java
it.gmariotti.cardslib.library.internal.multichoice.OptionMultiChoice.java
it.gmariotti.cardslib.library.internal.overflowanimation.BaseCardOverlayAnimation.java
it.gmariotti.cardslib.library.internal.overflowanimation.BaseOverflowAnimation.java
it.gmariotti.cardslib.library.internal.overflowanimation.TwoCardOverlayAnimation.java
it.gmariotti.cardslib.library.utils.BitmapUtils.java
it.gmariotti.cardslib.library.utils.CacheUtil.java
it.gmariotti.cardslib.library.view.BaseCardView.java
it.gmariotti.cardslib.library.view.CardGridView.java
it.gmariotti.cardslib.library.view.CardListView.java
it.gmariotti.cardslib.library.view.CardView.java
it.gmariotti.cardslib.library.view.base.CardViewInterface.java
it.gmariotti.cardslib.library.view.component.CardHeaderView.java
it.gmariotti.cardslib.library.view.component.CardShadowView.java
it.gmariotti.cardslib.library.view.component.CardThumbnailView.java
it.gmariotti.cardslib.library.view.listener.SwipeDismissListViewTouchListener.java
it.gmariotti.cardslib.library.view.listener.SwipeDismissViewTouchListener.java
it.gmariotti.cardslib.library.view.listener.UndoBarController.java
it.gmariotti.cardslib.library.view.listener.UndoCard.java
me.pratama.examplebetterpickers.ApplicationTest.java
me.pratama.examplebetterpickers.MainActivity.java
me.pratama.examplelayoutforandroiddev.ApplicationTest.java
me.pratama.examplelayoutforandroiddev.MainActivity.java
me.pratama.examplelayoutforandroiddev.SoalActivity.java
me.pratama.examplelayoutforandroiddev.entity.Soal.java
me.pratama.examplematerial.ApplicationTest.java
me.pratama.examplematerial.BaseActivity.java
me.pratama.examplematerial.MainActivity.java
me.pratama.examplematerial.interpolator.CubicBezierInterpolator.java
me.pratama.examplematerial.model.Singer.java
me.pratama.examplematerial.ui.FabActivity.java
me.pratama.examplematerial.ui.RecyclerViewActivity.java
me.pratama.examplematerial.ui.adapter.RecyclerAdapter.java