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:
@ -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 {
|
||||
|
||||
@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user