Make setGradientCenter/Radius work.

The previous implementation would not rebuild the gradient shader
when programmatically changing the shader's properties. Also fixes
the documentation since the gradient center does affect linear
gradients.

Change-Id: I5387188484b862f6835b0da9042b25032e55e792
diff --git a/docs/html/guide/topics/resources/drawable-resource.jd b/docs/html/guide/topics/resources/drawable-resource.jd
index cee8fc3..89c85e2 100644
--- a/docs/html/guide/topics/resources/drawable-resource.jd
+++ b/docs/html/guide/topics/resources/drawable-resource.jd
@@ -1561,11 +1561,9 @@
         <dd><em>Integer</em>. The angle for the gradient, in degrees. 0 is left to right, 90 is
 bottom to top. It must be a multiple of 45. Default is 0.</dd>
         <dt><code>android:centerX</code></dt>
-        <dd><em>Float</em>. The relative X-position for the center of the gradient (0 - 1.0).
-Does not apply when {@code android:type="linear"}.</dd>
+        <dd><em>Float</em>. The relative X-position for the center of the gradient (0 - 1.0).</dd>
         <dt><code>android:centerY</code></dt>
-        <dd><em>Float</em>. The relative Y-position for the center of the gradient (0 - 1.0).
-Does not apply when {@code android:type="linear"}.</dd>
+        <dd><em>Float</em>. The relative Y-position for the center of the gradient (0 - 1.0).</dd>
         <dt><code>android:centerColor</code></dt>
         <dd><em>Color</em>. Optional color that comes between the start and end colors, as a
 hexadecimal value or <a href="more-resources.html#Color">color resource</a>.</dd>
diff --git a/graphics/java/android/graphics/drawable/GradientDrawable.java b/graphics/java/android/graphics/drawable/GradientDrawable.java
index 7adea06..de0fabc 100644
--- a/graphics/java/android/graphics/drawable/GradientDrawable.java
+++ b/graphics/java/android/graphics/drawable/GradientDrawable.java
@@ -240,16 +240,19 @@
 
     public void setGradientCenter(float x, float y) {
         mGradientState.setGradientCenter(x, y);
+        mRectIsDirty = true;
         invalidateSelf();
     }
 
     public void setGradientRadius(float gradientRadius) {
         mGradientState.setGradientRadius(gradientRadius);
+        mRectIsDirty = true;
         invalidateSelf();
     }
 
     public void setUseLevel(boolean useLevel) {
         mGradientState.mUseLevel = useLevel;
+        mRectIsDirty = true;
         invalidateSelf();
     }