Fixed lowerColor
diff --git a/lottie/src/main/java/com/airbnb/lottie/parser/GradientColorParser.java b/lottie/src/main/java/com/airbnb/lottie/parser/GradientColorParser.java
index 59a8742..4eda1fd 100644
--- a/lottie/src/main/java/com/airbnb/lottie/parser/GradientColorParser.java
+++ b/lottie/src/main/java/com/airbnb/lottie/parser/GradientColorParser.java
@@ -160,10 +160,10 @@
}
newColors[i] = getColorInBetweenColorStops(position, opacityStopOpacities[opacityIndex], colorStopPositions, colorStopColors);
} else {
+ // This os a step derived from a color stop.
newColors[i] = getColorWithOpacityStops(colorStopColors[colorStopIndex], position, opacityStopPositions, opacityStopOpacities);
}
}
-
return new GradientColor(newPositions, newColors);
}
@@ -181,7 +181,7 @@
float distanceToLowerColor = position - colorStopPositions[i - 1];
float percentage = distanceToLowerColor / distanceBetweenColors;
int upperColor = colorStopColors[i];
- int lowerColor = colorStopColors[i];
+ int lowerColor = colorStopColors[i - 1];
int a = (int) (opacity * 255);
int r = MiscUtils.lerp(Color.red(lowerColor), Color.red(upperColor), percentage);
int g = MiscUtils.lerp(Color.green(lowerColor), Color.green(upperColor), percentage);
@@ -192,9 +192,7 @@
}
private int getColorWithOpacityStops(int color, float position, float[] opacityStopPositions, float[] opacityStopOpacities) {
- if (opacityStopPositions.length < 2) {
- return color;
- } else if (position <= opacityStopPositions[0]) {
+ if (opacityStopOpacities.length < 2 || position <= opacityStopPositions[0]) {
int a = (int) (opacityStopOpacities[0] * 255);
int r = Color.red(color);
int g = Color.green(color);