/* * Copyright (C) 2014 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.Animator; import android.animation.Animator.AnimatorListener; import android.animation.AnimatorSet; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewAnimationUtils; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.ProgressBar; public class RevealActivity extends Activity implements OnClickListener { private static final int DURATION = 800; private boolean mShouldBlock; private int mIteration = 0; private AnimatorListener mListener = new AnimatorListener() { @Override public void onAnimationStart(Animator animation) { Log.d("Reveal", "onAnimatorStart " + animation); } @Override public void onAnimationRepeat(Animator animation) { Log.d("Reveal", "onAnimationRepeat " + animation); } @Override public void onAnimationEnd(Animator animation) { Log.d("Reveal", "onAnimationEnd " + animation); } @Override public void onAnimationCancel(Animator animation) { Log.d("Reveal", "onAnimationCancel " + animation); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); ProgressBar spinner = new ProgressBar(this, null, android.R.attr.progressBarStyleLarge); layout.addView(spinner, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); View revealView = new MyView(this); layout.addView(revealView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); setContentView(layout); revealView.setOnClickListener(this); } @Override public void onClick(View view) { Animator animator = ViewAnimationUtils.createCircularReveal(view, view.getWidth() / 2, view.getHeight() / 2, 0, Math.max(view.getWidth(), view.getHeight())); Log.d("Reveal", "Calling start..."); animator.addListener(mListener); if (mIteration < 2) { animator.setDuration(DURATION); animator.start(); } else { AnimatorSet set = new AnimatorSet(); set.playTogether(animator); set.setDuration(DURATION); set.addListener(mListener); set.start(); } mIteration = (mIteration + 1) % 4; mShouldBlock = !mShouldBlock; if (mShouldBlock) { view.post(sBlockThread); } } private final static Runnable sBlockThread = new Runnable() { @Override public void run() { try { Thread.sleep(DURATION); } catch (InterruptedException e) { } } }; static class MyView extends View { public MyView(Context context) { super(context); } @Override protected void onDraw(Canvas canvas) { canvas.drawColor(Color.RED); } } }