Add tileMode support into GradientColor
So VectorDrawable can have tileMode supported Gradient color. b/27126035 Change-Id: Icbf5983be165f04dc640627f6208fb1292f15625
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<!--
|
||||
/*
|
||||
* Copyright (C) 2016 The Android Open Source Project
|
||||
*
|
||||
|
||||
@@ -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>
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
<!--
|
||||
/*
|
||||
* Copyright (C) 2016 The Android Open Source Project
|
||||
*
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
30
tests/VectorDrawableTest/res/color/stroke_gradient_clamp.xml
Normal file
30
tests/VectorDrawableTest/res/color/stroke_gradient_clamp.xml
Normal file
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user