Android 闪光字体

安卓14我们该知道的一切(从隐私到可访问性等等) 4 月 12 日,谷歌发布了第一个 Android 14 测试版,标志着今年晚些时候稳定发布的 Android 14 道路上的另一个里程碑。Google手机已经可以使用Android 14安装手机上安装预览版,使用其他品牌手机的用户将需要等待几个月后OEM特定的版本。早期预览版也让我们很好地了解了有关功能和调整的期望。让我们来看看 Android 14 中的新功能。 阅读详情

参考文章地址:https://www.jianshu.com/p/a9d09cb7577f

                    http://blog.youkuaiyun.com/zhangphil/article/details/52004027

安卓闪光字体主要是获取到控件的画笔Paint,然后给Paint添加Shader(渲染效果),将渲染效果平行移动产生闪闪发光的感觉,本文是针对TextView进行重写,按原理,ImageView应该也可以产生相同的效果

先看自定义控件的代码,非常简单

@SuppressLint("AppCompatCustomView")
public class TwinkleTextView extends TextView{

    // 线性渐变渲染
    private LinearGradient mLinearGradient;
    //环形渐变渲染
    private RadialGradient mRadialGradient;
    // 渲染矩阵
    private Matrix mGradientMatrix;
    // 画笔
    private Paint mPaint;
    private int mViewWidth = 0;
    private int mViewHeight = 0;

    private int mTranslateX = 0;

    public TwinkleTextView(Context context) {
        super(context);
    }

    public TwinkleTextView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public TwinkleTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public TwinkleTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        if (mViewWidth == 0 || mViewHeight==0) {
            mViewWidth = getMeasuredWidth();
            mViewHeight=getMeasuredHeight();
            if (mViewWidth > 0 ||  mViewHeight>0 ) {
                mPaint = getPaint();
                // 创建RadialGradient对象
                // 第一个,第二个参数表示渐变圆中心坐标
                // 第三个参数表示半径
                // 第四个,第五个,第六个与线性渲染相同
                mRadialGradient = new RadialGradient(50, 50,30, new int[] {
                        0x11FEB726, 0xffFEB726, 0x33FEB726 }, new float[] { 0f,
                        0.5f, 1f}, Shader.TileMode.CLAMP);

                // 创建LinearGradient对象
                // 起始点坐标(-mViewWidth, 0) 终点坐标(0,0)
                // 第一个,第二个参数表示渐变起点 可以设置起点终点在对角等任意位置
                // 第三个,第四个参数表示渐变终点
                // 第五个参数表示渐变颜色
                // 第六个参数可以为空,表示坐标,值为0-1
                // 如果这是空的,颜色均匀分布,沿梯度线。
                // 第七个表示平铺方式
                // CLAMP重复最后一个颜色至最后
                // MIRROR重复着色的图像水平或垂直方向已镜像方式填充会有翻转效果
                // REPEAT重复着色的图像水平或垂直方向
                mLinearGradient = new LinearGradient(-mViewWidth/3, 0, 0, mViewHeight,
                        new int[] { 0xff000000, 0xffC0C0C0 , 0xff000000 },
                        new float[] { 0, 0.5f, 1f }, Shader.TileMode.CLAMP);
                mPaint.setShader(mLinearGradient);
                mPaint.setColor(Color.parseColor("#ff000000"));
                //设置字体阴影效果
                //第一个参数代表阴影的半径
                //第二个参数代表阴影在X方向的延伸像素
                //第三个参数代表阴影在Y方向的延伸像素

                mPaint.setShadowLayer(3, 2, 2, 0xFFFF00FF);
                mGradientMatrix = new Matrix();
            }
        }
    }



    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        if ( mGradientMatrix != null) {
            mTranslateX += mViewWidth / 10;
            if (mTranslateX > 2 * mViewWidth ) {
                mTranslateX = -mViewWidth;
            }
            mGradientMatrix.setTranslate(mTranslateX, 0);

            // mLinearGradient.setLocalMatrix(mGradientMatrix);
            mLinearGradient.setLocalMatrix(mGradientMatrix);
            postInvalidateDelayed(100);
        }
    }

}

