77 签约房开始webp动画,练歌房右侧麦上用户刷新。
This commit is contained in:
@@ -1,11 +1,23 @@
|
||||
package com.xscm.modulemain.dialog
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import androidx.vectordrawable.graphics.drawable.Animatable2Compat
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.integration.webp.decoder.WebpDrawable
|
||||
import com.bumptech.glide.integration.webp.decoder.WebpDrawableTransformation
|
||||
import com.bumptech.glide.load.DataSource
|
||||
import com.bumptech.glide.load.engine.GlideException
|
||||
import com.bumptech.glide.load.resource.bitmap.CenterInside
|
||||
import com.bumptech.glide.request.RequestListener
|
||||
import com.bumptech.glide.request.RequestOptions
|
||||
import com.bumptech.glide.request.target.Target
|
||||
import com.xscm.modulemain.R
|
||||
import com.xscm.modulemain.databinding.DialogSignTypeBinding
|
||||
import com.xscm.moduleutil.utils.ImageUtils
|
||||
import com.xscm.moduleutil.widget.dialog.BaseDialog
|
||||
|
||||
class DialogSignType(context:Context) : BaseDialog<DialogSignTypeBinding>(context){
|
||||
@@ -52,25 +64,84 @@ class DialogSignType(context:Context) : BaseDialog<DialogSignTypeBinding>(contex
|
||||
0 ->{
|
||||
mBinding.groupFail.visibility = View.GONE
|
||||
mBinding.ivStart.visibility = View.VISIBLE
|
||||
loadWebpOneStart(R.drawable.iv_start, mBinding.ivStart)
|
||||
mBinding.ivSuccess.visibility = View.GONE
|
||||
}
|
||||
1 ->{
|
||||
mBinding.groupFail.visibility = View.GONE
|
||||
mBinding.ivStart.visibility = View.GONE
|
||||
mBinding.ivSuccess.visibility = View.VISIBLE
|
||||
window?.decorView?.postDelayed({
|
||||
dismiss()
|
||||
}, 1500)
|
||||
}
|
||||
2 ->{
|
||||
mBinding.groupFail.visibility = View.VISIBLE
|
||||
mBinding.ivStart.visibility = View.GONE
|
||||
mBinding.ivSuccess.visibility = View.GONE
|
||||
|
||||
window?.decorView?.postDelayed({
|
||||
dismiss()
|
||||
}, 1500)
|
||||
}
|
||||
}
|
||||
|
||||
window?.decorView?.postDelayed({
|
||||
dismiss()
|
||||
}, 1500)
|
||||
|
||||
|
||||
}
|
||||
var webpDrawable:WebpDrawable? = null
|
||||
fun loadWebpOneStart(webp_anim: Int, mAnimView: ImageView?) {
|
||||
if (mAnimView == null) {
|
||||
return
|
||||
}
|
||||
// 1. 本地资源专属优化配置
|
||||
val options = RequestOptions() // 强制限制解码尺寸为ImageView显示尺寸(核心优化)
|
||||
.override(800, 800) // 本地图用原尺寸,或指定固定尺寸
|
||||
|
||||
//webp动图
|
||||
val transformation = CenterInside()
|
||||
Glide.with(mAnimView)
|
||||
.load(webp_anim) //不是本地资源就改为url即可
|
||||
.apply(options)
|
||||
.optionalTransform(transformation)
|
||||
.optionalTransform(WebpDrawable::class.java, WebpDrawableTransformation(transformation))
|
||||
.addListener(object : RequestListener<Drawable> {
|
||||
override fun onLoadFailed(
|
||||
e: GlideException?,
|
||||
model: Any,
|
||||
target: Target<Drawable>,
|
||||
isFirstResource: Boolean
|
||||
): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
override fun onResourceReady(
|
||||
resource: Drawable,
|
||||
model: Any,
|
||||
target: Target<Drawable>,
|
||||
dataSource: DataSource,
|
||||
isFirstResource: Boolean
|
||||
): Boolean {
|
||||
webpDrawable = resource as WebpDrawable
|
||||
//需要设置为循环1次才会有onAnimationEnd回调
|
||||
webpDrawable?.loopCount = 1
|
||||
webpDrawable?.registerAnimationCallback(object :
|
||||
Animatable2Compat.AnimationCallback() {
|
||||
override fun onAnimationStart(drawable: Drawable) {
|
||||
super.onAnimationStart(drawable)
|
||||
}
|
||||
|
||||
override fun onAnimationEnd(drawable: Drawable) {
|
||||
super.onAnimationEnd(drawable)
|
||||
webpDrawable?.unregisterAnimationCallback(this)
|
||||
dismiss()
|
||||
}
|
||||
})
|
||||
|
||||
return false
|
||||
}
|
||||
})
|
||||
.into(mAnimView)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user