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