diff options
20 files changed, 705 insertions, 6 deletions
diff --git a/core/java/android/content/res/GradientColor.java b/core/java/android/content/res/GradientColor.java index 98ef2eaa5e6d..cc46cbd43258 100644 --- a/core/java/android/content/res/GradientColor.java +++ b/core/java/android/content/res/GradientColor.java @@ -17,6 +17,7 @@ package android.content.res; import android.annotation.ColorInt; +import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.res.Resources.Theme; @@ -37,13 +38,48 @@ import android.util.Log; import android.util.Xml; import java.io.IOException; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; - +/** + * Lets you define a gradient color, which is used inside + * {@link android.graphics.drawable.VectorDrawable}. + * + * {@link android.content.res.GradientColor}s are created from XML resource files defined in the + * "color" subdirectory directory of an application's resource directory. The XML file contains + * a single "gradient" element with a number of attributes and elements inside. For example: + * <pre> + * <gradient xmlns:android="http://schemas.android.com/apk/res/android"> + * <android:startColor="?android:attr/colorPrimary"/> + * <android:endColor="?android:attr/colorControlActivated"/> + * <.../> + * <android:type="linear"/> + * </gradient> + * </pre> + * + * This can describe either a {@link android.graphics.LinearGradient}, + * {@link android.graphics.RadialGradient}, or {@link android.graphics.SweepGradient}. + * + * Note that different attributes are relevant for different types of gradient. + * For example, android:gradientRadius is only applied to RadialGradient. + * androd:centerX and android:centerY are only applied to SweepGradient or RadialGradient. + * android:startX, android:startY, android:endX and android:endY are only applied to LinearGradient. + * + * Also note if any color "item" element is defined, then startColor, centerColor and endColor will + * be ignored. + */ public class GradientColor extends ComplexColor { private static final String TAG = "GradientColor"; private static final boolean DBG_GRADIENT = false; + @IntDef({TILE_MODE_CLAMP, TILE_MODE_REPEAT, TILE_MODE_MIRROR}) + @Retention(RetentionPolicy.SOURCE) + private @interface GradientTileMode {} + private static final int TILE_MODE_CLAMP = 0; + private static final int TILE_MODE_REPEAT = 1; + private static final int TILE_MODE_MIRROR = 2; + /** Lazily-created factory for this GradientColor. */ private GradientColorFactory mFactory; @@ -54,7 +90,8 @@ public class GradientColor extends ComplexColor { // all the XML information. private Shader mShader = null; - // Below are the attributes at the root element <gradient> + // Below are the attributes at the root element <gradient>. + // NOTE: they need to be copied in the copy constructor! private int mGradientType = GradientDrawable.LINEAR_GRADIENT; private float mCenterX = 0f; @@ -70,6 +107,8 @@ public class GradientColor extends ComplexColor { private int mEndColor = 0; private boolean mHasCenterColor = false; + private int mTileMode = 0; // Clamp mode. + private float mGradientRadius = 0f; // Below are the attributes for the <item> element. @@ -100,6 +139,7 @@ public class GradientColor extends ComplexColor { mEndColor = copy.mEndColor; mHasCenterColor = copy.mHasCenterColor; mGradientRadius = copy.mGradientRadius; + mTileMode = copy.mTileMode; if (copy.mItemColors != null) { mItemColors = copy.mItemColors.clone(); @@ -117,6 +157,20 @@ public class GradientColor extends ComplexColor { } } + // Set the default to clamp mode. + private static Shader.TileMode parseTileMode(@GradientTileMode int tileMode) { + switch (tileMode) { + case TILE_MODE_CLAMP: + return Shader.TileMode.CLAMP; + case TILE_MODE_REPEAT: + return Shader.TileMode.REPEAT; + case TILE_MODE_MIRROR: + return Shader.TileMode.MIRROR; + default: + return Shader.TileMode.CLAMP; + } + } + /** * Update the root level's attributes, either for inflate or applyTheme. */ @@ -150,6 +204,9 @@ public class GradientColor extends ComplexColor { mEndColor = a.getColor( R.styleable.GradientColor_endColor, mEndColor); + mTileMode = a.getInt( + R.styleable.GradientColor_tileMode, mTileMode); + if (DBG_GRADIENT) { Log.v(TAG, "hasCenterColor is " + mHasCenterColor); if (mHasCenterColor) { @@ -157,6 +214,7 @@ public class GradientColor extends ComplexColor { } Log.v(TAG, "startColor: " + mStartColor); Log.v(TAG, "endColor: " + mEndColor); + Log.v(TAG, "tileMode: " + mTileMode); } mGradientRadius = a.getFloat(R.styleable.GradientColor_gradientRadius, @@ -406,11 +464,11 @@ public class GradientColor extends ComplexColor { if (mGradientType == GradientDrawable.LINEAR_GRADIENT) { mShader = new LinearGradient(mStartX, mStartY, mEndX, mEndY, tempColors, tempOffsets, - Shader.TileMode.CLAMP); + parseTileMode(mTileMode)); } else { if (mGradientType == GradientDrawable.RADIAL_GRADIENT) { mShader = new RadialGradient(mCenterX, mCenterY, mGradientRadius, tempColors, - tempOffsets, Shader.TileMode.CLAMP); + tempOffsets, parseTileMode(mTileMode)); } else { mShader = new SweepGradient(mCenterX, mCenterY, tempColors, tempOffsets); } diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 90a573ba8fbd..9ccd7f0a77dd 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -8170,6 +8170,8 @@ i Defined in same coordinates as the path itself --> <attr name="endY" format="float" /> + <!-- Defines the tile mode of the gradient. SweepGradient don't support tiling. --> + <attr name="tileMode"/> </declare-styleable> <!-- Describes an item of a GradientColor. Minimally need 2 items to define the gradient diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_linear_clamp.xml b/tests/VectorDrawableTest/res/color/fill_gradient_linear_clamp.xml new file mode 100644 index 000000000000..6a24453c0198 --- /dev/null +++ b/tests/VectorDrawableTest/res/color/fill_gradient_linear_clamp.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +--> +<gradient xmlns:android="http://schemas.android.com/apk/res/android" + android:angle="90" + android:startColor="?android:attr/colorPrimary" + android:endColor="?android:attr/colorControlActivated" + android:centerColor="#00ff0000" + android:startX="0" + android:startY="0" + android:endX="50" + android:endY="50" + android:type="linear" + android:tileMode="clamp"> +</gradient>
\ No newline at end of file diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_linear_item_overlap_mirror.xml b/tests/VectorDrawableTest/res/color/fill_gradient_linear_item_overlap_mirror.xml new file mode 100644 index 000000000000..d342bca32208 --- /dev/null +++ b/tests/VectorDrawableTest/res/color/fill_gradient_linear_item_overlap_mirror.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +--> +<gradient xmlns:android="http://schemas.android.com/apk/res/android" + android:angle="90" + android:startColor="?android:attr/colorPrimary" + android:endColor="?android:attr/colorControlActivated" + android:centerColor="#f00" + android:startX="0" + android:startY="0" + android:endX="50" + android:endY="50" + android:type="linear" + android:tileMode="mirror"> + <item android:offset="0.1" android:color="?android:attr/colorPrimary"/> + <item android:offset="0.4" android:color="#f00"/> + <item android:offset="0.4" android:color="#fff"/> + <item android:offset="0.9" android:color="?android:attr/colorControlActivated"/> +</gradient>
\ No newline at end of file diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_linear_item_repeat.xml b/tests/VectorDrawableTest/res/color/fill_gradient_linear_item_repeat.xml new file mode 100644 index 000000000000..afb45aa2eebe --- /dev/null +++ b/tests/VectorDrawableTest/res/color/fill_gradient_linear_item_repeat.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +--> +<gradient xmlns:android="http://schemas.android.com/apk/res/android" + android:angle="90" + android:startColor="?android:attr/colorPrimary" + android:endColor="?android:attr/colorControlActivated" + android:centerColor="#f00" + android:startX="0" + android:startY="0" + android:endX="50" + android:endY="50" + android:type="linear" + android:tileMode="repeat"> + <item android:offset="0.1" android:color="?android:attr/colorPrimary"/> + <item android:offset="0.4" android:color="#fff"/> + <item android:offset="0.9" android:color="?android:attr/colorControlActivated"/> +</gradient>
\ No newline at end of file diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_radial_clamp.xml b/tests/VectorDrawableTest/res/color/fill_gradient_radial_clamp.xml new file mode 100644 index 000000000000..64b32f6fba3f --- /dev/null +++ b/tests/VectorDrawableTest/res/color/fill_gradient_radial_clamp.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +--> +<gradient xmlns:android="http://schemas.android.com/apk/res/android" + android:centerColor="#ff0000" + android:endColor="?android:attr/colorControlActivated" + android:centerX="300" + android:centerY="300" + android:gradientRadius="50" + android:startColor="?android:attr/colorPrimary" + android:type="radial" + android:tileMode="clamp"> +</gradient>
\ No newline at end of file diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_radial_item.xml b/tests/VectorDrawableTest/res/color/fill_gradient_radial_item.xml index 51b0e173f746..c6cea7c5c698 100644 --- a/tests/VectorDrawableTest/res/color/fill_gradient_radial_item.xml +++ b/tests/VectorDrawableTest/res/color/fill_gradient_radial_item.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> - <!-- +<!-- /* * Copyright (C) 2016 The Android Open Source Project * diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_repeat.xml b/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_repeat.xml new file mode 100644 index 000000000000..fb4346ad4abd --- /dev/null +++ b/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_repeat.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +--> +<gradient xmlns:android="http://schemas.android.com/apk/res/android" + android:centerColor="#ff0000" + android:endColor="#ff0000ff" + android:centerX="300" + android:centerY="300" + android:gradientRadius="50" + android:startColor="#ffffffff" + android:type="radial" + android:tileMode="repeat"> + <item android:offset="0.1" android:color="?android:attr/colorPrimary"/> + <item android:offset="0.4" android:color="#fff"/> + <item android:offset="0.9" android:color="?android:attr/colorControlActivated"/> +</gradient>
\ No newline at end of file diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_short.xml b/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_short.xml index 8caa1b4348a2..fefbe9f05eff 100644 --- a/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_short.xml +++ b/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_short.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> - <!-- +<!-- /* * Copyright (C) 2016 The Android Open Source Project * diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_short_mirror.xml b/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_short_mirror.xml new file mode 100644 index 000000000000..8b5ad7c826ac --- /dev/null +++ b/tests/VectorDrawableTest/res/color/fill_gradient_radial_item_short_mirror.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +--> +<gradient xmlns:android="http://schemas.android.com/apk/res/android" + android:centerX="300" + android:centerY="300" + android:gradientRadius="50" + android:type="radial" + android:tileMode="mirror"> + <item android:offset="0.1" android:color="?android:attr/colorPrimary"/> + <item android:offset="0.9" android:color="?android:attr/colorControlActivated"/> +</gradient>
\ No newline at end of file diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_sweep_clamp.xml b/tests/VectorDrawableTest/res/color/fill_gradient_sweep_clamp.xml new file mode 100644 index 000000000000..80f39f3ee980 --- /dev/null +++ b/tests/VectorDrawableTest/res/color/fill_gradient_sweep_clamp.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +--> +<gradient xmlns:android="http://schemas.android.com/apk/res/android" + android:centerColor="#ff0000" + android:endColor="#ff0000ff" + android:centerX="500" + android:centerY="500" + android:gradientRadius="10" + android:startColor="#ffffffff" + android:type="sweep" + android:tileMode="clamp"> +</gradient> diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_sweep_item_long_mirror.xml b/tests/VectorDrawableTest/res/color/fill_gradient_sweep_item_long_mirror.xml new file mode 100644 index 000000000000..0890bd6fc733 --- /dev/null +++ b/tests/VectorDrawableTest/res/color/fill_gradient_sweep_item_long_mirror.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +--> +<gradient xmlns:android="http://schemas.android.com/apk/res/android" + android:centerX="500" + android:centerY="500" + android:gradientRadius="10" + android:type="sweep" + android:tileMode="mirror"> + <item android:offset="-0.3" android:color="#f00"/> + <item android:offset="0.1" android:color="?android:attr/colorPrimary"/> + <item android:offset="0.4" android:color="#0f0"/> + <item android:offset="0.6" android:color="#00f"/> + <item android:offset="0.7" android:color="?android:attr/colorControlActivated"/> + <item android:offset="1.5" android:color="#00f"/> +</gradient> diff --git a/tests/VectorDrawableTest/res/color/fill_gradient_sweep_item_repeat.xml b/tests/VectorDrawableTest/res/color/fill_gradient_sweep_item_repeat.xml new file mode 100644 index 000000000000..2ec50148b44d --- /dev/null +++ b/tests/VectorDrawableTest/res/color/fill_gradient_sweep_item_repeat.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +--> +<gradient xmlns:android="http://schemas.android.com/apk/res/android" + android:centerColor="#ff0000" + android:endColor="#ff0000ff" + android:centerX="500" + android:centerY="500" + android:gradientRadius="10" + android:startColor="#ffffffff" + android:type="sweep" + android:tileMode="repeat"> + <item android:offset="0.1" android:color="?android:attr/colorPrimary"/> + <item android:offset="0.4" android:color="#fff"/> + <item android:offset="0.9" android:color="?android:attr/colorControlActivated"/> +</gradient> diff --git a/tests/VectorDrawableTest/res/color/stroke_gradient_clamp.xml b/tests/VectorDrawableTest/res/color/stroke_gradient_clamp.xml new file mode 100644 index 000000000000..3d746e720cf8 --- /dev/null +++ b/tests/VectorDrawableTest/res/color/stroke_gradient_clamp.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +--> +<gradient xmlns:android="http://schemas.android.com/apk/res/android" + android:angle="90" + android:centerColor="#7f7f7f" + android:endColor="#ffffff" + android:startColor="#000000" + android:startX="0" + android:endX="50" + android:startY="0" + android:endY="0" + android:type="linear" + android:tileMode="clamp"> +</gradient>
\ No newline at end of file diff --git a/tests/VectorDrawableTest/res/color/stroke_gradient_item_alpha_mirror.xml b/tests/VectorDrawableTest/res/color/stroke_gradient_item_alpha_mirror.xml new file mode 100644 index 000000000000..352a2fd463a8 --- /dev/null +++ b/tests/VectorDrawableTest/res/color/stroke_gradient_item_alpha_mirror.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +--> +<gradient xmlns:android="http://schemas.android.com/apk/res/android" + android:startX="0" + android:endX="50" + android:startY="0" + android:endY="0" + android:type="linear" + android:tileMode="mirror"> + <item android:offset="0.1" android:color="#f00"/> + <item android:offset="0.2" android:color="#2f0f"/> + <item android:offset="0.9" android:color="#f00f"/> +</gradient>
\ No newline at end of file diff --git a/tests/VectorDrawableTest/res/color/stroke_gradient_item_repeat.xml b/tests/VectorDrawableTest/res/color/stroke_gradient_item_repeat.xml new file mode 100644 index 000000000000..42281d15dc0b --- /dev/null +++ b/tests/VectorDrawableTest/res/color/stroke_gradient_item_repeat.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +--> +<gradient xmlns:android="http://schemas.android.com/apk/res/android" + android:angle="90" + android:centerColor="#7f7f7f" + android:endColor="#ffffff" + android:startColor="#000000" + android:startX="0" + android:endX="50" + android:startY="0" + android:endY="0" + android:type="linear" + android:tileMode="repeat"> + <item android:offset="0.1" android:color="#f00"/> + <item android:offset="0.2" android:color="#f0f"/> + <item android:offset="0.9" android:color="#f00f"/> +</gradient>
\ No newline at end of file diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_1_clamp.xml b/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_1_clamp.xml new file mode 100644 index 000000000000..2fa440a84cff --- /dev/null +++ b/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_1_clamp.xml @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:height="64dp" + android:width="64dp" + android:viewportHeight="400" + android:viewportWidth="400" > + +<group android:name="backgroundGroup" + android:scaleX="0.5" + android:scaleY="0.5"> + <path + android:name="background1" + android:fillColor="@color/fill_gradient_linear_clamp" + android:pathData="M 0,0 l 200,0 l 0, 200 l -200, 0 z" /> + <path + android:name="background2" + android:fillColor="@color/fill_gradient_radial_clamp" + android:pathData="M 200,200 l 200,0 l 0, 200 l -200, 0 z" /> + <path + android:name="background3" + android:fillColor="@color/fill_gradient_sweep_clamp" + android:pathData="M 400,400 l 200,0 l 0, 200 l -200, 0 z" /> +</group> +<group + android:name="translateToCenterGroup" + android:translateX="50.0" + android:translateY="90.0" > + <path + android:name="twoLines" + android:pathData="@string/twoLinePathData" + android:strokeColor="@color/stroke_gradient_clamp" + android:strokeWidth="20" /> + + <group + android:name="rotationGroup" + android:pivotX="0.0" + android:pivotY="0.0" + android:rotation="-45.0"> + <path + android:name="twoLines1" + android:pathData="@string/twoLinePathData" + android:strokeColor="@color/stroke_gradient_clamp" + android:strokeWidth="20" /> + + <group + android:name="translateGroup" + android:translateX="130.0" + android:translateY="160.0"> + <group android:name="scaleGroup" > + <path + android:name="twoLines3" + android:pathData="@string/twoLinePathData" + android:strokeColor="@color/stroke_gradient_clamp" + android:strokeWidth="20" /> + </group> + </group> + + <group + android:name="translateGroupHalf" + android:translateX="65.0" + android:translateY="80.0"> + <group android:name="scaleGroup" > + <path + android:name="twoLines2" + android:pathData="@string/twoLinePathData" + android:fillColor="@color/fill_gradient_linear_clamp" + android:strokeColor="@color/stroke_gradient_clamp" + android:strokeWidth="20" /> + </group> + </group> + </group> +</group> + +</vector>
\ No newline at end of file diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_2_repeat.xml b/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_2_repeat.xml new file mode 100644 index 000000000000..5a43f804a6e0 --- /dev/null +++ b/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_2_repeat.xml @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:height="64dp" + android:width="64dp" + android:viewportHeight="400" + android:viewportWidth="400" > + +<group android:name="backgroundGroup" + android:scaleX="0.5" + android:scaleY="0.5"> + <path + android:name="background1" + android:fillColor="@color/fill_gradient_linear_item_repeat" + android:pathData="M 0,0 l 200,0 l 0, 200 l -200, 0 z" /> + <path + android:name="background2" + android:fillColor="@color/fill_gradient_radial_item_repeat" + android:pathData="M 200,200 l 200,0 l 0, 200 l -200, 0 z" /> + <path + android:name="background3" + android:fillColor="@color/fill_gradient_sweep_item_repeat" + android:pathData="M 400,400 l 200,0 l 0, 200 l -200, 0 z" /> +</group> +<group + android:name="translateToCenterGroup" + android:translateX="50.0" + android:translateY="90.0" > + <path + android:name="twoLines" + android:pathData="@string/twoLinePathData" + android:strokeColor="@color/stroke_gradient_item_repeat" + android:strokeWidth="20" /> + + <group + android:name="rotationGroup" + android:pivotX="0.0" + android:pivotY="0.0" + android:rotation="-45.0"> + <path + android:name="twoLines1" + android:pathData="@string/twoLinePathData" + android:strokeColor="@color/stroke_gradient_item_repeat" + android:strokeWidth="20" /> + + <group + android:name="translateGroup" + android:translateX="130.0" + android:translateY="160.0"> + <group android:name="scaleGroup" > + <path + android:name="twoLines3" + android:pathData="@string/twoLinePathData" + android:strokeColor="@color/stroke_gradient_item_repeat" + android:strokeWidth="20" /> + </group> + </group> + + <group + android:name="translateGroupHalf" + android:translateX="65.0" + android:translateY="80.0"> + <group android:name="scaleGroup" > + <path + android:name="twoLines2" + android:pathData="@string/twoLinePathData" + android:strokeColor="@color/stroke_gradient_item_repeat" + android:strokeWidth="20" /> + </group> + </group> + </group> +</group> + +</vector>
\ No newline at end of file diff --git a/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_3_mirror.xml b/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_3_mirror.xml new file mode 100644 index 000000000000..e8de7c2b1f5d --- /dev/null +++ b/tests/VectorDrawableTest/res/drawable/vector_icon_gradient_3_mirror.xml @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:height="64dp" + android:width="64dp" + android:viewportHeight="400" + android:viewportWidth="400" > + +<group android:name="backgroundGroup" + android:scaleX="0.5" + android:scaleY="0.5"> + <path + android:name="background1" + android:fillColor="@color/fill_gradient_linear_item_overlap_mirror" + android:pathData="M 0,0 l 200,0 l 0, 200 l -200, 0 z" /> + <path + android:name="background2" + android:fillColor="@color/fill_gradient_radial_item_short_mirror" + android:pathData="M 200,200 l 200,0 l 0, 200 l -200, 0 z" /> + <path + android:name="background3" + android:fillColor="@color/fill_gradient_sweep_item_long_mirror" + android:pathData="M 400,400 l 200,0 l 0, 200 l -200, 0 z" /> +</group> +<group + android:name="translateToCenterGroup" + android:translateX="50.0" + android:translateY="90.0" > + <path + android:name="twoLines" + android:pathData="@string/twoLinePathData" + android:strokeColor="@color/stroke_gradient_item_alpha_mirror" + android:strokeWidth="20" /> + + <group + android:name="rotationGroup" + android:pivotX="0.0" + android:pivotY="0.0" + android:rotation="-45.0"> + <path + android:name="twoLines1" + android:pathData="@string/twoLinePathData" + android:strokeColor="@color/stroke_gradient_item_alpha_mirror" + android:strokeWidth="20" /> + + <group + android:name="translateGroup" + android:translateX="130.0" + android:translateY="160.0"> + <group android:name="scaleGroup" > + <path + android:name="twoLines3" + android:pathData="@string/twoLinePathData" + android:strokeColor="@color/stroke_gradient_item_alpha_mirror" + android:strokeWidth="20" /> + </group> + </group> + + <group + android:name="translateGroupHalf" + android:translateX="65.0" + android:translateY="80.0"> + <group android:name="scaleGroup" > + <path + android:name="twoLines2" + android:pathData="@string/twoLinePathData" + android:strokeColor="@color/stroke_gradient_item_alpha" + android:strokeWidth="20" /> + </group> + </group> + </group> +</group> + +</vector>
\ No newline at end of file diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawablePerformance.java b/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawablePerformance.java index 717214740698..495d62010fb8 100644 --- a/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawablePerformance.java +++ b/tests/VectorDrawableTest/src/com/android/test/dynamic/VectorDrawablePerformance.java @@ -38,6 +38,9 @@ public class VectorDrawablePerformance extends Activity { R.drawable.vector_icon_gradient_1, R.drawable.vector_icon_gradient_2, R.drawable.vector_icon_gradient_3, + R.drawable.vector_icon_gradient_1_clamp, + R.drawable.vector_icon_gradient_2_repeat, + R.drawable.vector_icon_gradient_3_mirror, R.drawable.vector_icon_state_list_simple, R.drawable.vector_icon_state_list_theme, R.drawable.vector_drawable01, |