Apply trim paths to shape fills

Fixes #85
diff --git a/LottieSample/screenshots/Tests_TrimPathFill 0.png b/LottieSample/screenshots/Tests_TrimPathFill 0.png
new file mode 100644
index 0000000..b912ce5
--- /dev/null
+++ b/LottieSample/screenshots/Tests_TrimPathFill 0.png
Binary files differ
diff --git a/LottieSample/src/androidTest/java/com/airbnb/lottie/LottieTest.java b/LottieSample/src/androidTest/java/com/airbnb/lottie/LottieTest.java
index 187217b..532b665 100644
--- a/LottieSample/src/androidTest/java/com/airbnb/lottie/LottieTest.java
+++ b/LottieSample/src/androidTest/java/com/airbnb/lottie/LottieTest.java
@@ -35,5 +35,6 @@
     TestRobot.testAnimation(getActivity(), "Tests/EllipseTrimPath.json");
     TestRobot.testAnimation(getActivity(), "Tests/SplitDimensions.json");
     TestRobot.testAnimation(getActivity(), "Tests/TrimPathsFull.json");
+    TestRobot.testStatic(getActivity(), "Tests/TrimPathFill.json");
   }
 }
diff --git a/LottieSample/src/androidTest/java/com/airbnb/lottie/TestRobot.java b/LottieSample/src/androidTest/java/com/airbnb/lottie/TestRobot.java
index db8e3e9..f0e88cc 100644
--- a/LottieSample/src/androidTest/java/com/airbnb/lottie/TestRobot.java
+++ b/LottieSample/src/androidTest/java/com/airbnb/lottie/TestRobot.java
@@ -9,6 +9,10 @@
 class TestRobot {
   private static final float[] DEFAULT_ANIMATED_PROGRESS = {0f, 0.05f, 0.10f, 0.2f, 0.5f, 1f};
 
+  static void testStatic(MainActivity activity, String fileName) {
+    testAnimation(activity, fileName, new float[] {0});
+  }
+
   static void testAnimation(MainActivity activity, String fileName) {
     testAnimation(activity, fileName, DEFAULT_ANIMATED_PROGRESS);
   }
diff --git a/LottieSample/src/main/assets/Tests/TrimPathFill.json b/LottieSample/src/main/assets/Tests/TrimPathFill.json
new file mode 100644
index 0000000..26a4cee
--- /dev/null
+++ b/LottieSample/src/main/assets/Tests/TrimPathFill.json
@@ -0,0 +1 @@
+{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[200,200,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[147.008,97.246]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":50,"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.06,1,1]},"o":{"k":100},"w":{"k":11},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,0,0,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[-54.496,-56.377],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":4,"mn":"ADBE Vector Group"}],"ip":0,"op":1800,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[200,200,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[100.922,-82.055],[100.922,82.055],[-100.922,82.055],[-100.922,-82.055]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"k":0,"ix":1},"e":{"k":50,"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","fillEnabled":true,"c":{"k":[0,0.09,1,1]},"o":{"k":100},"w":{"k":21},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,0,0,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[70.992,93.828],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":4,"mn":"ADBE Vector Group"}],"ip":0,"op":1800,"st":0,"bm":0,"sr":1}],"v":"4.5.0","ddd":0,"ip":0,"op":1800,"fr":60,"w":400,"h":400}
\ No newline at end of file
diff --git a/lottie/src/main/java/com/airbnb/lottie/EllipseShapeLayer.java b/lottie/src/main/java/com/airbnb/lottie/EllipseShapeLayer.java
index 1d3b25d..180b016 100644
--- a/lottie/src/main/java/com/airbnb/lottie/EllipseShapeLayer.java
+++ b/lottie/src/main/java/com/airbnb/lottie/EllipseShapeLayer.java
@@ -26,6 +26,10 @@
       fillLayer.updateCircle(
           circleShape.getPosition().createAnimation(),
           circleShape.getSize().createAnimation());
+      if (trim != null) {
+        fillLayer.setTrimPath(trim.getStart().createAnimation(), trim.getEnd().createAnimation(),
+            trim.getOffset().createAnimation());
+      }
       addLayer(fillLayer);
     }
 
diff --git a/lottie/src/main/java/com/airbnb/lottie/ShapeLayerView.java b/lottie/src/main/java/com/airbnb/lottie/ShapeLayerView.java
index 6947180..78320f9 100644
--- a/lottie/src/main/java/com/airbnb/lottie/ShapeLayerView.java
+++ b/lottie/src/main/java/com/airbnb/lottie/ShapeLayerView.java
@@ -28,6 +28,10 @@
       fillLayer.setShapeAlpha(fill.getOpacity().createAnimation());
       fillLayer.setTransformAlpha(transformModel.getOpacity().createAnimation());
       fillLayer.setScale(scale.createAnimation());
+      if (trim != null) {
+        fillLayer.setTrimPath(trim.getStart().createAnimation(), trim.getEnd().createAnimation(),
+            trim.getOffset().createAnimation());
+      }
       addLayer(fillLayer);
     }