Android运用自定义控件实现闪烁字

Android自定义view文字闪动效果 整体效果如图,有两种方向的闪动,一种是来回闪动,一种是一个方向闪动 在onSizeChanged方法中,计算好字符串的实际位置后,新建一个LinearGradient对象,颜色渐变方式是左、中、右的位置分别对应字体的颜色、闪光的颜色、字体的颜色。 重写onDraw方法,设置linearGradient的位置矩阵matrix,dx是矩阵的左右位移。然后设置mPaint的着色器,这里的mPai... 阅读详情

项目中要用到闪烁字来标识一些重要的提醒以及醒目的文字等,这里Android并没有为我们提供一些组件,这里可以使用自定义的TextView,运用paint设置渐变渲染器LinearGradient来实现。

先看一下实现的效果,由于写的仓促就没有做动图了。。。就是一个蓝色的渐变:

先来看一下渐变渲染器的LinearGradient的API

构造方法


可以看到,需要传递的参数分别是沿着一条直线的梯度变化坐标点和梯度渐变的颜色数组。这里我们就可以为我们的paint设置LinearGradient来绘制这个控件。

实现代码:

如果控件要支持wrap_content的控件大小的时候,自定义控件的时候必须重写onMeasure()方法,去给出指定的大小。

<span style="font-size:18px;">public class SharderTextView extends TextView {
    //控件的宽
    int mViewWidth;
    //平移量
    int mTransLate;
    private TextPaint paint;
    private LinearGradient mlinearGradient;
    private Matrix matrix;

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

    public SharderTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SharderTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        setMeasuredDimension(measureWidth(widthMeasureSpec),measureHigth(heightMeasureSpec));
    }

    /**
     * 测量宽的方法
     * @param measureSpec
     * @return
     */
    private int measureWidth(int measureSpec){
        int result = 0;
        int measureMode = MeasureSpec.getMode(measureSpec);
        int size = MeasureSpec.getSize(measureSpec);
        if(measureMode == MeasureSpec.EXACTLY)
        {
            result = size;
        }else{
            result = 200;
            //当控件为warp_content时
            if(measureMode ==MeasureSpec.AT_MOST)
            {
                result = Math.min(result,size);
            }
        }
        return result;
    }

    /**
     * 测量控件高度的方法
     * @param measureSpec
     * @return
     */
    private int measureHigth(int measureSpec)
    {
        int result = 0;
        int measureMode = MeasureSpec.getMode(measureSpec);
        int size = MeasureSpec.getSize(measureSpec);
        if(measureMode == MeasureSpec.EXACTLY)
        {
            result = size;
        }else{
            result = 200;
            if(measureMode == MeasureSpec.AT_MOST)
            {
                result = Math.min(result,size);
            }
        }
        return result;
    }
    @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)
        {
            //获取绘制当前TextView的paint对象
            paint = getPaint();
            //创建渲染渐变器
            mlinearGradient = new LinearGradient(0,0,mViewWidth,0,new int[]{Color.BLUE,0xffffffff,Color.BLUE},null, Shader.TileMode.CLAMP);
            paint.setShader(mlinearGradient);
            matrix = new Matrix();
        }
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        if(matrix!=null)
        {
            mTransLate+=mViewWidth/5;
            if(mTransLate>2*mViewWidth)
            {
                mTransLate = -mViewWidth;
            }
            matrix.setTranslate(mTransLate,0);
            mlinearGradient.setLocalMatrix(matrix);
            postInvalidateDelayed(100);
        }
    }
}
</span>


基本就是这样的一个简单的实现,水平有限,欢迎批评指教

android 自定义view 仿电视节目选择控件与字体发光效果 周末时间动手做的小玩意。 首先上效果图        1、预览放大选中项:可点击图片选中,也可以滑动选中图片,选中的图片会加上发光的边框并放大。双击选中的图片会有放大的动画同时透明度加大。 2、炫酷的闪光文字 效果如下 实现方法都比较简单。 第一种效果是用的gallery控件,然后自定义一个adapter继承baseAdapter。其中定义一个setSelect 阅读详情

相关推荐

Android代码实现控件闪烁效果

代码地址如下:http://www.demodashi.com/demo/13162.html 前言 在项目开发过程中,我们有时会遇到需要控件闪烁和停止的问题,这个用xml是可以实现的,但是为了在使用时控制方便,这里我写了一个工具类,方便在代码中控制view的闪烁与停止。 本文将涉及以下类容 1. 闪烁实现原理 2. 在MainActivity中的使用 3. 效果图和项目结...

