有一个小的需求,需要对字体进行描边,一开始理解错了需求,以为要对字体镂空处理,然后尝试了许多做错了许多
后来发现是一个简单的描边处理,直接chatgpt就可以得出来一个简单的实现代码,
class BorderTextView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : AppCompatTextView(context, attrs, defStyleAttr) {
override fun onDraw(canvas: Canvas?) {
// // 获取当前 TextView 的画笔对象
val paint = paint
val originalColor = currentTextColor
// 设置描边效果
paint.style = Paint.Style.STROKE
paint.strokeWidth = 2f // 描边宽度
setTextColor(Color.parseColor("#FF086ADA")) // 描边颜色
// setTextColor(Color.parseColor("#FFFFFFFF")) // 描边颜色
super.onDraw(canvas)
// 恢复填充模式
paint.style = Paint.Style.FILL
setTextColor(Color.WHITE) // 字体颜色
super.onDraw(canvas)
}
}
是不是很简单?
问题思考:如果是镂空的话,应该怎么解决呢?
可参考或者直接使用 https://github.com/FlyJingFish/HollowTextView