Android自定义View实现闪耀字体效果
作者:ScalpelD 时间:2023-05-10 02:27:43
本文实例为大家分享了闪耀字体效果的具体代码,供大家参考,具体内容如下
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Shader;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* 闪耀字体
*/
public class ShiningFontView extends TextView {
private int mViewWidth;
private Paint mPaint;
private LinearGradient mLinearGradient;
private Matrix mGradientMatrix;
private int mTranslate;
public ShiningFontView(Context context) {
super(context);
}
public ShiningFontView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ShiningFontView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
if (mViewWidth == 0) {
mViewWidth = getMeasuredWidth();
if (mViewWidth > 0) {
mPaint = getPaint();
mLinearGradient = new LinearGradient(0, 0, mViewWidth, 0, new int[]{Color.BLUE, 0xffffffff, Color.BLUE}, null, Shader.TileMode.CLAMP);
mPaint.setShader(mLinearGradient);
mGradientMatrix = new Matrix();
}
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mGradientMatrix != null) {
mTranslate += mViewWidth / 5;
if (mTranslate > 2 * mViewWidth) {
mTranslate = -mViewWidth;
}
mGradientMatrix.setTranslate(mTranslate, 0);
mLinearGradient.setLocalMatrix(mGradientMatrix);
postInvalidateDelayed(100);
}
}
}
使用方式如下
<com.hz56pt.huipaotui.view.ShiningFontView//包裹起来就行
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="@dimen/margin_10"
android:layout_toRightOf="@id/iv_tips1_icon"
android:text="@string/tips1" />
效果图如下
标签:Android,view,闪耀字体
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
WPF ComboBox获取当前选择值的实例详解
2022-02-09 17:26:23
springboot配置mysql数据库spring.datasource.url报错的解决
2023-10-04 12:49:26
Java操作hdfs文件系统过程
2023-12-13 23:42:32
![](https://img.aspxhome.com/file/2023/7/70967_0s.png)
java实现文件上传下载和图片压缩代码示例
2023-01-02 17:49:30
Java构建JDBC应用程序的实例操作
2023-08-07 12:09:13
Maven管理SpringBoot Profile详解
2022-03-20 09:57:45
C#泛型的逆变协变之个人理解
2021-05-28 16:33:03
操作xml,将xml数据显示到treeview的C#代码
2023-01-02 19:56:48
![](https://img.aspxhome.com/file/2023/7/85697_0s.jpg)
关于Intellij IDEA中的Version Control问题
2021-12-27 08:42:01
![](https://img.aspxhome.com/file/2023/3/89943_0s.jpg)
Android 8.0实现蓝牙遥控器自动配对
2021-08-05 08:24:16
AndroidStudio3.6.1打包jar及AndroidStudio4.0打包jar的一系列问题及用法
2021-09-05 14:34:33
![](https://img.aspxhome.com/file/2023/0/126740_0s.png)
Service Activity的三种交互方式(详解)
2022-03-16 20:55:08
详解Android获取系统内核版本的方法与实现代码
2023-11-25 14:51:59
JAVA实现账户取款和存款操作
2023-08-22 16:31:45
Java分析讲解序列化与字典功能的序列化
2021-11-12 11:19:25
springCloud config本地配置操作
2023-01-13 11:07:56
![](https://img.aspxhome.com/file/2023/7/96037_0s.jpg)
JavaApi实现更新删除及读取节点
2023-11-10 07:30:33
![](https://img.aspxhome.com/file/2023/7/59037_0s.png)
MyBatis通用Mapper和PageHelper的过程详解
2022-09-29 16:17:03
Java设计模式之享元模式
2022-01-30 19:03:28
Android学习之Broadcast的简单使用
2023-11-19 15:18:02