17dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase/* 27dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase* Copyright (C) 2011 The Android Open Source Project 37dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase* 47dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase* Licensed under the Apache License, Version 2.0 (the "License"); 57dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase* you may not use this file except in compliance with the License. 67dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase* You may obtain a copy of the License at 77dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase* 87dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase* http://www.apache.org/licenses/LICENSE-2.0 97dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase* 107dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase* Unless required by applicable law or agreed to in writing, software 117dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase* distributed under the License is distributed on an "AS IS" BASIS, 127dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase* See the License for the specific language governing permissions and 147dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase* limitations under the License. 157dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase*/ 167dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haasepackage android.animation; 177dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase 188b699792b677bd4dd8442b32641ac09d48fdd79cChet Haaseimport android.os.Handler; 198b699792b677bd4dd8442b32641ac09d48fdd79cChet Haaseimport android.test.suitebuilder.annotation.MediumTest; 208b699792b677bd4dd8442b32641ac09d48fdd79cChet Haaseimport android.test.suitebuilder.annotation.SmallTest; 217dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haaseimport android.widget.Button; 227dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haaseimport com.android.frameworks.coretests.R; 237dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase 248b699792b677bd4dd8442b32641ac09d48fdd79cChet Haaseimport java.util.concurrent.TimeUnit; 258b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase 267dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase/** 277dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase * Listener tests for AnimatorSet. 287dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase */ 297dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haasepublic class AnimatorSetEventsTest extends EventsTest { 307dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase 318b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase Button button; 328b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase ObjectAnimator xAnim = ObjectAnimator.ofFloat(this, "translationX", 0, 100); 338b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase ObjectAnimator yAnim = ObjectAnimator.ofFloat(this, "translationY", 0, 100); 348b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase 357dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase @Override 367dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase public void setUp() throws Exception { 378b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase button = (Button) getActivity().findViewById(R.id.animatingButton); 387dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase mAnimator = new AnimatorSet(); 397dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase ((AnimatorSet)mAnimator).playSequentially(xAnim, yAnim); 407dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase 417dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase super.setUp(); 427dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase } 437dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase 448b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase @Override 458b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase protected long getTimeout() { 468b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase return (xAnim.getDuration() + yAnim.getDuration()) + 478b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase (xAnim.getStartDelay() + yAnim.getStartDelay()) + 488b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase ANIM_DELAY + FUTURE_RELEASE_DELAY; 498b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase } 508b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase 518b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase /** 528b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase * Tests that an AnimatorSet can be correctly canceled during the delay of one of 538b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase * its children 548b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase */ 558b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase @MediumTest 568b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase public void testPlayingCancelDuringChildDelay() throws Exception { 578b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase yAnim.setStartDelay(500); 588b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase final AnimatorSet animSet = new AnimatorSet(); 598b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase animSet.playSequentially(xAnim, yAnim); 608b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase mFutureListener = new FutureReleaseListener(mFuture); 618b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase getActivity().runOnUiThread(new Runnable() { 628b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase @Override 638b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase public void run() { 648b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase try { 658b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase Handler handler = new Handler(); 668b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase animSet.addListener(mFutureListener); 678b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase mRunning = true; 688b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase animSet.start(); 698b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase handler.postDelayed(new Canceler(animSet, mFuture), ANIM_DURATION + 250); 708b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase } catch (junit.framework.AssertionFailedError e) { 718b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase mFuture.setException(new RuntimeException(e)); 728b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase } 738b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase } 748b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase }); 758b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase mFuture.get(getTimeout(), TimeUnit.MILLISECONDS); 768b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase } 778b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase 788b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase public void setTranslationX(float value) { 798b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase button.setTranslationX(value); 808b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase } 818b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase 828b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase 838b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase public void setTranslationY(float value) { 848b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase button.setTranslationY(value); 858b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase } 868b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase 878b699792b677bd4dd8442b32641ac09d48fdd79cChet Haase 887dfacdb1c820f955cb3cd6032ff5fbc2dd7d9df5Chet Haase} 89