diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java index b74466a2e..f75d0e014 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java @@ -45,6 +45,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.Toolbar; +import androidx.core.view.ViewCompat; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.SimpleItemAnimator; import androidx.recyclerview.widget.StaggeredGridLayoutManager; @@ -82,7 +83,6 @@ import com.hippo.ripple.Ripple; import com.hippo.scene.Announcer; import com.hippo.streampipe.InputStreamPipe; import com.hippo.unifile.UniFile; -import com.hippo.util.ApiHelper; import com.hippo.util.DrawableManager; import com.hippo.util.IoThreadPoolExecutor; import com.hippo.view.ViewTransition; @@ -1114,9 +1114,7 @@ public class DownloadsScene extends ToolbarScene args.putString(GalleryDetailScene.KEY_ACTION, GalleryDetailScene.ACTION_GALLERY_INFO); args.putParcelable(GalleryDetailScene.KEY_GALLERY_INFO, list.get(index)); Announcer announcer = new Announcer(GalleryDetailScene.class).setArgs(args); - if (ApiHelper.SUPPORT_TRANSITION) { - announcer.setTranHelper(new EnterGalleryDetailTransaction(thumb)); - } + announcer.setTranHelper(new EnterGalleryDetailTransaction(thumb)); startScene(announcer); } else if (start == v) { Intent intent = new Intent(activity, DownloadService.class); @@ -1188,8 +1186,7 @@ public class DownloadsScene extends ToolbarScene // Update transition name if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - long gid = info.gid; - holder.thumb.setTransitionName(TransitionNameFactory.getThumbTransitionName(gid)); + ViewCompat.setTransitionName(holder.thumb, TransitionNameFactory.getThumbTransitionName(info.gid)); } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/EnterGalleryDetailTransaction.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/EnterGalleryDetailTransaction.java index 25239a62e..9f79e84eb 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/EnterGalleryDetailTransaction.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/EnterGalleryDetailTransaction.java @@ -17,11 +17,11 @@ package com.hippo.ehviewer.ui.scene; import android.content.Context; -import android.os.Build; -import android.transition.TransitionInflater; import android.view.View; +import androidx.core.view.ViewCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; +import androidx.transition.TransitionInflater; import com.hippo.ehviewer.R; import com.hippo.scene.TransitionHelper; @@ -40,16 +40,17 @@ class EnterGalleryDetailTransaction implements TransitionHelper { return false; } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + String transitionName = ViewCompat.getTransitionName(mThumb); + if (transitionName != null) { exit.setSharedElementReturnTransition( TransitionInflater.from(context).inflateTransition(R.transition.trans_move)); exit.setExitTransition( - TransitionInflater.from(context).inflateTransition(android.R.transition.fade)); + TransitionInflater.from(context).inflateTransition(R.transition.trans_fade)); enter.setSharedElementEnterTransition( TransitionInflater.from(context).inflateTransition(R.transition.trans_move)); enter.setEnterTransition( - TransitionInflater.from(context).inflateTransition(android.R.transition.fade)); - transaction.addSharedElement(mThumb, mThumb.getTransitionName()); + TransitionInflater.from(context).inflateTransition(R.transition.trans_fade)); + transaction.addSharedElement(mThumb, transitionName); } return true; } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java index 436efc82c..16d687776 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java @@ -75,7 +75,6 @@ import com.hippo.refreshlayout.RefreshLayout; import com.hippo.ripple.Ripple; import com.hippo.scene.Announcer; import com.hippo.scene.SceneFragment; -import com.hippo.util.ApiHelper; import com.hippo.util.DrawableManager; import com.hippo.widget.ContentLayout; import com.hippo.widget.FabLayout; @@ -618,7 +617,7 @@ public class FavoritesScene extends BaseScene implements args.putParcelable(GalleryDetailScene.KEY_GALLERY_INFO, gi); Announcer announcer = new Announcer(GalleryDetailScene.class).setArgs(args); View thumb; - if (ApiHelper.SUPPORT_TRANSITION && null != (thumb = view.findViewById(R.id.thumb))) { + if (null != (thumb = view.findViewById(R.id.thumb))) { announcer.setTranHelper(new EnterGalleryDetailTransaction(thumb)); } startScene(announcer); diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryAdapter.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryAdapter.java index 81b36e67a..db5b9df8b 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryAdapter.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryAdapter.java @@ -18,7 +18,6 @@ package com.hippo.ehviewer.ui.scene; import android.content.res.Resources; import android.graphics.drawable.Drawable; -import android.os.Build; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; @@ -27,6 +26,7 @@ import android.widget.TextView; import androidx.annotation.IntDef; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.view.ViewCompat; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.StaggeredGridLayoutManager; import com.hippo.drawable.TriangleDrawable; @@ -232,9 +232,6 @@ abstract class GalleryAdapter extends RecyclerView.Adapter { } // Update transition name - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - long gid = gi.gid; - holder.thumb.setTransitionName(TransitionNameFactory.getThumbTransitionName(gid)); - } + ViewCompat.setTransitionName(holder.thumb, TransitionNameFactory.getThumbTransitionName(gi.gid)); } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java index 2291194c6..8a3210b6f 100755 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java @@ -26,12 +26,10 @@ import android.content.Intent; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.os.Parcelable; import android.text.TextUtils; -import android.transition.TransitionInflater; import android.util.Pair; import android.view.Gravity; import android.view.LayoutInflater; @@ -55,6 +53,7 @@ import androidx.appcompat.widget.PopupMenu; import androidx.core.view.ViewCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; +import androidx.transition.TransitionInflater; import com.hippo.android.resource.AttrResources; import com.hippo.beerbelly.BeerBelly; import com.hippo.drawable.RoundSideRectDrawable; @@ -95,7 +94,6 @@ import com.hippo.scene.SceneFragment; import com.hippo.scene.TransitionHelper; import com.hippo.text.Html; import com.hippo.text.URLImageGetter; -import com.hippo.util.ApiHelper; import com.hippo.util.AppHelper; import com.hippo.util.DrawableManager; import com.hippo.util.ExceptionUtils; @@ -1033,13 +1031,12 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene private void setTransitionName() { long gid = getGid(); - if (gid != -1 && ApiHelper.SUPPORT_TRANSITION && mThumb != null && - mTitle != null && mUploader != null && mCategory != null && - Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - mThumb.setTransitionName(TransitionNameFactory.getThumbTransitionName(gid)); - mTitle.setTransitionName(TransitionNameFactory.getTitleTransitionName(gid)); - mUploader.setTransitionName(TransitionNameFactory.getUploaderTransitionName(gid)); - mCategory.setTransitionName(TransitionNameFactory.getCategoryTransitionName(gid)); + if (gid != -1 && mThumb != null && + mTitle != null && mUploader != null && mCategory != null) { + ViewCompat.setTransitionName(mThumb, TransitionNameFactory.getThumbTransitionName(gid)); + ViewCompat.setTransitionName(mTitle, TransitionNameFactory.getTitleTransitionName(gid)); + ViewCompat.setTransitionName(mUploader, TransitionNameFactory.getUploaderTransitionName(gid)); + ViewCompat.setTransitionName(mCategory, TransitionNameFactory.getCategoryTransitionName(gid)); } } @@ -1419,7 +1416,7 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene @Override public void onBackPressed() { - if (ApiHelper.SUPPORT_TRANSITION && mViewTransition != null && mThumb != null && + if (mViewTransition != null && mThumb != null && mViewTransition.getShownViewIndex() == 0 && mThumb.isShown()) { int[] location = new int[2]; mThumb.getLocationInWindow(location); @@ -1550,16 +1547,17 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene return false; } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + String transitionName = ViewCompat.getTransitionName(mThumb); + if (transitionName != null) { exit.setSharedElementReturnTransition( TransitionInflater.from(context).inflateTransition(R.transition.trans_move)); exit.setExitTransition( - TransitionInflater.from(context).inflateTransition(android.R.transition.fade)); + TransitionInflater.from(context).inflateTransition(R.transition.trans_fade)); enter.setSharedElementEnterTransition( TransitionInflater.from(context).inflateTransition(R.transition.trans_move)); enter.setEnterTransition( - TransitionInflater.from(context).inflateTransition(android.R.transition.fade)); - transaction.addSharedElement(mThumb, mThumb.getTransitionName()); + TransitionInflater.from(context).inflateTransition(R.transition.trans_fade)); + transaction.addSharedElement(mThumb, transitionName); } return true; } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java index 5437da3c1..9413e343b 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java @@ -83,7 +83,6 @@ import com.hippo.refreshlayout.RefreshLayout; import com.hippo.ripple.Ripple; import com.hippo.scene.Announcer; import com.hippo.scene.SceneFragment; -import com.hippo.util.ApiHelper; import com.hippo.util.AppHelper; import com.hippo.util.DrawableManager; import com.hippo.view.ViewTransition; @@ -843,7 +842,7 @@ public final class GalleryListScene extends BaseScene args.putParcelable(GalleryDetailScene.KEY_GALLERY_INFO, gi); Announcer announcer = new Announcer(GalleryDetailScene.class).setArgs(args); View thumb; - if (ApiHelper.SUPPORT_TRANSITION && null != (thumb = view.findViewById(R.id.thumb))) { + if (null != (thumb = view.findViewById(R.id.thumb))) { announcer.setTranHelper(new EnterGalleryDetailTransaction(thumb)); } startScene(announcer); diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.java index 16e722dd7..39112192b 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.java @@ -29,6 +29,7 @@ import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; +import androidx.core.view.ViewCompat; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.StaggeredGridLayoutManager; import com.h6ah4i.android.widget.advrecyclerview.animator.GeneralItemAnimator; @@ -60,7 +61,6 @@ import com.hippo.ehviewer.widget.SimpleRatingView; import com.hippo.ripple.Ripple; import com.hippo.scene.Announcer; import com.hippo.scene.SceneFragment; -import com.hippo.util.ApiHelper; import com.hippo.util.DrawableManager; import com.hippo.view.ViewTransition; import com.hippo.widget.LoadImageView; @@ -258,7 +258,7 @@ public class HistoryScene extends ToolbarScene args.putParcelable(GalleryDetailScene.KEY_GALLERY_INFO, mLazyList.get(position)); Announcer announcer = new Announcer(GalleryDetailScene.class).setArgs(args); View thumb; - if (ApiHelper.SUPPORT_TRANSITION && null != (thumb = view.findViewById(R.id.thumb))) { + if (null != (thumb = view.findViewById(R.id.thumb))) { announcer.setTranHelper(new EnterGalleryDetailTransaction(thumb)); } startScene(announcer); @@ -384,7 +384,7 @@ public class HistoryScene extends ToolbarScene // Update transition name if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { long gid = gi.gid; - holder.thumb.setTransitionName(TransitionNameFactory.getThumbTransitionName(gid)); + ViewCompat.setTransitionName(holder.thumb, TransitionNameFactory.getThumbTransitionName(gid)); } } diff --git a/app/src/main/java/com/hippo/util/ApiHelper.java b/app/src/main/java/com/hippo/util/ApiHelper.java deleted file mode 100644 index 4d9d42eae..000000000 --- a/app/src/main/java/com/hippo/util/ApiHelper.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2016 Hippo Seven - * - * 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.hippo.util; - -import android.os.Build; - -public final class ApiHelper { - - public static final boolean SUPPORT_TRANSITION = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP; -} diff --git a/app/src/main/res/transition/trans_fade.xml b/app/src/main/res/transition/trans_fade.xml new file mode 100644 index 000000000..a49ad28b5 --- /dev/null +++ b/app/src/main/res/transition/trans_fade.xml @@ -0,0 +1,18 @@ + + + +