14fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui/* 24fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui * Copyright (C) 2015 The Android Open Source Project 34fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui * 44fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui * Licensed under the Apache License, Version 2.0 (the "License"); 54fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui * you may not use this file except in compliance with the License. 64fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui * You may obtain a copy of the License at 74fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui * 84fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui * http://www.apache.org/licenses/LICENSE-2.0 94fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui * 104fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui * Unless required by applicable law or agreed to in writing, software 114fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui * distributed under the License is distributed on an "AS IS" BASIS, 124fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui * See the License for the specific language governing permissions and 144fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui * limitations under the License. 154fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui */ 164fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui 174fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghuipackage android.support.test.vectordrawable; 184fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui 194fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghuiimport android.animation.ObjectAnimator; 204fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghuiimport android.app.Activity; 214fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghuiimport android.content.res.Resources; 224fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghuiimport android.os.Bundle; 234fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghuiimport android.support.graphics.drawable.AnimatedVectorDrawableCompat; 244fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghuiimport android.util.Log; 254fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghuiimport android.view.View; 264fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghuiimport android.widget.Button; 274fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghuiimport android.widget.LinearLayout; 284fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghuiimport android.widget.ScrollView; 294fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghuiimport android.widget.TextView; 304fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui 314fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghuiimport java.text.DecimalFormat; 324fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui 334fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghuipublic class TestAVDActivity extends Activity implements View.OnClickListener{ 344fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui private static final String LOG_TAG = "TestActivity"; 354fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui 364fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui private static final String LOGCAT = "VectorDrawable1"; 374fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui protected int[] icon = { 384fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui R.drawable.animation_vector_drawable_grouping_1, 394fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui R.drawable.animation_vector_progress_bar, 404fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui }; 414fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui 424fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui 434fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui @Override 444fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui protected void onCreate(Bundle savedInstanceState) { 454fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui ObjectAnimator oa = new ObjectAnimator(); 464fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui super.onCreate(savedInstanceState); 474fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui ScrollView scrollView = new ScrollView(this); 484fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui LinearLayout container = new LinearLayout(this); 494fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui scrollView.addView(container); 504fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui container.setOrientation(LinearLayout.VERTICAL); 514fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui Resources res = this.getResources(); 524fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui container.setBackgroundColor(0xFF888888); 534fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui AnimatedVectorDrawableCompat []d = new AnimatedVectorDrawableCompat[icon.length]; 544fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui long time = android.os.SystemClock.currentThreadTimeMillis(); 554fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui for (int i = 0; i < icon.length; i++) { 564fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui d[i] = AnimatedVectorDrawableCompat.create(this, icon[i]); 574fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui } 584fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui time = android.os.SystemClock.currentThreadTimeMillis()-time; 594fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui TextView t = new TextView(this); 604fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui DecimalFormat df = new DecimalFormat("#.##"); 614fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui t.setText("avgL=" + df.format(time / (icon.length)) + " ms"); 624fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui container.addView(t); 634fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui 644fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui addDrawableButtons(container, d); 654fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui 664fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui // Now test constant state and mutate a bit. 674fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui AnimatedVectorDrawableCompat []copies = new AnimatedVectorDrawableCompat[3]; 684fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui copies[0] = (AnimatedVectorDrawableCompat) d[0].getConstantState().newDrawable(); 694fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui copies[1] = (AnimatedVectorDrawableCompat) d[0].getConstantState().newDrawable(); 704fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui copies[2] = (AnimatedVectorDrawableCompat) d[0].getConstantState().newDrawable(); 714fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui copies[0].setAlpha(128); 724fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui 734fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui // Expect to see the copies[0, 1] are showing alpha 128, and [2] are showing 255. 744fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui copies[2].mutate(); 754fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui copies[2].setAlpha(255); 764fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui 774fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui addDrawableButtons(container, copies); 784fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui 794fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui setContentView(scrollView); 804fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui } 814fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui 824fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui private void addDrawableButtons(LinearLayout container, AnimatedVectorDrawableCompat[] d) { 834fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui for (int i = 0; i < d.length; i++) { 844fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui Button button = new Button(this); 854fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui button.setWidth(200); 864fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui button.setHeight(200); 874fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui button.setBackgroundDrawable(d[i]); 884fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui container.addView(button); 894fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui button.setOnClickListener(this); 904fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui } 914fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui } 924fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui 934fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui @Override 944fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui public void onClick(View v) { 954fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui AnimatedVectorDrawableCompat d = (AnimatedVectorDrawableCompat) v.getBackground(); 964fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui d.start(); 974fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui } 984fcaa70c2362e58a3fb30d140f0a0eeda8e35b44ztenghui} 99