Merge branch 'fix-floating_window_image_display_size' into 'dev-5.24.0'

fix: 修复悬浮窗图片大小显示问题,悬浮显示时间更改为1秒 https://jira.shanqu.cc/browse/GHZS-2074

See merge request halo/android/assistant-android!922
This commit is contained in:
陈君陶
2023-04-17 17:20:37 +08:00
2 changed files with 22 additions and 10 deletions

View File

@ -53,7 +53,7 @@ internal object FloatingWindowManager {
private const val WINDOW_ACTION_EXPAND = 4
private const val EXPAND_DELAY = 500L
private const val EXPAND_DELAY = 1000L
private const val SHRINK_AND_EXPAND_ANIMATION_DURATION = 300L
private val TAG_VIEW_STATUS = com.gh.gamecenter.common.R.string.app_name
@ -221,8 +221,8 @@ internal object FloatingWindowManager {
}
}
// 限制最大宽度为 65dp避免加载过大图片比实际显示略大一点点方便后续根据图片大小进行处理
iv?.setTag(ImageUtils.TAG_TARGET_WIDTH, 65F.dip2px())
// 限制最大宽度为 256dp后续根据图片大小进行处理
iv?.setTag(ImageUtils.TAG_TARGET_WIDTH, 256F.dip2px())
// 添加加载回调,避免网络差出现图片没有但是有关闭按钮的情况
iv?.loadingCallback = object : WrapContentDraweeView.LoadingCallback {
override fun loaded() {
@ -231,7 +231,8 @@ internal object FloatingWindowManager {
}
}
}
iv?.setMaxAndMinSizeLimit(64F.dip2px(), 48F.dip2px())
iv?.setMaxAndMinSizeLimit(64, 48)
iv?.setSubsampleSize(4)
ImageUtils.display(iv, entity.image)
view?.setOnClickListener {

View File

@ -10,6 +10,7 @@ import com.facebook.drawee.controller.BaseControllerListener
import com.facebook.drawee.interfaces.DraweeController
import com.facebook.drawee.view.SimpleDraweeView
import com.facebook.imagepipeline.image.ImageInfo
import com.gh.gamecenter.common.utils.dip2px
class WrapContentDraweeView @JvmOverloads constructor(
context: Context,
@ -22,10 +23,12 @@ class WrapContentDraweeView @JvmOverloads constructor(
// 可显示的最大和最小尺寸
private var mMaxSize = -1
private var mMinSize = -1
// 切换成可显示的最大和最小尺寸前是否需要除以固定的值
private var mSubsampleSize = 1
// we set a listener and update the view's aspect ratio depending on the loaded image
private val mListener = object : BaseControllerListener<ImageInfo>() {
override fun onIntermediateImageSet(id: String?, @Nullable imageInfo: ImageInfo?) {
override fun onIntermediateImageSet(id: String?, imageInfo: ImageInfo?) {
if (mMaxSize != -1) {
resizeToFitMaximumOrMinimumSize(imageInfo)
}
@ -35,7 +38,7 @@ class WrapContentDraweeView @JvmOverloads constructor(
loadingCallback?.loaded()
}
override fun onFinalImageSet(id: String?, @Nullable imageInfo: ImageInfo?, @Nullable animatable: Animatable?) {
override fun onFinalImageSet(id: String?, imageInfo: ImageInfo?, animatable: Animatable?) {
if (mMaxSize != -1) {
resizeToFitMaximumOrMinimumSize(imageInfo)
}
@ -52,12 +55,20 @@ class WrapContentDraweeView @JvmOverloads constructor(
/**
* 设置最大和最小尺寸
* 单位为 dp
*/
fun setMaxAndMinSizeLimit(maxSize: Int, minSize: Int) {
mMaxSize = maxSize
mMinSize = minSize
}
/**
* 取样的倍率(如传入值为 4 即表示取原图的 1/4 作为小样)
*/
fun setSubsampleSize(subsampleSize: Int) {
mSubsampleSize = subsampleSize
}
/**
* 根据设置的最大和最小尺寸来改变的显示大小
*
@ -68,8 +79,8 @@ class WrapContentDraweeView @JvmOverloads constructor(
private fun resizeToFitMaximumOrMinimumSize(imageInfo: ImageInfo?) {
imageInfo ?: return
val originalImageHeight = imageInfo.height
val originalImageWidth = imageInfo.width
val originalImageHeight = imageInfo.height / mSubsampleSize
val originalImageWidth = imageInfo.width / mSubsampleSize
var resizedImageHeight = originalImageHeight
var resizedImageWidth = originalImageHeight
@ -97,8 +108,8 @@ class WrapContentDraweeView @JvmOverloads constructor(
}
updateLayoutParams {
height = resizedImageHeight
width = resizedImageWidth
height = resizedImageHeight.toFloat().dip2px()
width = resizedImageWidth.toFloat().dip2px()
}
}