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 */ 14package android.support.v17.leanback.transition; 15 16import android.content.Context; 17import android.os.Build; 18import android.view.Gravity; 19import android.view.View; 20import android.view.ViewGroup; 21import android.view.Window; 22 23import java.util.ArrayList; 24 25/** 26 * Helper for view transitions. 27 * @hide 28 */ 29public final class TransitionHelper { 30 31 public static final int FADE_IN = 0x1; 32 public static final int FADE_OUT = 0x2; 33 34 public static final int SLIDE_LEFT = Gravity.LEFT; 35 public static final int SLIDE_TOP = Gravity.TOP; 36 public static final int SLIDE_RIGHT = Gravity.RIGHT; 37 public static final int SLIDE_BOTTOM = Gravity.BOTTOM; 38 39 private static TransitionHelperVersionImpl sImpl; 40 41 /** 42 * Gets whether the system supports Transition animations. 43 * 44 * @return True if Transition animations are supported. 45 */ 46 public static boolean systemSupportsTransitions() { 47 if (Build.VERSION.SDK_INT >= 19) { 48 // Supported on Android 4.4 or later. 49 return true; 50 } 51 return false; 52 } 53 54 /** 55 * Returns true if system supports entrance Transition animations. 56 */ 57 public static boolean systemSupportsEntranceTransitions() { 58 return Build.VERSION.SDK_INT >= 21; 59 } 60 61 /** 62 * Interface implemented by classes that support Transition animations. 63 */ 64 static interface TransitionHelperVersionImpl { 65 66 public void setEnterTransition(android.app.Fragment fragment, Object transition); 67 68 public void setExitTransition(android.app.Fragment fragment, Object transition); 69 70 public void setSharedElementEnterTransition(android.app.Fragment fragment, 71 Object transition); 72 73 public void addSharedElement(android.app.FragmentTransaction ft, 74 View view, String transitionName); 75 76 public Object getSharedElementEnterTransition(Window window); 77 78 public Object getSharedElementReturnTransition(Window window); 79 80 public Object getSharedElementExitTransition(Window window); 81 82 public Object getSharedElementReenterTransition(Window window); 83 84 public Object getEnterTransition(Window window); 85 86 public Object getReturnTransition(Window window); 87 88 public Object getExitTransition(Window window); 89 90 public Object getReenterTransition(Window window); 91 92 public Object createScene(ViewGroup sceneRoot, Runnable r); 93 94 public Object createAutoTransition(); 95 96 public Object createSlide(int slideEdge); 97 98 public Object createScale(); 99 100 public Object createFadeTransition(int fadingMode); 101 102 public Object createChangeTransform(); 103 104 public Object createChangeBounds(boolean reparent); 105 106 public Object createFadeAndShortSlide(int edge); 107 108 public Object createFadeAndShortSlide(int edge, float distance); 109 110 public void setChangeBoundsStartDelay(Object changeBounds, View view, int startDelay); 111 112 public void setChangeBoundsStartDelay(Object changeBounds, int viewId, int startDelay); 113 114 public void setChangeBoundsStartDelay(Object changeBounds, String className, 115 int startDelay); 116 117 public void setChangeBoundsDefaultStartDelay(Object changeBounds, int startDelay); 118 119 public Object createTransitionSet(boolean sequential); 120 121 public void addTransition(Object transitionSet, Object transition); 122 123 public void addTransitionListener(Object transition, TransitionListener listener); 124 125 public void removeTransitionListener(Object transition, TransitionListener listener); 126 127 public void runTransition(Object scene, Object transition); 128 129 public void exclude(Object transition, int targetId, boolean exclude); 130 131 public void exclude(Object transition, View targetView, boolean exclude); 132 133 public void excludeChildren(Object transition, int targetId, boolean exclude); 134 135 public void excludeChildren(Object transition, View target, boolean exclude); 136 137 public void include(Object transition, int targetId); 138 139 public void include(Object transition, View targetView); 140 141 public void setStartDelay(Object transition, long startDelay); 142 143 public void setDuration(Object transition, long duration); 144 145 public void setInterpolator(Object transition, Object timeInterpolator); 146 147 public void addTarget(Object transition, View view); 148 149 public Object createDefaultInterpolator(Context context); 150 151 public Object loadTransition(Context context, int resId); 152 153 public void beginDelayedTransition(ViewGroup sceneRoot, Object transitionObject); 154 155 public void setTransitionGroup(ViewGroup viewGroup, boolean transitionGroup); 156 } 157 158 /** 159 * Interface used when we do not support Transition animations. 160 */ 161 static class TransitionHelperStubImpl implements TransitionHelperVersionImpl { 162 163 private static class TransitionStub { 164 ArrayList<TransitionListener> mTransitionListeners; 165 } 166 167 public void setEnterTransition(android.app.Fragment fragment, Object transition) { 168 } 169 170 public void setExitTransition(android.app.Fragment fragment, Object transition) { 171 } 172 173 public void setSharedElementEnterTransition(android.app.Fragment fragment, 174 Object transition) { 175 } 176 177 public void addSharedElement(android.app.FragmentTransaction ft, 178 View view, String transitionName) { 179 } 180 181 @Override 182 public Object getSharedElementEnterTransition(Window window) { 183 return null; 184 } 185 186 @Override 187 public Object getSharedElementReturnTransition(Window window) { 188 return null; 189 } 190 191 @Override 192 public Object getSharedElementExitTransition(Window window) { 193 return null; 194 } 195 196 @Override 197 public Object getSharedElementReenterTransition(Window window) { 198 return null; 199 } 200 201 @Override 202 public Object getEnterTransition(Window window) { 203 return null; 204 } 205 206 @Override 207 public Object getReturnTransition(Window window) { 208 return null; 209 } 210 211 @Override 212 public Object getExitTransition(Window window) { 213 return null; 214 } 215 216 @Override 217 public Object getReenterTransition(Window window) { 218 return null; 219 } 220 221 @Override 222 public Object createScene(ViewGroup sceneRoot, Runnable r) { 223 return r; 224 } 225 226 @Override 227 public Object createAutoTransition() { 228 return new TransitionStub(); 229 } 230 231 @Override 232 public Object createFadeTransition(int fadingMode) { 233 return new TransitionStub(); 234 } 235 236 @Override 237 public Object createChangeBounds(boolean reparent) { 238 return new TransitionStub(); 239 } 240 241 @Override 242 public Object createChangeTransform() { 243 return new TransitionStub(); 244 } 245 246 @Override 247 public Object createFadeAndShortSlide(int edge) { 248 return new TransitionStub(); 249 } 250 251 @Override 252 public Object createFadeAndShortSlide(int edge, float distance) { 253 return new TransitionStub(); 254 } 255 256 @Override 257 public Object createSlide(int slideEdge) { 258 return new TransitionStub(); 259 } 260 261 @Override 262 public Object createScale() { 263 return new TransitionStub(); 264 } 265 266 @Override 267 public void setChangeBoundsStartDelay(Object changeBounds, View view, int startDelay) { 268 } 269 270 @Override 271 public void setChangeBoundsStartDelay(Object changeBounds, int viewId, int startDelay) { 272 } 273 274 @Override 275 public void setChangeBoundsStartDelay(Object changeBounds, String className, 276 int startDelay) { 277 } 278 279 @Override 280 public void setChangeBoundsDefaultStartDelay(Object changeBounds, int startDelay) { 281 } 282 283 @Override 284 public Object createTransitionSet(boolean sequential) { 285 return new TransitionStub(); 286 } 287 288 @Override 289 public void addTransition(Object transitionSet, Object transition) { 290 } 291 292 @Override 293 public void exclude(Object transition, int targetId, boolean exclude) { 294 } 295 296 @Override 297 public void exclude(Object transition, View targetView, boolean exclude) { 298 } 299 300 @Override 301 public void excludeChildren(Object transition, int targetId, boolean exclude) { 302 } 303 304 @Override 305 public void excludeChildren(Object transition, View targetView, boolean exclude) { 306 } 307 308 @Override 309 public void include(Object transition, int targetId) { 310 } 311 312 @Override 313 public void include(Object transition, View targetView) { 314 } 315 316 @Override 317 public void setStartDelay(Object transition, long startDelay) { 318 } 319 320 @Override 321 public void setDuration(Object transition, long duration) { 322 } 323 324 @Override 325 public void addTransitionListener(Object transition, TransitionListener listener) { 326 TransitionStub stub = (TransitionStub) transition; 327 if (stub.mTransitionListeners == null) { 328 stub.mTransitionListeners = new ArrayList<TransitionListener>(); 329 } 330 stub.mTransitionListeners.add(listener); 331 } 332 333 @Override 334 public void removeTransitionListener(Object transition, TransitionListener listener) { 335 TransitionStub stub = (TransitionStub) transition; 336 if (stub.mTransitionListeners != null) { 337 stub.mTransitionListeners.remove(listener); 338 } 339 } 340 341 @Override 342 public void runTransition(Object scene, Object transition) { 343 TransitionStub transitionStub = (TransitionStub) transition; 344 if (transitionStub != null && transitionStub.mTransitionListeners != null) { 345 for (int i = 0, size = transitionStub.mTransitionListeners.size(); i < size; i++) { 346 transitionStub.mTransitionListeners.get(i).onTransitionStart(transition); 347 } 348 } 349 Runnable r = ((Runnable) scene); 350 if (r != null) { 351 r.run(); 352 } 353 if (transitionStub != null && transitionStub.mTransitionListeners != null) { 354 for (int i = 0, size = transitionStub.mTransitionListeners.size(); i < size; i++) { 355 transitionStub.mTransitionListeners.get(i).onTransitionEnd(transition); 356 } 357 } 358 } 359 360 @Override 361 public void setInterpolator(Object transition, Object timeInterpolator) { 362 } 363 364 @Override 365 public void addTarget(Object transition, View view) { 366 } 367 368 @Override 369 public Object createDefaultInterpolator(Context context) { 370 return null; 371 } 372 373 @Override 374 public Object loadTransition(Context context, int resId) { 375 return new TransitionStub(); 376 } 377 378 @Override 379 public void beginDelayedTransition(ViewGroup sceneRoot, Object transitionObject) { 380 } 381 382 @Override 383 public void setTransitionGroup(ViewGroup viewGroup, boolean transitionGroup) { 384 } 385 } 386 387 /** 388 * Implementation used on KitKat (and above). 389 */ 390 static class TransitionHelperKitkatImpl extends TransitionHelperStubImpl { 391 392 @Override 393 public Object createScene(ViewGroup sceneRoot, Runnable r) { 394 return TransitionHelperKitkat.createScene(sceneRoot, r); 395 } 396 397 @Override 398 public Object createAutoTransition() { 399 return TransitionHelperKitkat.createAutoTransition(); 400 } 401 402 @Override 403 public Object createFadeTransition(int fadingMode) { 404 return TransitionHelperKitkat.createFadeTransition(fadingMode); 405 } 406 407 @Override 408 public Object createChangeBounds(boolean reparent) { 409 return TransitionHelperKitkat.createChangeBounds(reparent); 410 } 411 412 @Override 413 public Object createSlide(int slideEdge) { 414 return TransitionHelperKitkat.createSlide(slideEdge); 415 } 416 417 @Override 418 public Object createScale() { 419 return TransitionHelperKitkat.createScale(); 420 } 421 422 @Override 423 public void setChangeBoundsStartDelay(Object changeBounds, View view, int startDelay) { 424 TransitionHelperKitkat.setChangeBoundsStartDelay(changeBounds, view, startDelay); 425 } 426 427 @Override 428 public void setChangeBoundsStartDelay(Object changeBounds, int viewId, int startDelay) { 429 TransitionHelperKitkat.setChangeBoundsStartDelay(changeBounds, viewId, startDelay); 430 } 431 432 @Override 433 public void setChangeBoundsStartDelay(Object changeBounds, String className, 434 int startDelay) { 435 TransitionHelperKitkat.setChangeBoundsStartDelay(changeBounds, className, startDelay); 436 } 437 438 @Override 439 public void setChangeBoundsDefaultStartDelay(Object changeBounds, int startDelay) { 440 TransitionHelperKitkat.setChangeBoundsDefaultStartDelay(changeBounds, startDelay); 441 } 442 443 @Override 444 public Object createTransitionSet(boolean sequential) { 445 return TransitionHelperKitkat.createTransitionSet(sequential); 446 } 447 448 @Override 449 public void addTransition(Object transitionSet, Object transition) { 450 TransitionHelperKitkat.addTransition(transitionSet, transition); 451 } 452 453 @Override 454 public void exclude(Object transition, int targetId, boolean exclude) { 455 TransitionHelperKitkat.exclude(transition, targetId, exclude); 456 } 457 458 @Override 459 public void exclude(Object transition, View targetView, boolean exclude) { 460 TransitionHelperKitkat.exclude(transition, targetView, exclude); 461 } 462 463 @Override 464 public void excludeChildren(Object transition, int targetId, boolean exclude) { 465 TransitionHelperKitkat.excludeChildren(transition, targetId, exclude); 466 } 467 468 @Override 469 public void excludeChildren(Object transition, View targetView, boolean exclude) { 470 TransitionHelperKitkat.excludeChildren(transition, targetView, exclude); 471 } 472 473 @Override 474 public void include(Object transition, int targetId) { 475 TransitionHelperKitkat.include(transition, targetId); 476 } 477 478 @Override 479 public void include(Object transition, View targetView) { 480 TransitionHelperKitkat.include(transition, targetView); 481 } 482 483 @Override 484 public void setStartDelay(Object transition, long startDelay) { 485 TransitionHelperKitkat.setStartDelay(transition, startDelay); 486 } 487 488 @Override 489 public void setDuration(Object transition, long duration) { 490 TransitionHelperKitkat.setDuration(transition, duration); 491 } 492 493 @Override 494 public void addTransitionListener(Object transition, TransitionListener listener) { 495 TransitionHelperKitkat.addTransitionListener(transition, listener); 496 } 497 498 @Override 499 public void removeTransitionListener(Object transition, TransitionListener listener) { 500 TransitionHelperKitkat.removeTransitionListener(transition, listener); 501 } 502 503 @Override 504 public void runTransition(Object scene, Object transition) { 505 TransitionHelperKitkat.runTransition(scene, transition); 506 } 507 508 @Override 509 public void setInterpolator(Object transition, Object timeInterpolator) { 510 TransitionHelperKitkat.setInterpolator(transition, timeInterpolator); 511 } 512 513 @Override 514 public void addTarget(Object transition, View view) { 515 TransitionHelperKitkat.addTarget(transition, view); 516 } 517 518 @Override 519 public Object createDefaultInterpolator(Context context) { 520 return null; 521 } 522 523 @Override 524 public Object loadTransition(Context context, int resId) { 525 return TransitionHelperKitkat.loadTransition(context, resId); 526 } 527 } 528 529 static final class TransitionHelperApi21Impl extends TransitionHelperKitkatImpl { 530 531 public void setEnterTransition(android.app.Fragment fragment, Object transition) { 532 TransitionHelperApi21.setEnterTransition(fragment, transition); 533 } 534 535 public void setExitTransition(android.app.Fragment fragment, Object transition) { 536 TransitionHelperApi21.setExitTransition(fragment, transition); 537 } 538 539 public void setSharedElementEnterTransition(android.app.Fragment fragment, 540 Object transition) { 541 TransitionHelperApi21.setSharedElementEnterTransition(fragment, transition); 542 } 543 544 public void addSharedElement(android.app.FragmentTransaction ft, 545 View view, String transitionName) { 546 TransitionHelperApi21.addSharedElement(ft, view, transitionName); 547 } 548 549 @Override 550 public Object getSharedElementEnterTransition(Window window) { 551 return TransitionHelperApi21.getSharedElementEnterTransition(window); 552 } 553 554 @Override 555 public Object getSharedElementReturnTransition(Window window) { 556 return TransitionHelperApi21.getSharedElementReturnTransition(window); 557 } 558 559 @Override 560 public Object getSharedElementExitTransition(Window window) { 561 return TransitionHelperApi21.getSharedElementExitTransition(window); 562 } 563 564 @Override 565 public Object getSharedElementReenterTransition(Window window) { 566 return TransitionHelperApi21.getSharedElementReenterTransition(window); 567 } 568 569 @Override 570 public Object createFadeAndShortSlide(int edge) { 571 return TransitionHelperApi21.createFadeAndShortSlide(edge); 572 } 573 574 @Override 575 public Object createFadeAndShortSlide(int edge, float distance) { 576 return TransitionHelperApi21.createFadeAndShortSlide(edge, distance); 577 } 578 579 @Override 580 public void beginDelayedTransition(ViewGroup sceneRoot, Object transition) { 581 TransitionHelperApi21.beginDelayedTransition(sceneRoot, transition); 582 } 583 584 @Override 585 public Object getEnterTransition(Window window) { 586 return TransitionHelperApi21.getEnterTransition(window); 587 } 588 589 @Override 590 public Object getReturnTransition(Window window) { 591 return TransitionHelperApi21.getReturnTransition(window); 592 } 593 594 @Override 595 public Object getExitTransition(Window window) { 596 return TransitionHelperApi21.getExitTransition(window); 597 } 598 599 @Override 600 public Object getReenterTransition(Window window) { 601 return TransitionHelperApi21.getReenterTransition(window); 602 } 603 604 @Override 605 public Object createScale() { 606 return TransitionHelperApi21.createScale(); 607 } 608 609 @Override 610 public Object createDefaultInterpolator(Context context) { 611 return TransitionHelperApi21.createDefaultInterpolator(context); 612 } 613 614 @Override 615 public void setTransitionGroup(ViewGroup viewGroup, boolean transitionGroup) { 616 TransitionHelperApi21.setTransitionGroup(viewGroup, transitionGroup); 617 } 618 619 @Override 620 public Object createChangeTransform() { 621 return TransitionHelperApi21.createChangeTransform(); 622 } 623 624 } 625 626 static { 627 if (Build.VERSION.SDK_INT >= 21) { 628 sImpl = new TransitionHelperApi21Impl(); 629 } else if (systemSupportsTransitions()) { 630 sImpl = new TransitionHelperKitkatImpl(); 631 } else { 632 sImpl = new TransitionHelperStubImpl(); 633 } 634 } 635 636 public static Object getSharedElementEnterTransition(Window window) { 637 return sImpl.getSharedElementEnterTransition(window); 638 } 639 640 public static Object getSharedElementReturnTransition(Window window) { 641 return sImpl.getSharedElementReturnTransition(window); 642 } 643 644 public static Object getSharedElementExitTransition(Window window) { 645 return sImpl.getSharedElementExitTransition(window); 646 } 647 648 public static Object getSharedElementReenterTransition(Window window) { 649 return sImpl.getSharedElementReenterTransition(window); 650 } 651 652 public static Object getEnterTransition(Window window) { 653 return sImpl.getEnterTransition(window); 654 } 655 656 public static Object getReturnTransition(Window window) { 657 return sImpl.getReturnTransition(window); 658 } 659 660 public static Object getExitTransition(Window window) { 661 return sImpl.getExitTransition(window); 662 } 663 664 public static Object getReenterTransition(Window window) { 665 return sImpl.getReenterTransition(window); 666 } 667 668 public static Object createScene(ViewGroup sceneRoot, Runnable r) { 669 return sImpl.createScene(sceneRoot, r); 670 } 671 672 public static Object createChangeBounds(boolean reparent) { 673 return sImpl.createChangeBounds(reparent); 674 } 675 676 public static Object createChangeTransform() { 677 return sImpl.createChangeTransform(); 678 } 679 680 public static void setChangeBoundsStartDelay(Object changeBounds, View view, int startDelay) { 681 sImpl.setChangeBoundsStartDelay(changeBounds, view, startDelay); 682 } 683 684 public static void setChangeBoundsStartDelay(Object changeBounds, int viewId, int startDelay) { 685 sImpl.setChangeBoundsStartDelay(changeBounds, viewId, startDelay); 686 } 687 688 public static void setChangeBoundsStartDelay(Object changeBounds, String className, 689 int startDelay) { 690 sImpl.setChangeBoundsStartDelay(changeBounds, className, startDelay); 691 } 692 693 public static void setChangeBoundsDefaultStartDelay(Object changeBounds, int startDelay) { 694 sImpl.setChangeBoundsDefaultStartDelay(changeBounds, startDelay); 695 } 696 697 public static Object createTransitionSet(boolean sequential) { 698 return sImpl.createTransitionSet(sequential); 699 } 700 701 public static Object createSlide(int slideEdge) { 702 return sImpl.createSlide(slideEdge); 703 } 704 705 public static Object createScale() { 706 return sImpl.createScale(); 707 } 708 709 public static void addTransition(Object transitionSet, Object transition) { 710 sImpl.addTransition(transitionSet, transition); 711 } 712 713 public static void exclude(Object transition, int targetId, boolean exclude) { 714 sImpl.exclude(transition, targetId, exclude); 715 } 716 717 public static void exclude(Object transition, View targetView, boolean exclude) { 718 sImpl.exclude(transition, targetView, exclude); 719 } 720 721 public static void excludeChildren(Object transition, int targetId, boolean exclude) { 722 sImpl.excludeChildren(transition, targetId, exclude); 723 } 724 725 public static void excludeChildren(Object transition, View targetView, boolean exclude) { 726 sImpl.excludeChildren(transition, targetView, exclude); 727 } 728 729 public static void include(Object transition, int targetId) { 730 sImpl.include(transition, targetId); 731 } 732 733 public static void include(Object transition, View targetView) { 734 sImpl.include(transition, targetView); 735 } 736 737 public static void setStartDelay(Object transition, long startDelay) { 738 sImpl.setStartDelay(transition, startDelay); 739 } 740 741 public static void setDuration(Object transition, long duration) { 742 sImpl.setDuration(transition, duration); 743 } 744 745 public static Object createAutoTransition() { 746 return sImpl.createAutoTransition(); 747 } 748 749 public static Object createFadeTransition(int fadeMode) { 750 return sImpl.createFadeTransition(fadeMode); 751 } 752 753 public static void addTransitionListener(Object transition, TransitionListener listener) { 754 sImpl.addTransitionListener(transition, listener); 755 } 756 757 public static void removeTransitionListener(Object transition, TransitionListener listener) { 758 sImpl.removeTransitionListener(transition, listener); 759 } 760 761 public static void runTransition(Object scene, Object transition) { 762 sImpl.runTransition(scene, transition); 763 } 764 765 public static void setInterpolator(Object transition, Object timeInterpolator) { 766 sImpl.setInterpolator(transition, timeInterpolator); 767 } 768 769 public static void addTarget(Object transition, View view) { 770 sImpl.addTarget(transition, view); 771 } 772 773 public static Object createDefaultInterpolator(Context context) { 774 return sImpl.createDefaultInterpolator(context); 775 } 776 777 public static Object loadTransition(Context context, int resId) { 778 return sImpl.loadTransition(context, resId); 779 } 780 781 public static void setEnterTransition(android.app.Fragment fragment, Object transition) { 782 sImpl.setEnterTransition(fragment, transition); 783 } 784 785 public static void setExitTransition(android.app.Fragment fragment, Object transition) { 786 sImpl.setExitTransition(fragment, transition); 787 } 788 789 public static void setSharedElementEnterTransition(android.app.Fragment fragment, 790 Object transition) { 791 sImpl.setSharedElementEnterTransition(fragment, transition); 792 } 793 794 public static void addSharedElement(android.app.FragmentTransaction ft, 795 View view, String transitionName) { 796 sImpl.addSharedElement(ft, view, transitionName); 797 } 798 799 public static void setEnterTransition(android.support.v4.app.Fragment fragment, 800 Object transition) { 801 fragment.setEnterTransition(transition); 802 } 803 804 public static void setExitTransition(android.support.v4.app.Fragment fragment, 805 Object transition) { 806 fragment.setExitTransition(transition); 807 } 808 809 public static void setSharedElementEnterTransition(android.support.v4.app.Fragment fragment, 810 Object transition) { 811 fragment.setSharedElementEnterTransition(transition); 812 } 813 814 public static void addSharedElement(android.support.v4.app.FragmentTransaction ft, 815 View view, String transitionName) { 816 ft.addSharedElement(view, transitionName); 817 } 818 819 public static Object createFadeAndShortSlide(int edge) { 820 return sImpl.createFadeAndShortSlide(edge); 821 } 822 823 public static Object createFadeAndShortSlide(int edge, float distance) { 824 return sImpl.createFadeAndShortSlide(edge, distance); 825 } 826 827 public static void beginDelayedTransition(ViewGroup sceneRoot, Object transitionObject) { 828 sImpl.beginDelayedTransition(sceneRoot, transitionObject); 829 } 830 831 public static void setTransitionGroup(ViewGroup viewGroup, boolean transitionGroup) { 832 sImpl.setTransitionGroup(viewGroup, transitionGroup); 833 } 834 835 /** 836 * @deprecated Use static calls. 837 */ 838 @Deprecated 839 public static TransitionHelper getInstance() { 840 return new TransitionHelper(); 841 } 842 843 /** 844 * @deprecated Use {@link #addTransitionListener(Object, TransitionListener)} 845 */ 846 @Deprecated 847 public static void setTransitionListener(Object transition, TransitionListener listener) { 848 sImpl.addTransitionListener(transition, listener); 849 } 850} 851