findhappy117的博客 3411

Android 字体流光闪光效果

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

tianxuzhen的博客 868

Android自定义控件之3D上下翻页效果的倒计时控件

这是一个自定义的倒计时控件,具有3D上下翻页翻转效果。最近项目中需要做一个倒计时控件,需要和iOS端的效果保持一样。大致效果是这样的,如下图所示: 由于暂时还不会怎么样制作gif动态图,所以想看具体效果的,可以在下面的源码中下载运行查看。 废话不说了,开干吧。那么是怎么实现呢?我们首先得找到3D翻页的效果,这个效果我是参考的一个github项目,https://github.com/e

gongwq的博客 6220

Android 闪光字体

参考文章地址:https://www.jianshu.com/p/a9d09cb7577f http://blog.csdn.net/zhangphil/article/details/52004027 安卓闪光字体主要是获取到控件的画笔Paint,然后给Paint添加Shader(渲染效果),将渲染效果平行移动产生闪闪发光的感觉,本文是针对TextVi...

baoolong的博客 1302

android 处理动画闪烁效果

很久没写过博客了,新年过后来一发。    在以前的微信效果的博文中,有一点问题没有实现,就是动画效果的闪烁问题,一下先说明几点吧。   1. android中的动画效果只是展示的一场效果,控件本身并没有移动。   2. 设置动画效果停顿,停顿的位子的控件 如果没有移动到该位置,那么这是个假象,控件还在原来位置。这里的动画 是个假的。  下面是代码: package com.animati

luinsist的专栏 4631

Android文字闪烁效果

http://blog.csdn.net/xu_fu/article/details/24484019代码,实现类似shimmer的文字闪烁效果

android自定义控件文字绘制,Android自定义控件:文字闪光移动效果

如图的文字闪光效果,下面分别用两种方式来实现。shimmer_text.gif实现方式 一由于要实现文字的闪光移动,自定义控件直接继承TextView。在文字上面绘制一个矩形框,矩形框和文件相交处显示矩形框的颜色,不断移动矩形框的位置,从而实现闪光不断移动的效果。public class BlinkTextView extends TextView {...}通常字符串并不会完全填充View,因此...

weixin_36257663的博客 300

利用Openlayers4实现地图遮罩效果(二)

之前实现的遮罩效果,在深色背景的底图上,对要突出的区域采用半透明遮罩,以此来突出该区域。但是有时底图颜色偏白,这时候不再适合对要突出的区域采用遮罩,而是要对突出区域之外进行遮罩处理。两种效果的对比入下图: ...

此爱如少年 6398

android 实现控件闪烁

