很多时候我们也需要制作一些彩色字体的文本,文本的霓虹灯效果,以及链接字体哈,字体背景色,下标之类的,而很多时候我们却用多个textview去达到这个效果,可以说是很浪费时间浪费经精力的,这时候怎么办呢?下面就有详解。
文章结构:1.自定义TextView实现彩色字体与霓虹灯字体 2.一个可以字体实现多项效果的类(封装好了,可直接使用)
先上图看看我们要做的效果
这里写图片描述
一、自定义TextView之彩色字体,直接上代码解释
package com.demo.myview.colourfulFontOrNeonTextView;
import android.content.Context;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.Shader;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* Created by 符柱成 on 2016/8/19.
*/
public class ColourfulFontTextview extends TextView {
int TextViewWidth; //TextView的宽度
private LinearGradient mLinearGradient; //渲染器
private Paint paint;
public ColourfulFontTextview(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
//在 onSizeChanged 方法中获取到宽度,并对各个类进行初始化
if (TextViewWidth == 0) {
TextViewWidth = getMeasuredWidth();
if (TextViewWidth > 0) {
//得到 父类 TextView 中写字的那支笔
paint = getPaint();
//初始化线性渲染器
mLinearGradient = new LinearGradient(0, 0, TextViewWidth, 0,
new int[]{Color.BLUE, Color.YELLOW, Color.RED, Color.GREEN, Color.GRAY}, null, Shader.TileMode.CLAMP);
//把渲染器给笔套上
paint.setShader(mLinearGradient);
}
}
}
}
2.在xml中的引用:
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical"
tools:context=".colourfulFontOrNeonTextView.ColourfulFontOrNeonAcitivity">
android:layo