LinearGradient的构造方法参数较多,下面我们看下都有什么用呢

  • xStart:  x方向的起点坐标,x,y的起点和终点坐标确定了渐变色的2个属性,1.渐变色平铺时的角度,2.渐变色的宽度;高度不用设置时因为根据宽度和模式,角度铺满控件的
  • yStart:Y方向的起点坐标
  • xEnd:    X方向的终点坐标
  • yEnd:    Y方向的终点坐标
  • int[]:       渐变色数组,三个颜色分别为开始的颜色,中间的颜色,和后面的颜色如 new int[] { 0xff000000, 0xffC0C0C0 , 0xff000001 }
  • float[]:    分别指上面三个颜色的位置,如  new float[] { 0, 0.5f, 1f },其中0.5f是指0xffC0C0C0在上面X Y所组成的坐标点的正中间,其他颜色是向两边渐变的,同理1f是指后面的颜色0xff000001在最边缘,其他颜色向中间的颜色渐变(也就是说出国最边缘1f的地方是0xff000001颜色,它左手边的全是渐变色),
  • ShaderModle:    渐变平铺的模式,共有三种 

        -CLAMP           边缘拉伸,如果控件不能被填满,会用后面的颜色覆盖(如0xff000001)
        -REPEAT         在水平和垂直两个方向上重复,相邻图像没有间隙

 

        -MIRROR         以镜像的方式在水平和垂直两个方向上重复,相邻图像有间隙

 

下来我们用图像更形象的看下 坐标 不同带来的角度问题和 三色位置 的影响

我们再看看三种覆盖模式所带来的着色效果

看了上面图片后,想要什么样的效果,自己应该可以随意搭配了,配好想要的效果后,给画笔添加着色器效果,然后就可以在onDraw()方法里面用Matrix对着色的效果进行平移来达到闪光的效果;

最后贴上布局文件的代码,只要引入该布局就可以看到闪闪发光的字体了,是不是很简单

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.test.caiwen.customview.TwinkleTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Hello World"
        android:textSize="35sp"
        android:textStyle="bold"
        android:background="#ff000000"/>
</LinearLayout>

上述问题如有错误请指正,有更好的想法大家交流分享下

 

自定义TextView实现文字闪烁效果 立即下载

相关推荐

光谱数据计算CIE值(三刺激值、CIE1931、CIE1976、CCT)软件

软件界面如下,免安装,拷贝即可使用 导入光谱数据即可计算三刺激值、CIE1931、CIE1976、CCT CIE1931、CIE1976色坐标图形只管显示 导入的光谱数据格式如下,txt文本 波长380到780,间隔1nm 注意:缺省的数据默认写0即可 下面为一些CIE相关介绍: CIE(国际发光照明委员会):原文为Commission Internationale de L’Eclairage(法)或International Commission on Illumination(英)。这个委员会创

业余程序员小徐的博客 2万+

win桌面圣诞小插件分享

圣诞到了,最近有小伙伴问我有没有一些桌面圣诞小插件可以分享一下,所以我就特地去寻找了一些,感觉效果还不错,所以分享出来。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1201

24位ADC的精度陷阱:为什么你的ADS1232实测性能不达标?

本文深入探讨了24位ADC芯片ADS1232在实际应用中性能不达标的原因,揭示了高精度ADC性能依赖周边电路设计的关键问题。通过分析电源系统、参考电压稳定性、PCB布局等常见陷阱,提供了优化方案和调试技巧,帮助工程师充分发挥ADS1232的潜力,实现接近理论值的测量精度。

weixin_28285943的博客 407

Unity Shader:闪烁

这里的实现分为UI闪烁和物体闪烁,其中具体可分为:UI闪烁、物体闪烁与半透明闪烁。

Tel17610887670的博客 2717

【大模型推理】工作负载的弹性伸缩

