blob: d029050c2cf4bbe0dc6eb53f300ec4e7248aba1f [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 = {
38 R.drawable.vector_drawable01,
39 R.drawable.vector_drawable02,
40 R.drawable.vector_drawable03,
41 R.drawable.vector_drawable04,
42 R.drawable.vector_drawable05,
43 R.drawable.vector_drawable06,
44 R.drawable.vector_drawable07,
45 R.drawable.vector_drawable08,
46 R.drawable.vector_drawable09,
47 R.drawable.vector_drawable10,
48 R.drawable.vector_drawable11,
49 R.drawable.vector_drawable12,
50 R.drawable.vector_drawable13,
51 R.drawable.vector_drawable14,
52 R.drawable.vector_drawable15,
53 R.drawable.vector_drawable16,
54 R.drawable.vector_drawable17,
55 R.drawable.vector_drawable18,
56 R.drawable.vector_drawable19,
ztenghui452f6ec2014-05-28 09:48:36 -070057 R.drawable.vector_drawable20,
ztenghui4d24caf2014-05-28 15:02:35 -070058 R.drawable.vector_drawable21,
59 R.drawable.vector_drawable22,
ztenghui2af745b2014-05-30 16:23:47 -070060 R.drawable.vector_drawable23,
61 R.drawable.vector_drawable24,
ztenghui8d0d24f2014-07-09 10:49:44 -070062 R.drawable.vector_drawable25,
ztenghuid1c89b12014-08-06 10:42:21 -070063 R.drawable.vector_drawable26,
64 R.drawable.vector_drawable27,
65 R.drawable.vector_drawable28,
ztenghui4cc3e272014-10-07 13:11:22 -070066 R.drawable.vector_drawable29,
ztenghui5e7a29f2014-11-12 16:19:03 -080067 R.drawable.vector_drawable30,
John Hofordabb7d132014-02-24 15:21:42 -080068 };
69
ztenghui996f22f2014-11-21 11:32:29 -080070 public static VectorDrawable create(Resources resources, int rid) {
71 try {
72 final XmlPullParser parser = resources.getXml(rid);
73 final AttributeSet attrs = Xml.asAttributeSet(parser);
74 int type;
75 while ((type=parser.next()) != XmlPullParser.START_TAG &&
76 type != XmlPullParser.END_DOCUMENT) {
77 // Empty loop
78 }
79 if (type != XmlPullParser.START_TAG) {
80 throw new XmlPullParserException("No start tag found");
81 }
82
83 final VectorDrawable drawable = new VectorDrawable();
84 drawable.inflate(resources, parser, attrs);
85
86 return drawable;
87 } catch (XmlPullParserException e) {
88 Log.e(LOGCAT, "parser error", e);
89 } catch (IOException e) {
90 Log.e(LOGCAT, "parser error", e);
91 }
92 return null;
93 }
94
John Hofordabb7d132014-02-24 15:21:42 -080095 @Override
96 protected void onCreate(Bundle savedInstanceState) {
97 super.onCreate(savedInstanceState);
98 ScrollView scrollView = new ScrollView(this);
99 GridLayout container = new GridLayout(this);
100 scrollView.addView(container);
101 container.setColumnCount(5);
102 Resources res = this.getResources();
103 container.setBackgroundColor(0xFF888888);
104 VectorDrawable []d = new VectorDrawable[icon.length];
105 long time = android.os.SystemClock.elapsedRealtimeNanos();
106 for (int i = 0; i < icon.length; i++) {
ztenghui996f22f2014-11-21 11:32:29 -0800107 d[i] = create(res,icon[i]);
John Hofordabb7d132014-02-24 15:21:42 -0800108 }
109 time = android.os.SystemClock.elapsedRealtimeNanos()-time;
110 TextView t = new TextView(this);
111 DecimalFormat df = new DecimalFormat("#.##");
112 t.setText("avgL=" + df.format(time / (icon.length * 1000000.)) + " ms");
John Hofordabb7d132014-02-24 15:21:42 -0800113 container.addView(t);
114 time = android.os.SystemClock.elapsedRealtimeNanos();
115 for (int i = 0; i < icon.length; i++) {
116 Button button = new Button(this);
117 button.setWidth(200);
John Hofordabb7d132014-02-24 15:21:42 -0800118 button.setBackgroundResource(icon[i]);
119 container.addView(button);
John Hofordabb7d132014-02-24 15:21:42 -0800120 }
121 setContentView(scrollView);
122 time = android.os.SystemClock.elapsedRealtimeNanos()-time;
123 t = new TextView(this);
124 t.setText("avgS=" + df.format(time / (icon.length * 1000000.)) + " ms");
John Hofordabb7d132014-02-24 15:21:42 -0800125 container.addView(t);
126 }
John Hofordabb7d132014-02-24 15:21:42 -0800127}