add a helper variable for checking subsampling view visibility

This commit is contained in:
tibbi 2018-09-20 13:52:24 +02:00
parent 1bae7ef7a6
commit 1110c80b66

View file

@ -56,6 +56,7 @@ class PhotoFragment : ViewPagerFragment() {
private var isFullscreen = false private var isFullscreen = false
private var wasInit = false private var wasInit = false
private var isPanorama = false private var isPanorama = false
private var isSubsamplingVisible = false // checking view.visibility is unreliable, use an extra variable for it
private var imageOrientation = -1 private var imageOrientation = -1
private var gifDrawable: GifDrawable? = null private var gifDrawable: GifDrawable? = null
private var loadZoomableViewHandler = Handler() private var loadZoomableViewHandler = Handler()
@ -209,6 +210,7 @@ class PhotoFragment : ViewPagerFragment() {
if (isVisible) { if (isVisible) {
scheduleZoomableView() scheduleZoomableView()
} else { } else {
isSubsamplingVisible = false
view.subsampling_view.recycle() view.subsampling_view.recycle()
view.subsampling_view.beGone() view.subsampling_view.beGone()
loadZoomableViewHandler.removeCallbacksAndMessages(null) loadZoomableViewHandler.removeCallbacksAndMessages(null)
@ -346,7 +348,7 @@ class PhotoFragment : ViewPagerFragment() {
private fun scheduleZoomableView() { private fun scheduleZoomableView() {
loadZoomableViewHandler.removeCallbacksAndMessages(null) loadZoomableViewHandler.removeCallbacksAndMessages(null)
loadZoomableViewHandler.postDelayed({ loadZoomableViewHandler.postDelayed({
if (isFragmentVisible && context?.config?.allowZoomingImages == true && medium.isImage() && view.subsampling_view.isGone()) { if (isFragmentVisible && context?.config?.allowZoomingImages == true && medium.isImage() && !isSubsamplingVisible) {
addZoomableView() addZoomableView()
} }
}, ZOOMABLE_VIEW_LOAD_DELAY) }, ZOOMABLE_VIEW_LOAD_DELAY)
@ -354,17 +356,19 @@ class PhotoFragment : ViewPagerFragment() {
private fun addZoomableView() { private fun addZoomableView() {
val rotation = degreesForRotation(imageOrientation) val rotation = degreesForRotation(imageOrientation)
val path = getPathToLoad(medium)
isSubsamplingVisible = true
view.subsampling_view.apply { view.subsampling_view.apply {
setMinimumTileDpi(getMinTileDpi()) setMinimumTileDpi(getMinTileDpi())
background = ColorDrawable(Color.TRANSPARENT) background = ColorDrawable(Color.TRANSPARENT)
setBitmapDecoderFactory { PicassoDecoder(medium.path, Picasso.get(), rotation) } setBitmapDecoderFactory { PicassoDecoder(path, Picasso.get(), rotation) }
setRegionDecoderFactory { PicassoRegionDecoder() } setRegionDecoderFactory { PicassoRegionDecoder() }
maxScale = 10f maxScale = 10f
beVisible() beVisible()
isQuickScaleEnabled = context.config.oneFingerZoom isQuickScaleEnabled = context.config.oneFingerZoom
setResetScaleOnSizeChange(context.config.screenRotation != ROTATE_BY_ASPECT_RATIO) setResetScaleOnSizeChange(context.config.screenRotation != ROTATE_BY_ASPECT_RATIO)
setImage(ImageSource.uri(getPathToLoad(medium))) setImage(ImageSource.uri(path))
orientation = rotation orientation = rotation
setEagerLoadingEnabled(false) setEagerLoadingEnabled(false)
setOnImageEventListener(object : SubsamplingScaleImageView.OnImageEventListener { setOnImageEventListener(object : SubsamplingScaleImageView.OnImageEventListener {
@ -466,6 +470,7 @@ class PhotoFragment : ViewPagerFragment() {
fun rotateImageViewBy(degrees: Int) { fun rotateImageViewBy(degrees: Int) {
loadZoomableViewHandler.removeCallbacksAndMessages(null) loadZoomableViewHandler.removeCallbacksAndMessages(null)
view.subsampling_view.beGone() view.subsampling_view.beGone()
isSubsamplingVisible = false
loadBitmap(degrees) loadBitmap(degrees)
} }