/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.test.hwui; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.util.AttributeSet; import android.view.View; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.Transformation; import android.view.animation.TranslateAnimation; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.LinearLayout; public class TransformsAndAnimationsActivity extends Activity { Button button1; Button button2; Button button3; Button button1a; Button button2a; Button button3a; Button button1b; Button button2b; Button button3b; Button button4; Button button5; Button button6; Button button7; Button button8; CheckBox layersNoneCB; CheckBox layersHardwareCB; CheckBox layersSoftwareCB; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.transforms_and_animations); button1 = (Button) findViewById(R.id.button1); button2 = (Button) findViewById(R.id.button2); button3 = (Button) findViewById(R.id.button3); button1a = (Button) findViewById(R.id.button1a); button2a = (Button) findViewById(R.id.button2a); button3a = (Button) findViewById(R.id.button3a); button1b = (Button) findViewById(R.id.button1b); button2b = (Button) findViewById(R.id.button2b); button3b = (Button) findViewById(R.id.button3b); button4 = (Button) findViewById(R.id.button4); button5 = (Button) findViewById(R.id.button5); button6 = (Button) findViewById(R.id.button6); button7 = (Button) findViewById(R.id.button7); button8 = (Button) findViewById(R.id.button8); layersNoneCB = (CheckBox) findViewById(R.id.layersNoneCB); layersHardwareCB = (CheckBox) findViewById(R.id.layersHwCB); layersSoftwareCB = (CheckBox) findViewById(R.id.layersSwCB); layersNoneCB.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { setLayerType(View.LAYER_TYPE_NONE); layersHardwareCB.setChecked(false); layersSoftwareCB.setChecked(false); } } }); layersSoftwareCB.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { setLayerType(View.LAYER_TYPE_SOFTWARE); layersHardwareCB.setChecked(false); layersNoneCB.setChecked(false); } } }); layersHardwareCB.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { setLayerType(View.LAYER_TYPE_HARDWARE); layersNoneCB.setChecked(false); layersSoftwareCB.setChecked(false); } } }); button1a.setAlpha(.5f); button2a.setAlpha(.5f); button3a.setAlpha(.5f); button3.setTranslationX(50); button7.setTranslationX(50); button8.setTranslationX(50); final AlphaAnimation alphaAnim = new AlphaAnimation(1, 0); alphaAnim.setDuration(1000); alphaAnim.setRepeatCount(Animation.INFINITE); alphaAnim.setRepeatMode(Animation.REVERSE); final TranslateAnimation transAnim = new TranslateAnimation(0, -50, 0, 0); transAnim.setDuration(1000); transAnim.setRepeatCount(Animation.INFINITE); transAnim.setRepeatMode(Animation.REVERSE); getWindow().getDecorView().postDelayed(new Runnable() { @Override public void run() { button1.startAnimation(alphaAnim); button2.startAnimation(alphaAnim); button3.startAnimation(alphaAnim); button1a.startAnimation(alphaAnim); button2a.startAnimation(alphaAnim); button3a.startAnimation(alphaAnim); button1b.startAnimation(alphaAnim); button2b.startAnimation(alphaAnim); button3b.startAnimation(alphaAnim); startAnimator(button1b); startAnimator(button2b); startAnimator(button3b); button7.startAnimation(transAnim); button8.startAnimation(transAnim); } }, 2000); } private void setLayerType(int layerType) { button1.setLayerType(layerType, null); button2.setLayerType(layerType, null); button3.setLayerType(layerType, null); button1a.setLayerType(layerType, null); button2a.setLayerType(layerType, null); button3a.setLayerType(layerType, null); button1b.setLayerType(layerType, null); button2b.setLayerType(layerType, null); button3b.setLayerType(layerType, null); button4.setLayerType(layerType, null); button5.setLayerType(layerType, null); button6.setLayerType(layerType, null); button7.setLayerType(layerType, null); button8.setLayerType(layerType, null); } private void startAnimator(View target) { ObjectAnimator anim1b = ObjectAnimator.ofFloat(target, View.ALPHA, 0); anim1b.setRepeatCount(ValueAnimator.INFINITE); anim1b.setRepeatMode(ValueAnimator.REVERSE); anim1b.setDuration(1000); anim1b.start(); } public static class MyLayout extends LinearLayout { public MyLayout(Context context) { super(context); setStaticTransformationsEnabled(true); } public MyLayout(Context context, AttributeSet attrs) { super(context, attrs); setStaticTransformationsEnabled(true); } public MyLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setStaticTransformationsEnabled(true); } @Override protected boolean getChildStaticTransformation(View child, Transformation t) { t.clear(); t.setAlpha(.35f); return true; } } }