Android Shader应用开发之霓虹闪烁文字效果
发布时间 - 2026-01-11 02:21:36 点击率:次本文实例为大家分享了Android霓虹闪烁文字效果的具体代码,供大家参考,具体内容如下
package com.example.apple.shaderdemo;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Shader;
import android.support.annotation.Nullable;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* Created by apple on 2017/5/10.
*/
public class LinearGradientTextView extends TextView {
private TextPaint mPaint;
private LinearGradient mLinearGradient ;
private Matrix mMatrix;
private float mTranslate;
private float DELTAX = 20;
private int mGradientSize;
public LinearGradientTextView(Context context) {
super(context);
}
public LinearGradientTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
/**
* 优先于onDraw执行,在这里得到系统绘制TextView的画笔,然后给这个画笔设置shader
* 这样下面在执行onDraw的时候,使用的就是带有Shader效果的画笔了
* @param w
* @param h
* @param oldw
* @param oldh
*/
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
// ★拿到系统TextView的画笔
mPaint = getPaint();
// 得到文本
String text = getText().toString();
// 用画笔测量文本的长度
float textWith = mPaint.measureText(text);
// 3个文字的宽度
mGradientSize = (int) (textWith / text.length() * 3);
// 从左边-gradientSize开始,即左边距离文字gradientSize开始渐变
// 一个渐变单位是:从第一个字之前3字距离开始到第一个字之前位置终结
//然后一直让这个渐变单位从左往右移动dx位移,直到最右侧后,向左移动
// CLAMP意思是:由于你的只是在渐变3个字的长度,那么剩余的空间,让边缘颜色去填充
mLinearGradient = new LinearGradient(-mGradientSize,0,0,0,new int[]{
0xffff0000, 0xff00ff00, 0xff00ffff},null, Shader.TileMode.CLAMP
);
mPaint.setShader(mLinearGradient);
}
@Override
protected void onDraw(Canvas canvas) {
// 调用super,意思是按照系统绘制textview的流程先把textview绘制完成
super.onDraw(canvas);
// 我在系统基础上再绘制一些效果
mTranslate += DELTAX;
float textWidth = getPaint().measureText(getText().toString());
// 到了边界dx取反
if(mTranslate > textWidth + mGradientSize || mTranslate < 0){
DELTAX = - DELTAX;
}
// 不停地方平移,得到闪烁的效果
mMatrix = new Matrix();
mMatrix.setTranslate(mTranslate, 0);
mLinearGradient.setLocalMatrix(mMatrix);
// 延时重绘
postInvalidateDelayed(50);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# Shader
# 霓虹闪烁文字
# Android手机显示多彩霓虹灯效果
# Android图像处理之霓虹滤镜效果
# Android布局之帧布局FrameLayout详解
# Android布局之FrameLayout帧布局
# Android实现气泡布局/弹窗效果 气泡尖角方向及偏移量可控
# Android布局实现圆角边框效果
# Android动画效果之自定义ViewGroup添加布局动画(五)
# Android给布局、控件加阴影效果的示例代码
# Android编程实现圆角边框布局效果的方法
# Android布局控件DrawerLayout实现完美侧滑效果
# Android开发实现布局帧布局霓虹灯效果示例
# 个字
# 在这里
# 我在
# 基础上
# 一个字
# 先把
# 大家分享
# 到第
# 具体内容
# 大家多多
# 往右
# 边缘
# 不停地
# 只是在
# AttributeSet
# widget
# TextView
# text
# Nullable
# annotation
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
如何在阿里云完成域名注册与建站?
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
如何快速生成高效建站系统源代码?
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
Laravel怎么使用Intervention Image库处理图片上传和缩放
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
Python文件操作最佳实践_稳定性说明【指导】
如何批量查询域名的建站时间记录?
Laravel如何生成API文档?(Swagger/OpenAPI教程)
Android使用GridView实现日历的简单功能
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
Laravel观察者模式如何使用_Laravel Model Observer配置
中山网站推广排名,中山信息港登录入口?
html5的keygen标签为什么废弃_替代方案说明【解答】
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
开心动漫网站制作软件下载,十分开心动画为何停播?
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
如何在阿里云高效完成企业建站全流程?
如何用狗爹虚拟主机快速搭建网站?
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
JS中对数组元素进行增删改移的方法总结
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
Swift中switch语句区间和元组模式匹配
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
无锡营销型网站制作公司,无锡网选车牌流程?
如何构建满足综合性能需求的优质建站方案?
微信小程序 配置文件详细介绍
手机软键盘弹出时影响布局的解决方法
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
浅谈javascript alert和confirm的美化
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
Laravel如何使用.env文件管理环境变量?(最佳实践)
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
如何快速重置建站主机并恢复默认配置?
网站建设保证美观性,需要考虑的几点问题!
如何基于PHP生成高效IDC网络公司建站源码?
如何在局域网内绑定自建网站域名?

