diff options
Diffstat (limited to 'tests/VectorDrawableTest')
4 files changed, 136 insertions, 17 deletions
diff --git a/tests/VectorDrawableTest/AndroidManifest.xml b/tests/VectorDrawableTest/AndroidManifest.xml index 4c835ec..7796953 100644 --- a/tests/VectorDrawableTest/AndroidManifest.xml +++ b/tests/VectorDrawableTest/AndroidManifest.xml @@ -99,6 +99,15 @@ </intent-filter> </activity> <activity + android:name="AnimatedVectorDrawableDupPerf" + android:label="Animated Vector Performance of clones" > + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="com.android.test.dynamic.TEST" /> + </intent-filter> + </activity> + <activity android:name="VectorDrawableStaticPerf" android:label="System icons" > <intent-filter> diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable24.xml b/tests/VectorDrawableTest/res/drawable/vector_drawable24.xml index 5c1ccaa..f0b4699 100644 --- a/tests/VectorDrawableTest/res/drawable/vector_drawable24.xml +++ b/tests/VectorDrawableTest/res/drawable/vector_drawable24.xml @@ -19,8 +19,7 @@ android:viewportHeight="400" android:viewportWidth="400" > - <group android:name="backgroundGroup" - android:alpha = "0.5" > + <group android:name="backgroundGroup"> <path android:name="background1" android:fillColor="#FF000000" @@ -33,8 +32,7 @@ <group android:name="translateToCenterGroup" android:translateX="50.0" - android:translateY="90.0" - android:alpha = "0.5" > + android:translateY="90.0" > <path android:name="twoLines" android:pathData="@string/twoLinePathData" @@ -45,8 +43,7 @@ android:name="rotationGroup" android:pivotX="0.0" android:pivotY="0.0" - android:rotation="-45.0" - android:alpha = "0.5" > + android:rotation="-45.0"> <path android:name="twoLines1" android:pathData="@string/twoLinePathData" @@ -56,8 +53,7 @@ <group android:name="translateGroup" android:translateX="130.0" - android:translateY="160.0" - android:alpha = "0.5"> + android:translateY="160.0"> <group android:name="scaleGroup" > <path android:name="twoLines3" @@ -70,8 +66,7 @@ <group android:name="translateGroupHalf" android:translateX="65.0" - android:translateY="80.0" - android:alpha = "0.5"> + android:translateY="80.0"> <group android:name="scaleGroup" > <path android:name="twoLines2" diff --git a/tests/VectorDrawableTest/res/drawable/vector_drawable25.xml b/tests/VectorDrawableTest/res/drawable/vector_drawable25.xml index 069a531..f46d14e 100644 --- a/tests/VectorDrawableTest/res/drawable/vector_drawable25.xml +++ b/tests/VectorDrawableTest/res/drawable/vector_drawable25.xml @@ -21,12 +21,10 @@ <group android:name="FirstLevelGroup" - android:alpha="0.9" android:translateX="100.0" android:translateY="0.0" > <group android:name="SecondLevelGroup1" - android:alpha="0.9" android:translateX="-100.0" android:translateY="50.0" > <path @@ -35,7 +33,6 @@ <group android:name="ThridLevelGroup1" - android:alpha="0.9" android:translateX="-100.0" android:translateY="50.0" > <path @@ -44,7 +41,6 @@ </group> <group android:name="ThridLevelGroup2" - android:alpha="0.8" android:translateX="100.0" android:translateY="50.0" > <path @@ -54,7 +50,6 @@ </group> <group android:name="SecondLevelGroup2" - android:alpha="0.8" android:translateX="100.0" android:translateY="50.0" > <path @@ -63,7 +58,6 @@ <group android:name="ThridLevelGroup3" - android:alpha="0.9" android:translateX="-100.0" android:translateY="50.0" > <path @@ -72,7 +66,6 @@ </group> <group android:name="ThridLevelGroup4" - android:alpha="0.8" android:translateX="100.0" android:translateY="50.0" > <path diff --git a/tests/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableDupPerf.java b/tests/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableDupPerf.java new file mode 100644 index 0000000..047e494 --- /dev/null +++ b/tests/VectorDrawableTest/src/com/android/test/dynamic/AnimatedVectorDrawableDupPerf.java @@ -0,0 +1,122 @@ +/* + * Copyright (C) 2014 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. + */ +package com.android.test.dynamic; + +import android.app.Activity; +import android.content.res.Resources; +import android.graphics.drawable.AnimatedVectorDrawable; +import android.graphics.drawable.VectorDrawable; +import android.os.Bundle; +import android.util.AttributeSet; +import android.util.Log; +import android.util.Xml; +import android.widget.Button; +import android.widget.GridLayout; +import android.widget.ScrollView; +import android.widget.TextView; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + +import java.io.IOException; +import java.text.DecimalFormat; + + +@SuppressWarnings({"UnusedDeclaration"}) +public class AnimatedVectorDrawableDupPerf extends Activity { + + private static final String LOGTAG = "AnimatedVectorDrawableDupPerf"; + protected int[] icon = { + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + R.drawable.animation_vector_linear_progress_bar, + }; + + /** @hide */ + public static AnimatedVectorDrawable create(Resources resources, int rid) { + try { + final XmlPullParser parser = resources.getXml(rid); + final AttributeSet attrs = Xml.asAttributeSet(parser); + int type; + while ((type=parser.next()) != XmlPullParser.START_TAG && + type != XmlPullParser.END_DOCUMENT) { + // Empty loop + } + if (type != XmlPullParser.START_TAG) { + throw new XmlPullParserException("No start tag found"); + } + + final AnimatedVectorDrawable drawable = new AnimatedVectorDrawable(); + drawable.inflate(resources, parser, attrs); + + return drawable; + } catch (XmlPullParserException e) { + Log.e(LOGTAG, "parser error", e); + } catch (IOException e) { + Log.e(LOGTAG, "parser error", e); + } + return null; + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ScrollView scrollView = new ScrollView(this); + GridLayout container = new GridLayout(this); + scrollView.addView(container); + container.setColumnCount(5); + Resources res = this.getResources(); + container.setBackgroundColor(0xFF888888); + AnimatedVectorDrawable []d = new AnimatedVectorDrawable[icon.length]; + long time = android.os.SystemClock.elapsedRealtimeNanos(); + for (int i = 0; i < icon.length; i++) { + d[i] = create(res,icon[i]); + } + time = android.os.SystemClock.elapsedRealtimeNanos()-time; + TextView t = new TextView(this); + DecimalFormat df = new DecimalFormat("#.##"); + t.setText("avgL=" + df.format(time / (icon.length * 1000000.)) + " ms"); + container.addView(t); + time = android.os.SystemClock.elapsedRealtimeNanos(); + for (int i = 0; i < icon.length; i++) { + Button button = new Button(this); + button.setWidth(200); + button.setBackgroundResource(icon[i]); + container.addView(button); + } + setContentView(scrollView); + time = android.os.SystemClock.elapsedRealtimeNanos()-time; + t = new TextView(this); + t.setText("avgS=" + df.format(time / (icon.length * 1000000.)) + " ms"); + container.addView(t); + } + +} |