控件闪烁,其实就是控制控件的透明度,从可见到逐渐不可见,再逐渐到可见,一直反复。因此,要想实现控件闪烁,只需要使用android中的alpha动画即可。 开启闪烁,代码如下: /** * 开启View闪烁效果 * * */ private void startFlick( View view ){ if( null == vie

zenmela2011的专栏 4819

SAP数据导入工具(LSMW) 超级详细教程(批量导入内部订单)

用户提了个需求,让我批量导入内部订单几百个内部订单。我本打算用写段ABAP 代码来调用 BAPI (BAPI_INTERNALORDER_CREATE)就可以了。但想到我很久没有用过LSMW 了,都快要忘记了。于是我采用LSMW的方式,完成了任务。并把过程记录下来,形成教程方便我以后回头查看,分享出来也希望对大家有帮助。

IT小职员 2万+

(最新更新!)2024全国大学生数学建模竞赛(国赛)B题决策优化+鲁棒模型完整建模全解全析

2024全国大学生数学建模竞赛(国赛)B题完整建模全解全析(已更新!)

Yilu264的博客 9417

Android实现控件闪烁效果(附带源码)

Android实现控件闪烁效果(附带源码)

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

从BIN文件到可烧录程序:深入理解ADI DSP程序读取背后的原理与安全边界

本文深入探讨了ADI DSP程序从BIN文件到可烧录程序的转换原理与安全边界,详细解析了JTAG接口、仿真器工作流程及Flash存储结构。通过Visual DSP++工具,开发者可以理解程序读取的底层机制,同时强调了知识产权保护的重要性,为嵌入式开发提供了实用建议。

weixin_27956639的博客 263

android 控件发光_Android代码实现控件闪烁效果

前言在项目开发过程中,我们有时会遇到需要控件闪烁和停止的问题,这个用xml是可以实现的,但是为了在使用时控制方便,这里我写了一个工具类,方便在代码中控制view的闪烁与停止。本文将涉及以下类容闪烁实现原理在MainActivity中的使用效果图和项目结构图实现过程下面作以讲解一.闪烁实现原理闪烁是通过android中的动画类Animation实现的,我在实现view闪烁动画的时候,涉及到Anima...

weixin_39747293的博客 580

2025年普通人转向人工智能运维(AIOps)学习建议(附最新技术实践与资源)

AIOps不仅是技术的叠加,更是运维流程的重构。建议通过“学习-实践-反馈”循环,逐步从工具使用者成长为解决方案设计者。如需完整资源链接,可访问上述推荐的优快云博客及GitHub仓库。

资深全栈架构师,乐于在 优快云 分享技术见解,与大家携手共进,共攀技术巅峰! 3096

Python爬虫教程:抓取社交媒体内容(以Facebook和Instagram为例)

为什么抓取社交媒体内容?品牌分析与监测:通过抓取品牌、产品或服务相关的社交媒体数据,可以获得公众对其的评价,识别市场趋势,制定营销策略。情感分析:分析用户在社交平台上的情感倾向,如对某事件、产品、服务的正面或负面情绪。舆情监控:通过抓取大量社交媒体内容,监测公众对热点事件的反应,发现潜在的社会问题。用户行为分析社交媒体的数据类型:帖子和内容:包括用户发布的文本、图片、视频等。用户互动用户信息:包括用户名、粉丝数、关注数等社交信息。社交媒体的反爬虫机制:API限制。

2201_76125261的博客 1337

Android开发自定义TEXTVIEW,Android继承现有控件拓展实现自定义控件textView

通常情况下,Android实现自定义控件无非三种方式。Ⅰ、继承现有控件,对其控件的功能进行拓展。Ⅱ、将现有控件进行组合,实现功能更加强大控件。Ⅲ、重写View实现全新的控件本文重点讨论继承现有控件进行拓展实现自定义控件。这是一个非常重要的自定义控件的方法,可以站在原生控件这个巨人肩膀上,拓展自身的功能,一般来说,我们可以在ondraw方法中对原生控件进行绘制。本文将以拓展textView为例,看我...

weixin_32230811的博客 428

YOLO26涨点改进 | 小目标损失函数独家改进篇 | TGRS 2025 | 引入AdaFocalLoss损失函数,改进小目标检测,自适应聚焦小目标与样本分布不平衡,提升检测精度与训练稳定性

本文提出将AdaFocalLoss损失函数应用于YOLO26模型优化,有效提升小目标检测性能。AdaFocalLoss通过目标尺寸感知机制和IoU引导的动态调节,自动调整训练权重和聚焦程度,解决了样本不平衡问题。相比传统损失函数,它无需手动调参,能增强训练稳定性,在多尺度、复杂场景下表现优异。文章详细介绍了AdaFocalLoss的原理、优势及实现方法,并提供了代码集成指南。实验表明该方法能显著提升检测精度和鲁棒性,特别适用于小目标检测任务。

Ai缝合怪、助力小伙伴高效发论文 335

android如何写自定义控件,Android继承现有控件拓展实现自定义控件textView

通常情况下,Android实现自定义控件无非三种方式。Ⅰ、继承现有控件,对其控件的功能进行拓展。Ⅱ、将现有控件进行组合,实现功能更加强大控件。Ⅲ、重写View实现全新的控件本文重点讨论继承现有控件进行拓展实现自定义控件。这是一个非常重要的自定义控件的方法,可以站在原生控件这个巨人肩膀上,拓展自身的功能,一般来说,我们可以在ondraw方法中对原生控件进行绘制。本文将以拓展textView为例,看我...

weixin_33308985的博客 194

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

android 继承现有控件,Android继承现有控件拓展实现自定义控件textView

通常情况下,Android实现自定义控件无非三种方式。Ⅰ、继承现有控件,对其控件的功能进行拓展。Ⅱ、将现有控件进行组合,实现功能更加强大控件。Ⅲ、重写View实现全新的控件本文重点讨论继承现有控件进行拓展实现自定义控件。这是一个非常重要的自定义控件的方法,可以站在原生控件这个巨人肩膀上,拓展自身的功能,一般来说,我们可以在ondraw方法中对原生控件进行绘制。本文将以拓展textView为例,看我...

weixin_28223453的博客 225

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: Android知识点——内容提供者和内容观察者ContentProvider ContentResolver
下一篇: Android的界面提醒之对话框Dialog
ProbuINg
博客等级 码龄14年 10粉丝 77原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值