推荐采用 并发请求数(Concurrency) 或 队列深度(Queue Size) 结合GPU监控指标(显存/算力利用率),并依托Knative KPA、Fluid缓存、优先级调度等技术实现高效弹性伸缩[citation:6][citation:7][citation:8]。QPS无法体现这种资源消耗累积效应[citation:6]。并发数的本质:是实时反映资源占用的瞬时状态量,而非速率指标,尤其适合单次请求资源消耗大、处理时间长的业务(如LLM推理)[citation:1][citation:6]。

王尚权 qq:2515162716 1185

Mid-360与FAST-LIO2实战:从点云采集到高精度建图全流程解析

本文详细解析了使用Livox Mid-360激光雷达与FAST-LIO2算法实现高精度实时建图的全流程。内容涵盖硬件准备、软件环境搭建、算法部署配置、数据采集实战,并重点探讨了多楼层场景下的参数调优与误差抑制策略,为机器人及无人机三维感知应用提供了实用指南。

prometheus9mon的博客 415

android 字体跳动,【Android学习】动态文字闪动效果

在学安卓之前有在其他网站上看到闪动文字的自定义控件,感觉很炫酷,高大上。直到我看了《Android群英传》,这本书真不错,强烈推荐。新手进阶很有帮助。效果: 书中原文:利用Paint对象的Shader渲染器。先在onSizeChanged里进行初始化,根据View的宽设置LinearGradient渐变渲染器。其中最关键的就是使用【getPaint()】方法获得当前回执TextView的Paint...

weixin_35549786的博客 1239

用 CDS 作为 Referenced Data Source 开发 SAP Gateway OData 服务,一条更轻的 SEGW 路线

本文介绍了SAP Gateway项目中从传统手工建模到基于CDS View的现代化开发方式转变。主要内容包括: 传统方式需要在SEGW中手动创建Entity Type、Entity Set等元素,并在DPC_EXT中编写大量查询逻辑,存在模型层和业务逻辑重复表达的问题。 7.50版本后,SAP Gateway与ABAP CDS深度集成,可通过SEGW直接引用CDS View作为数据源,自动生成数据模型和SADL读取逻辑,支持完整的OData查询功能。 最佳实践建议通过Consumption View而非直接

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 707

Android 字体流光闪光效果

Android TextView 流光效果、颜色注入效果

tianxuzhen的博客 869

如何实现一个用STM32F103C8T6作为主控芯片,加上AD8232、MAX30102 、MPU6050模块的用于运动中监测心率变异性??

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1213

keras tensorflow 的lstm的新冠疫情感染人数预测 附完整代码数据 可直接运行

keras tensorflow 的lstm的新冠疫情感染人数预测 附完整代码数据 可直接运行

850

Android实现LED发光字效果(附带源码)

