Merge "Prevent divided by zero if animation is disable" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
2afeac4798
@@ -382,8 +382,8 @@ class Dimmer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(SurfaceControl.Transaction t, SurfaceControl sc, long currentPlayTime) {
|
public void apply(SurfaceControl.Transaction t, SurfaceControl sc, long currentPlayTime) {
|
||||||
float alpha = ((float) currentPlayTime / getDuration()) * (mToAlpha - mFromAlpha)
|
final float fraction = getFraction(currentPlayTime);
|
||||||
+ mFromAlpha;
|
final float alpha = fraction * (mToAlpha - mFromAlpha) + mFromAlpha;
|
||||||
t.setAlpha(sc, alpha);
|
t.setAlpha(sc, alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -130,6 +130,16 @@ class LocalAnimationAdapter implements AnimationAdapter {
|
|||||||
*/
|
*/
|
||||||
default boolean needsEarlyWakeup() { return false; }
|
default boolean needsEarlyWakeup() { return false; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The fraction of the animation, returns 1 if duration is 0.
|
||||||
|
*
|
||||||
|
* @param currentPlayTime The current play time.
|
||||||
|
*/
|
||||||
|
default float getFraction(float currentPlayTime) {
|
||||||
|
final float duration = getDuration();
|
||||||
|
return duration > 0 ? currentPlayTime / duration : 1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
void dump(PrintWriter pw, String prefix);
|
void dump(PrintWriter pw, String prefix);
|
||||||
|
|
||||||
default void dumpDebug(ProtoOutputStream proto, long fieldId) {
|
default void dumpDebug(ProtoOutputStream proto, long fieldId) {
|
||||||
|
|||||||
@@ -646,8 +646,8 @@ class ScreenRotationAnimation {
|
|||||||
@Override
|
@Override
|
||||||
public void apply(SurfaceControl.Transaction t, SurfaceControl leash,
|
public void apply(SurfaceControl.Transaction t, SurfaceControl leash,
|
||||||
long currentPlayTime) {
|
long currentPlayTime) {
|
||||||
float fraction = (float)currentPlayTime / (float)getDuration();
|
final float fraction = getFraction(currentPlayTime);
|
||||||
int color = (Integer) va.evaluate(fraction, startColor, endColor);
|
final int color = (Integer) va.evaluate(fraction, startColor, endColor);
|
||||||
Color middleColor = Color.valueOf(color);
|
Color middleColor = Color.valueOf(color);
|
||||||
rgbTmpFloat[0] = middleColor.red();
|
rgbTmpFloat[0] = middleColor.red();
|
||||||
rgbTmpFloat[1] = middleColor.green();
|
rgbTmpFloat[1] = middleColor.green();
|
||||||
|
|||||||
@@ -5606,7 +5606,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(Transaction t, SurfaceControl leash, long currentPlayTime) {
|
public void apply(Transaction t, SurfaceControl leash, long currentPlayTime) {
|
||||||
final float fraction = (float) currentPlayTime / getDuration();
|
final float fraction = getFraction(currentPlayTime);
|
||||||
final float v = mInterpolator.getInterpolation(fraction);
|
final float v = mInterpolator.getInterpolation(fraction);
|
||||||
t.setPosition(leash, mFrom.x + (mTo.x - mFrom.x) * v,
|
t.setPosition(leash, mFrom.x + (mTo.x - mFrom.x) * v,
|
||||||
mFrom.y + (mTo.y - mFrom.y) * v);
|
mFrom.y + (mTo.y - mFrom.y) * v);
|
||||||
|
|||||||
Reference in New Issue
Block a user