From 250c1f0fd14cd43e28c4587f5aafb2c77f732edf Mon Sep 17 00:00:00 2001 From: Martijn Brekhof Date: Fri, 22 Dec 2017 19:21:45 +0100 Subject: [PATCH] Disabled shared element transitions from API 27 (#494) AdapterView is not supported by the transition framework. This became an issue with the release of API 27. In Android 8.1 the shared element view is removed from the exiting fragment. This causes Android to call the removeView method from AdapterView which is not implemented and causes the app to crash. We can reenable shared element transitions for API 27 and up by refactoring the GridView usage to RecycleView. --- app/src/main/java/org/xbmc/kore/ui/BaseMediaActivity.java | 6 +++--- app/src/main/java/org/xbmc/kore/utils/Utils.java | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/xbmc/kore/ui/BaseMediaActivity.java b/app/src/main/java/org/xbmc/kore/ui/BaseMediaActivity.java index d849a826b..cd00a9b9a 100644 --- a/app/src/main/java/org/xbmc/kore/ui/BaseMediaActivity.java +++ b/app/src/main/java/org/xbmc/kore/ui/BaseMediaActivity.java @@ -145,7 +145,7 @@ protected void onCreate(Bundle savedInstanceState) { if (fragment == null) { fragment = createFragment(); - if (Utils.isLollipopOrLater()) { + if (Utils.isLollipopAndPreOreo()) { fragment.setExitTransition(null); fragment.setReenterTransition(TransitionInflater .from(this) @@ -158,7 +158,7 @@ protected void onCreate(Bundle savedInstanceState) { .commit(); } - if (Utils.isLollipopOrLater()) { + if (Utils.isLollipopAndPreOreo()) { sharedElementTransition.setupExitTransition(this, fragment); } @@ -280,7 +280,7 @@ protected void showFragment(AbstractFragment fragment, ImageView sharedImageView FragmentTransaction fragTrans = getSupportFragmentManager().beginTransaction(); // Set up transitions - if (Utils.isLollipopOrLater()) { + if (Utils.isLollipopAndPreOreo()) { dataHolder.setPosterTransitionName(sharedImageView.getTransitionName()); sharedElementTransition.setupEnterTransition(this, fragTrans, fragment, sharedImageView); } else { diff --git a/app/src/main/java/org/xbmc/kore/utils/Utils.java b/app/src/main/java/org/xbmc/kore/utils/Utils.java index c95f6fe79..b401dea66 100644 --- a/app/src/main/java/org/xbmc/kore/utils/Utils.java +++ b/app/src/main/java/org/xbmc/kore/utils/Utils.java @@ -69,6 +69,11 @@ public static boolean isLollipopOrLater() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP; } + public static boolean isLollipopAndPreOreo() { + return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) && + (Build.VERSION.SDK_INT < 27); + } + /** * Concats a list of strings... * @param list