Home | History | Annotate | Download | only in dynamic
      1 /*
      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  */
     14 
     15 package com.android.test.dynamic;
     16 
     17 import android.app.Activity;
     18 import android.graphics.drawable.Animatable2;
     19 import android.graphics.drawable.AnimatedVectorDrawable;
     20 import android.graphics.drawable.Drawable;
     21 import android.os.Bundle;
     22 import android.util.Log;
     23 import android.view.View;
     24 import android.widget.Button;
     25 import android.widget.GridLayout;
     26 import android.widget.ScrollView;
     27 import android.widget.TextView;
     28 
     29 public class AnimatedVectorDrawableTest extends Activity implements View.OnClickListener {
     30     private static final String LOGCAT = "AnimatedVectorDrawableTest";
     31 
     32     protected int[] icon = {
     33             R.drawable.btn_radio_on_to_off_bundle,
     34             R.drawable.ic_rotate_2_portrait_v2_animation,
     35             R.drawable.ic_signal_airplane_v2_animation,
     36             R.drawable.ic_hourglass_animation,
     37             R.drawable.animation_vector_linear_progress_bar,
     38             R.drawable.animation_vector_drawable_grouping_1,
     39             R.drawable.animation_vector_progress_bar,
     40             R.drawable.animation_vector_drawable_favorite,
     41             R.drawable.animation_vector_drawable01,
     42             // Duplicate to test constant state.
     43             R.drawable.animation_vector_drawable01,
     44     };
     45 
     46     @Override
     47     protected void onCreate(Bundle savedInstanceState) {
     48         final int[] layerTypes = {View.LAYER_TYPE_SOFTWARE, View.LAYER_TYPE_HARDWARE};
     49         final boolean[] forceOnUi = {false, true};
     50         super.onCreate(savedInstanceState);
     51 
     52         ScrollView scrollView = new ScrollView(this);
     53         GridLayout container = new GridLayout(this);
     54         scrollView.addView(container);
     55         container.setColumnCount(layerTypes.length * forceOnUi.length);
     56 
     57         for (int j = 0; j < layerTypes.length; j++) {
     58             for (int k = 0; k < forceOnUi.length; k++) {
     59                 TextView textView = new TextView(this);
     60                 String category = "Layer:"
     61                         + (layerTypes[j] == View.LAYER_TYPE_SOFTWARE ? "SW" : "HW")
     62                         + (forceOnUi[k] == true ? ",forceUI" : "");
     63                 textView.setText(category);
     64                 container.addView(textView);
     65             }
     66         }
     67         for (int i = 0; i < icon.length; i++) {
     68             for (int j = 0; j < layerTypes.length; j++) {
     69                 for (int k = 0; k < forceOnUi.length; k++) {
     70                     Button button = new Button(this);
     71                     button.setWidth(300);
     72                     button.setHeight(300);
     73                     button.setLayerType(layerTypes[j], null);
     74                     button.setBackgroundResource(icon[i]);
     75                     AnimatedVectorDrawable d = (AnimatedVectorDrawable) button.getBackground();
     76                     if (forceOnUi[k] == true) {
     77                         d.forceAnimationOnUI();
     78                     }
     79                     d.registerAnimationCallback(new Animatable2.AnimationCallback() {
     80                         @Override
     81                         public void onAnimationStart(Drawable drawable) {
     82                             Log.v(LOGCAT, "Animator start");
     83                         }
     84 
     85                         @Override
     86                         public void onAnimationEnd(Drawable drawable) {
     87                             Log.v(LOGCAT, "Animator end");
     88                         }
     89                     });
     90 
     91                     container.addView(button);
     92                     button.setOnClickListener(this);
     93                 }
     94             }
     95         }
     96 
     97         setContentView(scrollView);
     98     }
     99 
    100     @Override
    101     public void onClick(View v) {
    102         AnimatedVectorDrawable d = (AnimatedVectorDrawable) v.getBackground();
    103         d.start();
    104     }
    105 }
    106