Better interpolators for decelerate animations
This commit is contained in:
parent
36a46002a4
commit
76b297781f
@ -113,6 +113,7 @@ import acr.browser.lightning.dialog.BrowserDialog;
|
|||||||
import acr.browser.lightning.dialog.LightningDialogBuilder;
|
import acr.browser.lightning.dialog.LightningDialogBuilder;
|
||||||
import acr.browser.lightning.fragment.BookmarksFragment;
|
import acr.browser.lightning.fragment.BookmarksFragment;
|
||||||
import acr.browser.lightning.fragment.TabsFragment;
|
import acr.browser.lightning.fragment.TabsFragment;
|
||||||
|
import acr.browser.lightning.interpolator.BezierDecelerateInterpolator;
|
||||||
import acr.browser.lightning.receiver.NetworkReceiver;
|
import acr.browser.lightning.receiver.NetworkReceiver;
|
||||||
import acr.browser.lightning.search.Suggestions;
|
import acr.browser.lightning.search.Suggestions;
|
||||||
import acr.browser.lightning.utils.DrawableUtils;
|
import acr.browser.lightning.utils.DrawableUtils;
|
||||||
@ -1932,7 +1933,7 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
show.setDuration(250);
|
show.setDuration(250);
|
||||||
show.setInterpolator(new DecelerateInterpolator());
|
show.setInterpolator(new BezierDecelerateInterpolator());
|
||||||
mBrowserFrame.startAnimation(show);
|
mBrowserFrame.startAnimation(show);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1971,7 +1972,7 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
show.setDuration(250);
|
show.setDuration(250);
|
||||||
show.setInterpolator(new DecelerateInterpolator());
|
show.setInterpolator(new BezierDecelerateInterpolator());
|
||||||
mBrowserFrame.startAnimation(show);
|
mBrowserFrame.startAnimation(show);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,8 @@ import android.view.animation.DecelerateInterpolator;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import acr.browser.lightning.interpolator.BezierDecelerateInterpolator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This implementation of {@link RecyclerView.ItemAnimator} provides basic
|
* This implementation of {@link RecyclerView.ItemAnimator} provides basic
|
||||||
* animations on remove, add, and move events that happen to the items in
|
* animations on remove, add, and move events that happen to the items in
|
||||||
@ -235,7 +237,7 @@ public class HorizontalItemAnimator extends SimpleItemAnimator {
|
|||||||
final ViewPropertyAnimatorCompat animation = ViewCompat.animate(view);
|
final ViewPropertyAnimatorCompat animation = ViewCompat.animate(view);
|
||||||
mAddAnimations.add(holder);
|
mAddAnimations.add(holder);
|
||||||
animation.alpha(1).translationY(0)
|
animation.alpha(1).translationY(0)
|
||||||
.setInterpolator(new DecelerateInterpolator()).setDuration(getAddDuration())
|
.setInterpolator(new BezierDecelerateInterpolator()).setDuration(getAddDuration())
|
||||||
.setListener(new VpaListenerAdapter() {
|
.setListener(new VpaListenerAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationStart(View view) {
|
public void onAnimationStart(View view) {
|
||||||
|
@ -29,6 +29,8 @@ import android.view.animation.DecelerateInterpolator;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import acr.browser.lightning.interpolator.BezierDecelerateInterpolator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This implementation of {@link RecyclerView.ItemAnimator} provides basic
|
* This implementation of {@link RecyclerView.ItemAnimator} provides basic
|
||||||
* animations on remove, add, and move events that happen to the items in
|
* animations on remove, add, and move events that happen to the items in
|
||||||
@ -235,7 +237,7 @@ public class VerticalItemAnimator extends SimpleItemAnimator {
|
|||||||
final ViewPropertyAnimatorCompat animation = ViewCompat.animate(view);
|
final ViewPropertyAnimatorCompat animation = ViewCompat.animate(view);
|
||||||
mAddAnimations.add(holder);
|
mAddAnimations.add(holder);
|
||||||
animation.alpha(1).translationX(0).setDuration(getAddDuration())
|
animation.alpha(1).translationX(0).setDuration(getAddDuration())
|
||||||
.setInterpolator(new DecelerateInterpolator()).setListener(new VpaListenerAdapter() {
|
.setInterpolator(new BezierDecelerateInterpolator()).setListener(new VpaListenerAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationStart(View view) {
|
public void onAnimationStart(View view) {
|
||||||
dispatchAddStarting(holder);
|
dispatchAddStarting(holder);
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
package acr.browser.lightning.interpolator;
|
||||||
|
|
||||||
|
import android.os.Build;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
import android.view.animation.DecelerateInterpolator;
|
||||||
|
import android.view.animation.Interpolator;
|
||||||
|
import android.view.animation.PathInterpolator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bezier decelerate curve similar to iOS.
|
||||||
|
* On Kitkat and below, it reverts to a
|
||||||
|
* decelerate interpolator.
|
||||||
|
*/
|
||||||
|
public class BezierDecelerateInterpolator implements Interpolator {
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
private static final Interpolator PATH_INTERPOLATOR;
|
||||||
|
|
||||||
|
static {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
|
PATH_INTERPOLATOR = new PathInterpolator(0.25f, 0.1f, 0.25f, 1);
|
||||||
|
} else {
|
||||||
|
PATH_INTERPOLATOR = new DecelerateInterpolator();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getInterpolation(float input) {
|
||||||
|
return PATH_INTERPOLATOR.getInterpolation(input);
|
||||||
|
}
|
||||||
|
}
|
6
app/src/main/res/anim-v21/bezier_decelerate.xml
Normal file
6
app/src/main/res/anim-v21/bezier_decelerate.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:controlX1="0.25"
|
||||||
|
android:controlY1="0.1"
|
||||||
|
android:controlX2="0.25"
|
||||||
|
android:controlY2="1"/>
|
2
app/src/main/res/anim/bezier_decelerate.xml
Normal file
2
app/src/main/res/anim/bezier_decelerate.xml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<decelerateInterpolator/>
|
@ -4,7 +4,7 @@
|
|||||||
android:duration="@integer/animation_time_medium"
|
android:duration="@integer/animation_time_medium"
|
||||||
android:fromXScale="0.85"
|
android:fromXScale="0.85"
|
||||||
android:fromYScale="0.85"
|
android:fromYScale="0.85"
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic"
|
android:interpolator="@anim/bezier_decelerate"
|
||||||
android:pivotX="50%p"
|
android:pivotX="50%p"
|
||||||
android:pivotY="50%p"
|
android:pivotY="50%p"
|
||||||
android:toXScale="1.0"
|
android:toXScale="1.0"
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
android:duration="@integer/animation_time_medium"
|
android:duration="@integer/animation_time_medium"
|
||||||
android:fromXScale="1.0"
|
android:fromXScale="1.0"
|
||||||
android:fromYScale="1.0"
|
android:fromYScale="1.0"
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic"
|
android:interpolator="@anim/bezier_decelerate"
|
||||||
android:pivotX="50%p"
|
android:pivotX="50%p"
|
||||||
android:pivotY="50%p"
|
android:pivotY="50%p"
|
||||||
android:toXScale="0.85"
|
android:toXScale="0.85"
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<translate
|
<translate
|
||||||
android:duration="@integer/animation_time_medium"
|
android:duration="@integer/animation_time_medium"
|
||||||
android:fromXDelta="100%p"
|
android:fromXDelta="100%p"
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic"
|
android:interpolator="@anim/bezier_decelerate"
|
||||||
android:toXDelta="0%p" />
|
android:toXDelta="0%p" />
|
||||||
<!--<alpha-->
|
<!--<alpha-->
|
||||||
<!--android:duration="@android:integer/config_mediumAnimTime"-->
|
<!--android:duration="@android:integer/config_mediumAnimTime"-->
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<translate
|
<translate
|
||||||
android:duration="@integer/animation_time_medium"
|
android:duration="@integer/animation_time_medium"
|
||||||
android:fromXDelta="0%p"
|
android:fromXDelta="0%p"
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic"
|
android:interpolator="@anim/bezier_decelerate"
|
||||||
android:toXDelta="100%p" />
|
android:toXDelta="100%p" />
|
||||||
<!--<alpha-->
|
<!--<alpha-->
|
||||||
<!--android:duration="@android:integer/config_mediumAnimTime"-->
|
<!--android:duration="@android:integer/config_mediumAnimTime"-->
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<translate
|
<translate
|
||||||
android:duration="@integer/animation_time_medium"
|
android:duration="@integer/animation_time_medium"
|
||||||
android:fromYDelta="100%p"
|
android:fromYDelta="100%p"
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic"
|
android:interpolator="@anim/bezier_decelerate"
|
||||||
android:toYDelta="0%p" />
|
android:toYDelta="0%p" />
|
||||||
<!--<alpha-->
|
<!--<alpha-->
|
||||||
<!--android:duration="@android:integer/config_mediumAnimTime"-->
|
<!--android:duration="@android:integer/config_mediumAnimTime"-->
|
||||||
|
Loading…
x
Reference in New Issue
Block a user