ReaderActivity: Fix transition crash on Android 8 (#6542)

(cherry picked from commit b6553bdc340454abb4164e040825c125ac530173)
This commit is contained in:
Ivan Iskandar 2022-02-03 09:40:48 +07:00 committed by Jobobby04
parent 0464ec0b59
commit 7635373446
2 changed files with 10 additions and 3 deletions

View File

@ -6,7 +6,6 @@ import android.content.Context
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.drawable.BitmapDrawable
import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
import android.view.Menu
@ -1111,7 +1110,7 @@ class MangaController :
val activity = activity ?: return
activity.apply {
val intent = ReaderActivity.newIntent(activity, presenter.manga, chapter)
if (sharedElement != null && Build.VERSION.SDK_INT != Build.VERSION_CODES.O) {
if (sharedElement != null) {
val activityOptions = ActivityOptions.makeSceneTransitionAnimation(
activity,
sharedElement,

View File

@ -32,6 +32,7 @@ import android.widget.RelativeLayout
import android.widget.Toast
import androidx.annotation.ColorInt
import androidx.core.graphics.ColorUtils
import androidx.core.transition.addListener
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
@ -1067,7 +1068,14 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
val newViewer = ReadingModeType.toViewer(presenter.getMangaReadingMode(), this)
updateCropBordersShortcut()
setOrientation(presenter.getMangaOrientationType())
if (window.sharedElementEnterTransition is MaterialContainerTransform) {
// Wait until transition is complete to avoid crash on API 26
window.sharedElementEnterTransition.addListener(
onEnd = { setOrientation(presenter.getMangaOrientationType()) }
)
} else {
setOrientation(presenter.getMangaOrientationType())
}
// Destroy previous viewer if there was one
if (prevViewer != null) {