TextView设置跑马灯效果

简介: TextView设置跑马灯效果

需求

实现视频上方文字滚动效果

image.png

android跑马灯效果

分析

可使用TextView来实现这个跑马灯效果

实现效果

文字底部设置灰色透明背景显示,名称以及奖励金额使用高亮色号显示

image.png

TextView跑马灯效果示例

具体实现

android.xml代码

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    
    <TextView
        android:id="@+id/tv_head_effect"
        android:layout_width="200dp"
        android:layout_height="30dp"
        android:layout_gravity="center"
        android:gravity="center"
        android:ellipsize="marquee"
        android:singleLine="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:text="恭喜玩家XXX成功提现100元"
        android:textColor="#FFFFFF"
        android:textSize="12sp"
        android:textStyle="bold"
        android:background="@drawable/head_effect_shape"/>

</FrameLayout>

关键属性介绍

android:ellipsize="marquee" //设置跑马灯显示效果
android:singleLine="true" //必须单行显示
android:marqueeRepeatLimit="marquee_forever" //实现无限循环

android.xml用到的background资源

Android实现页面渐变效果

.java业务代码

package com.fungame.activity;

import android.graphics.Color;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.style.ClickableSpan;
import android.view.View;
import android.widget.TextView;
import com.fungame.R;
import androidx.annotation.NonNull;

public class HeadEffectActivity extends BaseActivity {

    private TextView tv_head_effect;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_head_effect);

        tv_head_effect = findViewById(R.id.tv_head_effect);

        String[] userNameArr = {"依依", "丫丫", "张三", "尼古拉斯赵四", "虎虎生威",
                "六六大顺", "琪琪", "八八大发", "九九归一", "十全十美"};
        String[] moneyArr = {"100", "200", "300", "400", "500",
                "600", "700", "800", "900", "1000"};

        String str = "";
        String s = "";
        SpannableString spannableStr = null;
        SpannableString spannableS = null;
        SpannableStringBuilder spannableStringBuilder = null;
        SpannableStringBuilder ssb = new SpannableStringBuilder();

        for (int i = 0; i < userNameArr.length; i++) {
            spannableStringBuilder = new SpannableStringBuilder("恭喜玩家");
            str = userNameArr[i];
            s = moneyArr[i];
            spannableStr = new SpannableString(str);
            spannableS = new SpannableString(s);
            spannableStr.setSpan(new ClickableSpan() {
                @Override
                public void onClick(View widget) {
                }

                // 重写显示状态
                @Override
                public void updateDrawState(@NonNull TextPaint ds) {
                    ds.setColor(Color.parseColor("#FF00FF"));
                }
            }, 0, str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

            spannableS.setSpan(new ClickableSpan() {
                @Override
                public void onClick(@NonNull View widget) {
                }

                @Override
                public void updateDrawState(TextPaint ds) {
                    ds.setColor(Color.parseColor("#FF00FF"));
                }
            }, 0, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

            spannableStringBuilder.append(spannableStr);
            spannableStringBuilder.append("成功提现");
            spannableStringBuilder.append(spannableS);
            spannableStringBuilder.append("元");
            spannableStringBuilder.append("                                                                  ");
            ssb.append(spannableStringBuilder);
        }

        tv_head_effect.setSelected(true);
        tv_head_effect.setText(ssb);
        tv_head_effect.invalidate();
    }
}
目录
相关文章
|
2月前
|
人工智能 自然语言处理 运维
企业建设智能客服系统要多少钱?2026年中小微到集团企业预算方案全攻略
本文解析智能客服建设成本,从万元级SaaS订阅到百万级私有化定制,详解阿里云瓴羊Quick Service针对中小微、中大型及集团企业的三级预算方案,助力企业精准投入、高效升级数字化服务能力。(239字)
|
3月前
|
存储 弹性计算 人工智能
阿里云服务器通用型g9i实例怎么样?性能、收费标准与2核8G、4核16G、8核32G最新活动价格
阿里云第九代企业级ECS通用型g9i实例,凭借阿里云全新CIPU架构与英特尔至强6处理器,实现算力显著提升,提供稳定可预期的高性能输出,适用于多场景。g9i实例提供2核8G到192核768G的广泛配置,支持高性能存储与网络I/O,满足企业核心业务需求。其计费模式灵活,包括按量付费与包年包月,后者提供长期订阅优惠。相比其他实例,g9i在性能、安全性及生态兼容性上优势显著,是企业核心生产系统的理想算力底座。
|
XML 数据可视化 API
Android经典实战之约束布局ConstraintLayout的实用技巧和经验
ConstraintLayout是Android中一款强大的布局管理器,它通过视图间的约束轻松创建复杂灵活的界面。相较于传统布局,它提供更高灵活性与性能。基本用法涉及XML定义约束,如视图与父布局对齐。此外,它支持百分比尺寸、偏移量控制等高级功能,并配有ConstraintSet和编辑器辅助设计。合理运用可显著提高布局效率及性能。
1236 0
|
人工智能 云栖大会 云计算
2024 云栖大会,来啦!门票开抢,先到先得!
云栖大会 2024 免费门票限量领取!
793 5
2024 云栖大会,来啦!门票开抢,先到先得!
|
XML Java API
List与String相互转化方法汇总
本文汇总了List与String相互转化的多种方法,包括使用`String.join()`、`StringBuilder`、Java 8的Stream API、Apache Commons Lang3的`StringUtils.join()`以及Guava的`Joiner.on()`方法实现List转String;同时介绍了使用`split()`方法、正则表达式、Apache Commons Lang3的`StringUtils.split()`及Guava的`Splitter.on()`方法实现String转List。
2743 1
List与String相互转化方法汇总
|
容器
【LVGL快速入门】LVGL开源框架入门教程之框架使用(二)
【LVGL快速入门】LVGL开源框架入门教程之框架使用(二)
1114 1
|
Web App开发 机器学习/深度学习 文字识别
[雪峰磁针石博客]免费的好用的OCR工具 人脸识别等图像识别工具
tesseract -- 推荐 Tesseract 已经有 30 年历史,开始它是惠普实验室的一款专利软件,然后在 2005 年开源,自 2006 年后由 Google 赞助进行后续的开发和维护。 在 1995 年 Tesseract 曾是世界前三的 OCR 引擎,而且在现在的免费 OCR 引擎中,其识别精度也仍然是出类拔萃的。
|
Shell 网络安全 数据安全/隐私保护
亚马逊AWS-EC2云服务器部署代理服务
这里是使用的AWS的EC2服务器来搭建的一个SSR代理服务器,也可以使用阿里云的服务器,相应的视频地址在这里 https://developer.aliyun.com/live/249082?spm=a2c6h.26396819.creator-center.10.34773e18eRYmWL
2232 1
亚马逊AWS-EC2云服务器部署代理服务
|
SQL 测试技术 DataX
DataX数据同步无响应
解决Datax同步Starrocks长时间之后无响应问题
|
机器学习/深度学习 设计模式 自然语言处理
一个中心+三大原则 -- 小蜜这样做智能对话开发平台
对话工厂(Dialog Studio)是面向第三方开发者的智能对话开发平台,目前已经是云小蜜中智能客服机器人、智能外呼、智能导航的核心对话引擎,服务了政务线、金融线、运营商线、大通用线等众多的客户。本文是云小蜜的资深算法专家李永彬(水德)在2018年做的分享,围绕平台来源、设计理念、核心技术、业务落地情况四大维度讲述了一个较为完整的智能任务型对话开发平台的全景。
6044 0
一个中心+三大原则 -- 小蜜这样做智能对话开发平台