Android自定义View实现闪耀字体效果

发布时间 - 2026-01-10 22:24:18    点击率:

本文实例为大家分享了闪耀字体效果的具体代码,供大家参考,具体内容如下

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  # 闪耀字体  # Android 自定义通用的loadingview实现代码  # Android自定义View实现仿GitHub的提交活跃表格  # Android自定义Animation实现View摇摆效果  # Android自定义View 实现水波纹动画引导效果  # android自定义ImageView仿图片上传示例  # Android自定义view之仿支付宝芝麻信用仪表盘示例  # Android自定义View之边框文字、闪烁发光文字  # Android自定义WaveView实现波浪进度效果  # Android自定义View实现shape图形绘制  # Android 自定义view仿支付宝咻一咻功能  # Android自定义View实现通讯录字母索引(仿微信通讯录)  # Android编程使用自定义View实现水波进度效果示例  # 就行  # 大家分享  # 具体内容  # 大家多多  # int  # private  # mPaint  # mViewWidth  # extends  # TextView  # widget  # ShiningFontView  # public  # mLinearGradient  # Override  # defStyleAttr  # void  # protected  # attrs  # mTranslate 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  Laravel如何配置任务调度?(Cron Job示例)  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  如何安全更换建站之星模板并保留数据?  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  如何在 React 中条件性地遍历数组并渲染元素  PythonWeb开发入门教程_Flask快速构建Web应用  如何挑选高效建站主机与优质域名?  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  高防服务器租用指南:配置选择与快速部署攻略  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  Laravel如何处理异常和错误?(Handler示例)  如何做网站制作流程,*游戏网站怎么搭建?  使用spring连接及操作mongodb3.0实例  如何用wdcp快速搭建高效网站?  Laravel如何使用Sanctum进行API认证?(SPA实战)  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  Python文件流缓冲机制_IO性能解析【教程】  android nfc常用标签读取总结  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel怎么上传文件_Laravel图片上传及存储配置  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  如何确保FTP站点访问权限与数据传输安全?  网站优化排名时,需要考虑哪些问题呢?  微信小程序 scroll-view组件实现列表页实例代码  怎么用AI帮你为初创公司进行市场定位分析?  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  如何用好域名打造高点击率的自主建站?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  如何挑选最适合建站的高性能VPS主机?  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  如何在IIS中配置站点IP、端口及主机头?  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  python中快速进行多个字符替换的方法小结  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  如何用PHP快速搭建高效网站?分步指南  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  Laravel怎么连接多个数据库_Laravel多数据库连接配置  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  简单实现Android文件上传