52 lines
1.6 KiB
Kotlin
52 lines
1.6 KiB
Kotlin
package sushi.hardcore.aira.widgets
|
|
|
|
import android.content.Context
|
|
import android.util.AttributeSet
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import android.widget.RelativeLayout
|
|
import com.bumptech.glide.Glide
|
|
import sushi.hardcore.aira.R
|
|
import sushi.hardcore.aira.databinding.AvatarBinding
|
|
|
|
class Avatar @JvmOverloads constructor(
|
|
context: Context,
|
|
attrs: AttributeSet? = null,
|
|
defStyle: Int = 0
|
|
) : RelativeLayout(context, attrs, defStyle) {
|
|
|
|
private val binding = AvatarBinding.inflate(LayoutInflater.from(context), this, true)
|
|
|
|
init {
|
|
attrs?.let {
|
|
val typedArray = context.obtainStyledAttributes(it, R.styleable.Avatar)
|
|
for (i in 0..typedArray.indexCount) {
|
|
val attr = typedArray.getIndex(i)
|
|
if (attr == R.styleable.Avatar_textSize) {
|
|
val textSize = typedArray.getDimension(attr, -1F)
|
|
if (textSize != -1F) {
|
|
binding.textLetter.textSize = textSize
|
|
}
|
|
}
|
|
}
|
|
typedArray.recycle()
|
|
}
|
|
}
|
|
|
|
fun setTextAvatar(name: String?) {
|
|
val char = if (name == null || name.isEmpty()) {
|
|
'?'
|
|
} else {
|
|
name[0]
|
|
}
|
|
binding.textLetter.text = char.toString()
|
|
binding.imageAvatar.visibility = View.GONE
|
|
binding.textAvatar.visibility = View.VISIBLE
|
|
}
|
|
|
|
fun setImageAvatar(avatar: ByteArray) {
|
|
Glide.with(this).load(avatar).circleCrop().into(binding.imageAvatar)
|
|
binding.textAvatar.visibility = View.GONE
|
|
binding.imageAvatar.visibility = View.VISIBLE
|
|
}
|
|
} |