1171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy/*
2171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy * Copyright (C) 2011 The Android Open Source Project
3171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy *
4171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy * Licensed under the Apache License, Version 2.0 (the "License");
5171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy * you may not use this file except in compliance with the License.
6171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy * You may obtain a copy of the License at
7171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy *
8171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy *      http://www.apache.org/licenses/LICENSE-2.0
9171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy *
10171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy * Unless required by applicable law or agreed to in writing, software
11171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy * distributed under the License is distributed on an "AS IS" BASIS,
12171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy * See the License for the specific language governing permissions and
14171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy * limitations under the License.
15171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy */
16171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
17171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guypackage com.android.test.hwui;
18171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
19171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guyimport android.animation.ObjectAnimator;
20171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guyimport android.app.Activity;
21171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guyimport android.content.Context;
22171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guyimport android.content.res.Resources;
23171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guyimport android.graphics.Paint;
24171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guyimport android.graphics.PorterDuff;
25171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guyimport android.graphics.PorterDuffColorFilter;
26171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guyimport android.os.Bundle;
27171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guyimport android.util.DisplayMetrics;
28171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guyimport android.view.View;
29171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guyimport android.view.ViewGroup;
30171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guyimport android.widget.ArrayAdapter;
31171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guyimport android.widget.ListView;
32171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guyimport android.widget.TextView;
33171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
34171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy@SuppressWarnings({"UnusedDeclaration"})
35171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guypublic class ViewLayersActivity extends Activity {
36171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy    @Override
37171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy    protected void onCreate(Bundle savedInstanceState) {
38171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy        super.onCreate(savedInstanceState);
39171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
40171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy        setContentView(R.layout.view_layers);
41171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
42171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy        setupList(R.id.list1);
43171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy        setupList(R.id.list2);
44171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy        setupList(R.id.list3);
45171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
46171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy        getWindow().getDecorView().postDelayed(new Runnable() {
47171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            @Override
48171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            public void run() {
49171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                final View leftList = findViewById(R.id.list1);
50171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                final View middleList = findViewById(R.id.list2);
51171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                final View rightList = findViewById(R.id.list3);
52171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
53171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                final ObjectAnimator moveRight = ObjectAnimator.ofFloat(leftList,
54171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                        "x", 0, rightList.getLeft());
55171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                moveRight.setDuration(1500);
56171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                moveRight.setRepeatCount(ObjectAnimator.INFINITE);
57171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                moveRight.setRepeatMode(ObjectAnimator.REVERSE);
58171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
59171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                final ObjectAnimator moveLeft = ObjectAnimator.ofFloat(rightList,
60171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                        "x", rightList.getLeft(), 0);
61171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                moveLeft.setDuration(1500);
62171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                moveLeft.setRepeatCount(ObjectAnimator.INFINITE);
63171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                moveLeft.setRepeatMode(ObjectAnimator.REVERSE);
64171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
65171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                final ObjectAnimator rotate = ObjectAnimator.ofFloat(middleList,
66171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                        "rotationY", 0, 360);
67171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                rotate.setDuration(3000);
68171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                rotate.setRepeatCount(ObjectAnimator.INFINITE);
69171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                rotate.setRepeatMode(ObjectAnimator.REVERSE);
70171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
71171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                Paint p = new Paint();
72171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                p.setColorFilter(new PorterDuffColorFilter(0xffff0000, PorterDuff.Mode.MULTIPLY));
73171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
74171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                Paint p2 = new Paint();
75171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                p2.setAlpha(127);
76171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
77171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                Paint p3 = new Paint();
78171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                p3.setColorFilter(new PorterDuffColorFilter(0xff00ff00, PorterDuff.Mode.MULTIPLY));
79171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
80171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                leftList.setLayerType(View.LAYER_TYPE_SOFTWARE, p);
81171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                leftList.setAlpha(0.5f);
82171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                middleList.setLayerType(View.LAYER_TYPE_HARDWARE, p3);
83171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                middleList.setAlpha(0.5f);
84171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                rightList.setLayerType(View.LAYER_TYPE_SOFTWARE, p2);
85171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
86171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                moveRight.start();
87171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                moveLeft.start();
88171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                rotate.start();
89171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            }
90171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy        }, 2000);
91171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy    }
92171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
93171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy    private void setupList(int listId) {
94171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy        final ListView list = (ListView) findViewById(listId);
95171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy        list.setAdapter(new SimpleListAdapter(this));
96171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy    }
97171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
98171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy    private static class SimpleListAdapter extends ArrayAdapter<String> {
99171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy        public SimpleListAdapter(Context context) {
100171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            super(context, android.R.layout.simple_list_item_1, DATA_LIST);
101171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy        }
102171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
103171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy        @Override
104171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy        public View getView(int position, View convertView, ViewGroup parent) {
105171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            TextView v = (TextView) super.getView(position, convertView, parent);
106171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            final Resources r = getContext().getResources();
107171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            final DisplayMetrics metrics = r.getDisplayMetrics();
108171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            v.setCompoundDrawablePadding((int) (6 * metrics.density + 0.5f));
109171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            v.setCompoundDrawablesWithIntrinsicBounds(r.getDrawable(R.drawable.icon),
110171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy                    null, null, null);
111171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            return v;
112171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy        }
113171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy    }
114171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy
115171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy    private static final String[] DATA_LIST = {
116171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
117171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
118171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
119171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
120171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
121171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil",
122171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "British Indian Ocean Territory", "British Virgin Islands", "Brunei", "Bulgaria",
123171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Burkina Faso", "Burundi", "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
124171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
125171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
126171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
127171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
128171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
129171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
130171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
131171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
132171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
133171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
134171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
135171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
136171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
137171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
138171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
139171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
140171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
141171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
142171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
143171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
144171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
145171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
146171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
147171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
148171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
149171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
150171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
151171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
152171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
153171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Ukraine", "United Arab Emirates", "United Kingdom",
154171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
155171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
156171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy            "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
157171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy    };
158171c592f0b7066acf279863c8a52ddabea49d3dbRomain Guy}
159