使用Kotlin实现文字渐变TextView

使用Kotlin实现文字渐变TextView,第1张

概述实现效果:实现代码:importandroid.content.Contextimportandroid.graphics.*importandroid.support.annotation.ColorIntimportandroid.support.annotation.ColorResimportandroid.text.TextPaintimportandroid.util.AttributeSetimportandroid.widget.TextVie

实现效果:

实现代码:

import androID.content.Contextimport androID.graphics.*import androID.support.annotation.colorIntimport androID.support.annotation.colorResimport androID.text.TextPaintimport androID.util.AttributeSetimport androID.Widget.TextVIEwimport com.ans.utilactivity.Rclass GradIEntTextVIEw @JvmOverloads constructor(    context: Context?,    attrs: AttributeSet? = null) : TextVIEw(context, attrs) {    private var mPaint: TextPaint? = null    private var mlinearGradIEnt: linearGradIEnt? = null    private var mMeasureWIDth = 0    private var mTextMatrix: Matrix? = null    @colorInt    private var mStartcolor: Int = 0xFF333333.toInt()    @colorInt    private var mEndcolor: Int = 0xFF333333.toInt()    init {        if (attrs != null) {            val attrArray = getContext().obtainStyledAttributes(attrs, R.styleable.GradIEntTextVIEw)            mStartcolor = attrArray.getcolor(R.styleable.GradIEntTextVIEw_startcolor, mStartcolor)            mEndcolor = attrArray.getcolor(R.styleable.GradIEntTextVIEw_endcolor, mEndcolor)        }    }    /**     * 复写onSizeChanged方法     *     */    overrIDe fun onSizeChanged(w: Int, h: Int, olDW: Int, oldh: Int) {        super.onSizeChanged(w, h, olDW, oldh)        mMeasureWIDth = measureDWIDth        if (mMeasureWIDth > 0) {            mPaint = paint            //(x0,y0):渐变起始点坐标            //(x1,y1):渐变结束点坐标            //color0:渐变开始点颜色,16进制的颜色表示,必须要带有透明度            //color1:渐变结束颜色            //colors:渐变数组            //positions:位置数组,position的取值范围[0,1],作用是指定某个位置的颜色值,如果传null,渐变就线性变化。            //tile:用于指定控件区域大于指定的渐变区域时,空白区域的颜色填充方法。            mlinearGradIEnt = linearGradIEnt(                0f                , 0f                , mMeasureWIDth.tofloat()                , 0f                , intArrayOf(mStartcolor, mEndcolor)                , null                , Shader.TileMode.CLAMP            )            mPaint?.shader = mlinearGradIEnt            mTextMatrix = Matrix()        }    }}

attr.xml 引用

<declare-styleable name="GradIEntTextVIEw">    <attr name="startcolor" format="color"/>    <attr name="endcolor" format="color"/></declare-styleable>

引用:

<前缀.GradIEntTextVIEw        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:text="Hello World!"        app:startcolor="@color/colorPrimary"        app:endcolor="@color/colorAccent"       />

 有问题麻烦各位大佬指正。谢谢!

总结

以上是内存溢出为你收集整理的使用Kotlin实现文字渐变TextView全部内容,希望文章能够帮你解决使用Kotlin实现文字渐变TextView所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1062820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存