blob: 7172147406981947ce71a08db3e044ce6a7b67e4 [file] [log] [blame]
John Hofordabb7d132014-02-24 15:21:42 -08001/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5 * in compliance with the License. You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software distributed under the License
10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11 * or implied. See the License for the specific language governing permissions and limitations under
12 * the License.
13 */
14package com.android.test.dynamic;
15
16import android.app.Activity;
17import android.content.res.Resources;
18import android.graphics.drawable.VectorDrawable;
19import android.os.Bundle;
ztenghui996f22f2014-11-21 11:32:29 -080020import android.util.AttributeSet;
21import android.util.Log;
22import android.util.Xml;
John Hofordabb7d132014-02-24 15:21:42 -080023import android.widget.TextView;
24import android.widget.Button;
25import android.widget.GridLayout;
26import android.widget.ScrollView;
ztenghui4d24caf2014-05-28 15:02:35 -070027
ztenghui996f22f2014-11-21 11:32:29 -080028import org.xmlpull.v1.XmlPullParser;
29import org.xmlpull.v1.XmlPullParserException;
30
31import java.io.IOException;
John Hofordabb7d132014-02-24 15:21:42 -080032import java.text.DecimalFormat;
33
34@SuppressWarnings({"UnusedDeclaration"})
ztenghui498213a2014-05-05 16:26:22 -070035public class VectorDrawablePerformance extends Activity {
John Hofordabb7d132014-02-24 15:21:42 -080036 private static final String LOGCAT = "VectorDrawable1";
37 protected int[] icon = {
Teng-Hui Zhudbee9bb2015-12-15 11:01:27 -080038 R.drawable.vector_icon_gradient_1,
39 R.drawable.vector_icon_gradient_2,
40 R.drawable.vector_icon_gradient_3,
Teng-Hui Zhu9b85c0b2016-01-28 11:04:48 -080041 R.drawable.vector_icon_state_list_simple,
42 R.drawable.vector_icon_state_list_theme,
John Hofordabb7d132014-02-24 15:21:42 -080043 R.drawable.vector_drawable01,
44 R.drawable.vector_drawable02,
45 R.drawable.vector_drawable03,
46 R.drawable.vector_drawable04,
47 R.drawable.vector_drawable05,
48 R.drawable.vector_drawable06,
49 R.drawable.vector_drawable07,
50 R.drawable.vector_drawable08,
51 R.drawable.vector_drawable09,
52 R.drawable.vector_drawable10,
53 R.drawable.vector_drawable11,
54 R.drawable.vector_drawable12,
55 R.drawable.vector_drawable13,
56 R.drawable.vector_drawable14,
57 R.drawable.vector_drawable15,
58 R.drawable.vector_drawable16,
59 R.drawable.vector_drawable17,
60 R.drawable.vector_drawable18,
61 R.drawable.vector_drawable19,
ztenghui452f6ec2014-05-28 09:48:36 -070062 R.drawable.vector_drawable20,
ztenghui4d24caf2014-05-28 15:02:35 -070063 R.drawable.vector_drawable21,
64 R.drawable.vector_drawable22,
ztenghui2af745b2014-05-30 16:23:47 -070065 R.drawable.vector_drawable23,
66 R.drawable.vector_drawable24,
ztenghui8d0d24f2014-07-09 10:49:44 -070067 R.drawable.vector_drawable25,
ztenghuid1c89b12014-08-06 10:42:21 -070068 R.drawable.vector_drawable26,
69 R.drawable.vector_drawable27,
70 R.drawable.vector_drawable28,
ztenghui4cc3e272014-10-07 13:11:22 -070071 R.drawable.vector_drawable29,
ztenghui5e7a29f2014-11-12 16:19:03 -080072 R.drawable.vector_drawable30,
ztenghui9af77a4c2015-04-01 16:38:44 -070073 R.drawable.vector_drawable_scale0,
74 R.drawable.vector_drawable_scale1,
75 R.drawable.vector_drawable_scale2,
76 R.drawable.vector_drawable_scale3,
John Hofordabb7d132014-02-24 15:21:42 -080077 };
78
ztenghui996f22f2014-11-21 11:32:29 -080079 public static VectorDrawable create(Resources resources, int rid) {
80 try {
81 final XmlPullParser parser = resources.getXml(rid);
82 final AttributeSet attrs = Xml.asAttributeSet(parser);
83 int type;
84 while ((type=parser.next()) != XmlPullParser.START_TAG &&
85 type != XmlPullParser.END_DOCUMENT) {
86 // Empty loop
87 }
88 if (type != XmlPullParser.START_TAG) {
89 throw new XmlPullParserException("No start tag found");
90 }
91
92 final VectorDrawable drawable = new VectorDrawable();
93 drawable.inflate(resources, parser, attrs);
94
95 return drawable;
96 } catch (XmlPullParserException e) {
97 Log.e(LOGCAT, "parser error", e);
98 } catch (IOException e) {
99 Log.e(LOGCAT, "parser error", e);
100 }
101 return null;
102 }
103
John Hofordabb7d132014-02-24 15:21:42 -0800104 @Override
105 protected void onCreate(Bundle savedInstanceState) {
106 super.onCreate(savedInstanceState);
107 ScrollView scrollView = new ScrollView(this);
108 GridLayout container = new GridLayout(this);
109 scrollView.addView(container);
Teng-Hui Zhudbee9bb2015-12-15 11:01:27 -0800110 container.setColumnCount(4);
John Hofordabb7d132014-02-24 15:21:42 -0800111 Resources res = this.getResources();
112 container.setBackgroundColor(0xFF888888);
113 VectorDrawable []d = new VectorDrawable[icon.length];
114 long time = android.os.SystemClock.elapsedRealtimeNanos();
115 for (int i = 0; i < icon.length; i++) {
ztenghui996f22f2014-11-21 11:32:29 -0800116 d[i] = create(res,icon[i]);
John Hofordabb7d132014-02-24 15:21:42 -0800117 }
118 time = android.os.SystemClock.elapsedRealtimeNanos()-time;
119 TextView t = new TextView(this);
120 DecimalFormat df = new DecimalFormat("#.##");
121 t.setText("avgL=" + df.format(time / (icon.length * 1000000.)) + " ms");
John Hofordabb7d132014-02-24 15:21:42 -0800122 container.addView(t);
123 time = android.os.SystemClock.elapsedRealtimeNanos();
124 for (int i = 0; i < icon.length; i++) {
125 Button button = new Button(this);
126 button.setWidth(200);
John Hofordabb7d132014-02-24 15:21:42 -0800127 button.setBackgroundResource(icon[i]);
128 container.addView(button);
John Hofordabb7d132014-02-24 15:21:42 -0800129 }
130 setContentView(scrollView);
131 time = android.os.SystemClock.elapsedRealtimeNanos()-time;
132 t = new TextView(this);
133 t.setText("avgS=" + df.format(time / (icon.length * 1000000.)) + " ms");
John Hofordabb7d132014-02-24 15:21:42 -0800134 container.addView(t);
135 }
John Hofordabb7d132014-02-24 15:21:42 -0800136}