Merge remote-tracking branch 'origin/release' into dev

# Conflicts:
#	app/src/main/java/com/gh/ad/AdDelegateHelper.kt
#	dependencies.gradle
#	module_login/src/main/java/com/gh/gamecenter/login/user/UserRepository.java
#	vasdk
This commit is contained in:
chenjuntao
2025-01-15 14:27:40 +08:00
27 changed files with 233 additions and 120 deletions

View File

@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.View
import android.view.ViewStub
import com.gh.gamecenter.common.R
import com.gh.gamecenter.common.utils.inflateOrShow
/**
* 这是在 BaseLazyFragment 之上添加了一些通用功能的抽象类
@ -66,7 +67,7 @@ abstract class LazyFragment : BaseLazyFragment() {
} else {
mViewStub?.layoutResource = getRealLayoutId()
mViewStub?.setOnInflateListener { _, inflatedView -> onRealLayoutInflated(inflatedView) }
mViewStub?.inflate()?.let { mCachedView = it }
mViewStub?.inflateOrShow()?.let { mCachedView = it }
}
}

View File

@ -1,13 +1,15 @@
package com.gh.gamecenter.common.utils
import androidx.core.util.Pools
import com.facebook.drawee.controller.BaseControllerListener
import com.facebook.drawee.view.SimpleDraweeView
import com.facebook.imagepipeline.image.ImageInfo
import com.facebook.imagepipeline.request.Postprocessor
import com.gh.gamecenter.core.utils.SingletonHolder
class AsyncImageLoader private constructor() {
fun addAsyncImage(view: SimpleDraweeView?, url: String, loadAsAnimatedImage: Boolean, processor: Postprocessor?) {
fun addAsyncImage(view: SimpleDraweeView?, url: String, loadAsAnimatedImage: Boolean, processor: Postprocessor?, controllerListener: BaseControllerListener<ImageInfo>?) {
try {
val loopThread = LoopThread.getInstance()
val params = loopThread.obtainImageParams()
@ -15,6 +17,7 @@ class AsyncImageLoader private constructor() {
params.url = url
params.loadAsAnimatedImage = loadAsAnimatedImage
params.processor = processor
params.controllerListener = controllerListener
loopThread.addAsyncImage(params)
} catch (e: InterruptedException) {
e.printStackTrace()
@ -86,7 +89,7 @@ class AsyncImageLoader private constructor() {
private fun loadImage(params: ImageLoadParams, isIgnoreWidth: Boolean = false) {
ImageUtils.display(params.view, params.url, params.loadAsAnimatedImage, params.processor, isIgnoreWidth)
ImageUtils.display(params.view, params.url, params.loadAsAnimatedImage, params.processor, isIgnoreWidth, params.controllerListener)
releaseImageParams(params)
}
@ -105,6 +108,7 @@ class AsyncImageLoader private constructor() {
loadAsAnimatedImage = false
processor = null
retryCount = 0
controllerListener = null
mImagePool.release(this)
}
}
@ -120,5 +124,6 @@ class ImageLoadParams(
var url: String = "",
var loadAsAnimatedImage: Boolean = true,
var processor: Postprocessor? = null,
var retryCount: Int = 0
var retryCount: Int = 0,
var controllerListener: BaseControllerListener<ImageInfo>? = null,
)

View File

@ -1698,4 +1698,12 @@ fun RecyclerView.tryToClearRecycler() {
} catch (e: java.lang.Exception) {
e.printStackTrace()
}
}
}
fun ViewStub.inflateOrShow(): View? =
if (parent != null) {
inflate()
} else {
visibility = View.VISIBLE
null
}

View File

@ -162,8 +162,10 @@ object ImageUtils {
fun displayWithCallback(
draweeView: SimpleDraweeView?,
imageUrl: String?,
noMemoryCache: Boolean = false,
controllerListener: BaseControllerListener<ImageInfo>?
) {
if (noMemoryCache) draweeView?.setTag(TAG_NO_MEMORY_CACHE, true)
displayInternal(
view = draweeView,
url = imageUrl,
@ -319,7 +321,7 @@ object ImageUtils {
val disableMemoryCache = view?.getTag(TAG_NO_MEMORY_CACHE) == true
if (view != null && width == 0 && !isIgnoreWidth) {
AsyncImageLoader.getInstance().addAsyncImage(view, url, loadAsAnimatedImage, processor)
AsyncImageLoader.getInstance().addAsyncImage(view, url, loadAsAnimatedImage, processor, controllerListener)
return@execute
}
var lowResUrl = ""
@ -367,9 +369,10 @@ object ImageUtils {
url: String?,
loadAsAnimatedImage: Boolean = true,
processor: Postprocessor? = null,
isIgnoreWidth: Boolean = false
isIgnoreWidth: Boolean = false,
controllerListener: BaseControllerListener<ImageInfo>? = null
) {
displayInternal(view, url, loadAsAnimatedImage, processor, isIgnoreWidth)
displayInternal(view, url, loadAsAnimatedImage, processor, isIgnoreWidth, controllerListener)
}
/**