Android实现LED发光字效果(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1413

MicroCap声学仿真介绍(三)-人耳的频率响应

这里需要注意的是,24mm我们会填为”24m”,这里的“m”是毫的意思,24m意思是24e-3,同理7.4mm我们可以填为7.4m,意思是7.4e-3。MicroCap声学库中,已内置“声源”模块和“管”模块,我们需要调用这两个模块,并用连接线将这两个模块连接到一起,完成仿真工作。上图中第一个图是在管的一端输入1Pa(94dBSPL)的信号,管的另一端的不同频率的声压大小的仿真结果。上述的结果跟我们的常识也是符合的。换言之,我们要仿真的目的是在管的一端加1pa的声压时,管的另一端不同频率下的声压分布。

山无忧的博客 1471

android流光动画和流光字体_android 文字擦除闪光动画

android流光字体。

2501_90325970的博客 367

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

android 字体从左往右发光闪过

个人还是很看中用户体验这一方面,所以有时候使用别人开发的app(一些特效),自己也想打开思维,这是怎么实现的。 今天的效果是这样的,有一行字体以字体自身发亮的方式从左向右闪过。效果图如下: 这个我还没研究透彻(涉及到渲染、矩阵知识点--->这两个知识点是必学的),所以先上代码吧(有参考Goole及国内的文章,然后自己做了些注释): import android.annotatio

JackyCheung 2796

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android闪闪发光字体效果

Android实现类似Facebook shimmer加载效果,可以实现字体的闪闪发光

xu_fu的专栏 2万+

Android自定义控件(三)——打造闪闪发光的字体

介绍 在小米的开机动画和一些欢迎界面中, 我们经常看到这种闪闪发光的流光字体。看起来很炫酷,其实实现原理相当简单,我们只需要写自定义控件继承TextView,然后使用渲染器Gradient设置颜色渐变和Paint的setShadowLayer方法设置阴影,然后不断刷新改变位移即可。    实现 首先写一个shineTextView类继承自TextView. public cl

音符跳跃每天···的博客 661

超实用!1000 万次下载、评分 4.9 的免费放大镜应用,让小字体阅读不再费劲

此人还用这款应用在家里阅读小字体内容,如药瓶上的说明、食品柜里的营养标签、设备和电器上的小序列号,甚至在妻子做手工活时帮忙穿针。总体而言,这款工具是内置 Google Magnifier 的有力替代品,唯一怀念默认 Google 应用的地方是缩放时会弹出小参考窗口,能看到相机的拍摄位置。免费的 Magnifier + Flashlight 应用程序适用于任何 Android 手机,它可以放大小字体或远处的标识,让内容更易阅读,还具备手电筒功能,适用于光线昏暗的环境。

IT界那些事儿 25

优优屏幕锁功能介绍之六 闪光字体制作

 先定义一个FancyText类:    class FancyText    {        private const int blurAmount = 5;        public static Image ImageFromText(string strText, Font fnt, Color clrFore, Color clrBack)        {          

602

android 动画字体,android字体闪烁动画(线程)

android字体闪烁动画,使用线程和Timer实现public class ActivityMain extends Activity {public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);spark();}private...

weixin_33462540的博客 166

特效1 闪光字体(适应于启动页)

1、准备的包shimmer 2、l

chenyunpen9的专栏 828

安卓 文本框怎么贴近边缘_手机来电闪光,边缘闪光,炫酷超任性

阅读本文前,请您先点击上面的蓝色字体,再点击“关注”,这样您就可以继续免费收到各种有关娱乐的文章了。每天都有分享,完全是免费订阅,请放心关注。 ...

weixin_39760857的博客 465

java闪光灯手电筒_Android_Android 开启闪光灯做手电筒的详解,复制代码 代码如下:public class H - phpStudy...

Android 开启闪光灯做手电筒的详解public class HandLightActivity extends Activity implements OnClickListener{private ToggleButton toggleButton;private Camera m_Camera;@Overrideprotected void onCreate(Bundle savedIn...

weixin_29148445的博客 298

android 上下滚动文字_多功能LED显示,制作滚动荧光字幕技能!

软件介绍:这是一款手机模拟LED灯牌的软件,轻松使用手机就能制作出自己想要的LED灯牌,支持LED字幕保存、LED闪光灯牌制作、荧光棒样式自定义等功能,界面清爽,功能炫酷、显示元素包括动画,图像,声音,视频,文本,几何图像,表格。它支持所有图像格式的文件、视频文件、 txt、rtf文本文件、flash文件,还可接入互联网播放网上直播的内容。所有显示元素可设置200多种特技花样和伴随声音。...

weixin_39777404的博客 853

android6.0闪光灯源码,android手电筒+闪光灯基本源码_linux编程_linux公社-linux系统门户网站...

android手电筒+闪光灯基本源码_linux编程_linux公社-linux系统门户网站繁體背景:你好,游客 登录 注册 搜索首页Linux新闻Linux教程数据库技术Linux编编程程服务器应用Linux安全Linux下载Linux认证Linux主题Linux壁纸Linux软件数码手机电脑首页 Linux编程阅阅读读新新闻闻日期:2014-02-10来源:Linux社区 作者:zhonghe...

weixin_36255898的博客 310
上一篇: Android Handler消息机制实现原理
下一篇: Android VideoView播放网络视频简介
baoolong
博客等级 码龄12年 47粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

baoolong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值