1e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase/*
2e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase * Copyright (C) 2012 The Android Open Source Project
3e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase *
4e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase * Licensed under the Apache License, Version 2.0 (the "License");
5e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase * you may not use this file except in compliance with the License.
6e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase * You may obtain a copy of the License at
7e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase *
8e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase *      http://www.apache.org/licenses/LICENSE-2.0
9e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase *
10e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase * Unless required by applicable law or agreed to in writing, software
11e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase * distributed under the License is distributed on an "AS IS" BASIS,
12e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase * See the License for the specific language governing permissions and
14e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase * limitations under the License.
15e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase */
16e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase
17e816baea651476aca4407200d4a5e629b9ab8dfaChet Haasepackage com.android.test.hwui;
18e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase
19e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase
20e816baea651476aca4407200d4a5e629b9ab8dfaChet Haaseimport android.app.Activity;
21e816baea651476aca4407200d4a5e629b9ab8dfaChet Haaseimport android.os.Bundle;
22e816baea651476aca4407200d4a5e629b9ab8dfaChet Haaseimport android.view.ViewGroup;
23e816baea651476aca4407200d4a5e629b9ab8dfaChet Haaseimport android.widget.LinearLayout;
24e816baea651476aca4407200d4a5e629b9ab8dfaChet Haaseimport android.widget.ScrollView;
25e816baea651476aca4407200d4a5e629b9ab8dfaChet Haaseimport android.widget.TextView;
26e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase
27e816baea651476aca4407200d4a5e629b9ab8dfaChet Haaseimport static android.widget.LinearLayout.LayoutParams;
28e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase
29e816baea651476aca4407200d4a5e629b9ab8dfaChet Haasepublic class GlyphCacheActivity extends Activity {
30e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase
31e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase    private static final String mCharacterSet = "abcdefghijklmnopqrstuvwxyz" +
32e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase            "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "0123456789" + "~!@#$%^&*()_+-={}[]:\";'<>?,./";
33e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase    private int mTotalChars = 0;
34e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase
35e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase    @Override
36e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase    protected void onCreate(Bundle savedInstanceState) {
37e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        super.onCreate(savedInstanceState);
38e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase
39e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        ScrollView scrollView = new ScrollView(this);
40e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        scrollView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
41e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase                ViewGroup.LayoutParams.MATCH_PARENT));
42e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        LinearLayout layout = new LinearLayout(this);
43e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        layout.setOrientation(LinearLayout.VERTICAL);
44e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        layout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
45e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase                ViewGroup.LayoutParams.WRAP_CONTENT));
46e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        scrollView.addView(layout);
47e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase
48e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        while (mTotalChars < 10000) {
49e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase            layout.addView(createTextView());
50e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        }
51e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        setContentView(scrollView);
52e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase    }
53e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase
54e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase    private TextView createTextView() {
55e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        TextView textview = new TextView(this);
56e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        textview.setTextSize(6 + (int) (Math.random() * 5) * 10);
57e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        textview.setTextColor(0xff << 24 | (int) (Math.random() * 255) << 16 |
58e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase                (int) (Math.random() * 255) << 8 | (int) (Math.random() * 255) << 16);
59e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        textview.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
60e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase                ViewGroup.LayoutParams.WRAP_CONTENT));
61e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        int numChars = 5 + (int) (Math.random() * 10);
62e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        mTotalChars += numChars;
63e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        textview.setText(createString(numChars));
64e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase
65e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        return textview;
66e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase    }
67e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase
68e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase    private String createString(int length) {
69e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        StringBuilder sb = new StringBuilder();
70e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        for (int i = 0; i < length; i++) {
71e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase            sb.append(mCharacterSet.charAt((int)(Math.random() * mCharacterSet.length())));
72e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        }
73e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase        return sb.toString();
74e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase    }
75e816baea651476aca4407200d4a5e629b9ab8dfaChet Haase}
76