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<String>?) {
|
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
|
)
|