Files
assistant-android/app/src/main/java/com/gh/common/view/GradientAlphaTextSpan.kt
2020-12-22 16:08:40 +08:00

28 lines
1.0 KiB
Kotlin

package com.gh.common.view
import android.graphics.*
import android.text.style.ReplacementSpan
import androidx.core.graphics.ColorUtils
class GradientAlphaTextSpan(var textColor: Int) : ReplacementSpan() {
override fun getSize(paint: Paint, text: CharSequence?, start: Int, end: Int, fm: Paint.FontMetricsInt?): Int {
return paint.measureText(text, start, end).toInt()
}
override fun draw(canvas: Canvas, text: CharSequence?, start: Int, end: Int, x: Float, top: Int, y: Int, bottom: Int, paint: Paint) {
val originalColor = if (textColor == 0) paint.color else textColor
val originalColorWithAlphaChanged = ColorUtils.setAlphaComponent(paint.color, 1)
val textWidth = paint.measureText(text, start, end).toInt()
val mShader = LinearGradient(x, 0F, x + textWidth - 10, 0F,
originalColor, originalColorWithAlphaChanged, Shader.TileMode.CLAMP)
paint.shader = mShader
canvas.drawText(text ?: "", start, end, x, y.toFloat(), paint)
paint.shader = null
}
}