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:
@ -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 }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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,
|
||||
)
|
||||
@ -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
|
||||
}
|
||||
@ -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)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user