package com.xw.common.viewAdapter import android.animation.Animator import android.animation.AnimatorListenerAdapter import android.animation.ObjectAnimator import android.net.Uri import android.view.View import android.widget.ImageView import androidx.core.view.isVisible import androidx.databinding.BindingAdapter import com.bumptech.glide.Glide import com.bumptech.glide.load.DecodeFormat import com.xw.common.R import com.xw.common.base.FileSelectBean import com.xw.common.custom.ShowTextLinearLayout import com.xw.common.utils.AppGlobals public class ViewAdapter { companion object { @BindingAdapter("stll_data") fun setData(showTextLinearLayout: ShowTextLinearLayout, lists: MutableList?) { showTextLinearLayout.remove() if (lists != null && !lists.isEmpty()) { showTextLinearLayout.setData(lists, AppGlobals.getApplication()) } } @BindingAdapter("src") @JvmStatic fun setImageResource(imageView: ImageView, resourceId: Int?) { resourceId?.let { imageView.setImageResource(it) } } @BindingAdapter("selected") @JvmStatic fun setSelect(view: View, select: Boolean) { view.isSelected = select } @BindingAdapter("show") @JvmStatic fun show(view: View, show: Boolean) { view.visibility = if (show) View.VISIBLE else View.GONE } @BindingAdapter("showAnim") @JvmStatic fun showAnim(view: View, show: Boolean) { val time = 200L if (show) { // 显示 if (view.visibility != View.VISIBLE) { view.visibility = View.VISIBLE ObjectAnimator.ofFloat(view, "alpha", 0f, 1f).setDuration(time).start() } } else { // 关闭 if (view.isVisible) { val anim = ObjectAnimator.ofFloat(view, "alpha", 1f, 0f).setDuration(time) anim.start() anim.addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { super.onAnimationEnd(animation) view.visibility = View.GONE } }) } } } @BindingAdapter("visibility") @JvmStatic fun visibility(view: View, show: Boolean) { view.visibility = if (show) View.VISIBLE else View.INVISIBLE } @BindingAdapter("imageUrl") @JvmStatic fun loadImage(imageView: ImageView, url: String?) { if (!url.isNullOrEmpty()) { Glide.with(imageView.context) .load(if (url.startsWith("content://")) Uri.parse(url) else url) .placeholder(R.mipmap.icon_default).error(R.mipmap.icon_default) .format(DecodeFormat.PREFER_RGB_565).into(imageView) } } @BindingAdapter("imageDefault") @JvmStatic fun loadImage(imageView: ImageView, item: ImageDefault?) { val url = item?.url ?: "" if (url.isNotEmpty()) { Glide.with(imageView.context) .load(if (url.startsWith("content://")) Uri.parse(url) else url) .placeholder(R.mipmap.icon_default).error(R.mipmap.icon_default) .format(DecodeFormat.PREFER_RGB_565).into(imageView) } else { item?.defaultSrc?.let { imageView.setImageResource(it) } } } @BindingAdapter("imageItem") @JvmStatic fun loadImage(imageView: ImageView, item: FileSelectBean?) { item?.let { when { item.localPath.isNotEmpty() -> { val url = item.localPath Glide.with(imageView.context) .load(if (url.startsWith("content://")) Uri.parse(url) else url) .placeholder(item.placeholder).error(it.error) .format(DecodeFormat.PREFER_RGB_565).into(imageView) } item.url.isNotEmpty() -> { Glide.with(imageView.context).load(item.url) .placeholder(item.placeholder).error(it.error) .format(DecodeFormat.PREFER_RGB_565).into(imageView) } else -> { } } } } } } data class ImageDefault( var url: String, var defaultSrc: Int? = null )