puzhibing
2026-08-21 5fa94b3718b4a78a4fcea4c97652b0ef20b7de3a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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
)