Merge branch 'hotfix-v5.6.0-470_imageviewer' into 'release'

修复游戏详情打开大图动画异常

See merge request halo/android/assistant-android!216
This commit is contained in:
叶子维
2022-02-21 17:17:32 +08:00

View File

@ -16,7 +16,6 @@ import android.net.Uri
import android.os.Bundle
import android.text.TextUtils
import android.util.Base64
import android.util.DisplayMetrics
import android.util.SparseArray
import android.view.View
import android.view.ViewGroup
@ -58,9 +57,11 @@ import com.github.piasy.biv.view.BigImageView
import com.github.piasy.biv.view.FrescoImageViewFactory
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import java.io.*
import java.io.BufferedOutputStream
import java.io.File
import java.io.FileOutputStream
import java.util.*
import kotlin.collections.ArrayList
import kotlin.math.abs
import kotlin.math.roundToInt
/**
@ -172,9 +173,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
mIndicatorTv.text = String.format("%d/%d", mInitialPosition + 1, mUrlList!!.size)
// init slide
val outMetrics = DisplayMetrics()
windowManager?.defaultDisplay?.getMetrics(outMetrics)
val widthPixels = outMetrics.widthPixels
val widthPixels = DisplayUtils.getScreenWidth()
mLimitWidth = if (NetworkUtils.isWifiOr4GConnected(this)) {
widthPixels * 2
} else {
@ -417,8 +416,6 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
}
private fun finishWithAnimation(fadeOnly: Boolean) {
updateOriginPosition(mViewPager.currentItem)
val animatorSet = AnimatorSet()
val translateXAnimator = ValueAnimator.ofFloat(0F, mTranslationX).apply {
@ -469,7 +466,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
}
}
private fun shouldResize() = !(mImageRatio == mViewRatio || scaleWithoutResize())
private fun shouldResize() = !(abs(mImageRatio - mViewRatio) <= 0.1F || scaleWithoutResize())
private fun justChangeBoundsAndTransform() = mImageRatio < mViewRatio && mIsFromImageContainerView && adapter?.count == 1
@ -608,8 +605,6 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
}
private fun performExitAnimation(view: DraggableBigImageView, scale: Float, fadeOnly: Boolean) {
updateOriginPosition(mViewPager.currentItem)
val finalScale = mOriginWidth / mTargetWidth
val finalTranslationX = mOriginLeft - (1 - finalScale) * mTargetWidth / 2
val finalTranslationY = mOriginTop - ((1 - finalScale) * mTargetHeight + (mTargetHeight * finalScale - mOriginHeight)) / 2
@ -726,7 +721,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
return ObjectAnimator.ofFloat(startHeight.toFloat(), endHeight.toFloat()).apply {
addUpdateListener {
sceneRoot.findViewById<BigImageView>(R.id.viewimage_iv_show)?.ssiv?.run {
if (scaleWithoutResize()) {
if (abs(mImageRatio - mViewRatio) > 0.1F && scaleWithoutResize()) {
maxScale = scale
setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP)
}
@ -768,6 +763,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
}
imageView.setDragListener(object : DraggableBigImageView.DragListener {
override fun onRelease(draggableBigImageView: DraggableBigImageView, scale: Float) {
updateOriginPosition(mViewPager.currentItem)
performExitAnimation(draggableBigImageView, scale, isFadeOnly())
}
@ -812,7 +808,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
// }
// })
ssiv.setOnClickListener {
finishWithAnimation(isFadeOnly())
onBackPressed()
}
}
}
@ -875,6 +871,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
private fun isFadeOnly() = mViewPager.currentItem >= mOriginLeftList?.size ?: 0 || mOriginLeft == 0 || mOriginTop == 0
override fun onBackPressed() {
updateOriginPosition(mViewPager.currentItem)
finishWithAnimation(isFadeOnly())
}