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();
    }
}
目录
相关文章
|
存储 缓存 安全
Nacos 安全零信任实践
本文将介绍如何基于安全零信任的理念来保证 Nacos 的数据安全。
13398 131
|
自然语言处理 关系型数据库 MySQL
MySQL索引之全文索引(FULLTEXT)
MySQL索引之全文索引(FULLTEXT) MySQL创建全文索引 使用索引时数据库性能优化的必备技能之一。
7709 0
MySQL索引之全文索引(FULLTEXT)
|
Android开发 开发工具 IDE
Android gradle问题解决: This app has been built with an incorrect configuration. Please configure your build for VectorDrawableCompat
1. 问题描述: Android Studio在运行模拟器某些机型或者真机某些机型的时候发生闪退。 错误如下: Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.
2594 0
|
Android开发
Flutter控件的显示与隐藏
Flutter控件的显示与隐藏
461 3
|
8月前
|
SQL 弹性计算 安全
【上云基础系列04】基于标准架构的数据库升级
本文回顾了业务上云从基础到进阶的理念,涵盖基础版和全栈版架构。在“入门级:上云标准弹性架构基础版”的基础上,本文针对数据库升级,重点介绍了高可用数据库架构的升级方案,确保数据安全和业务连续性。最后,附有详细的“上云标准弹性架构”演进说明,帮助用户选择合适的架构方案。
|
10月前
|
数据采集 人工智能 自然语言处理
基于OpenLake的大模型训练及RAG应用
本文介绍了OpenLake在大数据与AI融合方面的应用,重点探讨了如何通过OpenLake打通数据到应用的各个环节。首先,阐述了自然语言处理(NLP)从非结构化数据向结构化数据的转变,并强调了高质量数据对AI模型训练的重要性。接着,详细介绍了OpenLake+PAI平台如何实现大数据与AI的一体化开发,包括数据预处理、多模态数据管理、智能标注及优化推理效率等。最后,结合OpenSearch,展示了RAG(检索增强生成)技术在企业级应用中的挑战与解决方案,如构建稳定高效的检索系统,确保数据安全与准确性。整体方案旨在提升AI模型的效果和安全性,推动各行业的智能化转型。
|
11月前
|
NoSQL 安全 PHP
hyperf-wise-locksmith,一个高效的PHP分布式锁方案
`hyperf-wise-locksmith` 是 Hyperf 框架下的互斥锁库,支持文件锁、分布式锁、红锁及协程锁,有效防止分布式环境下的竞争条件。本文介绍了其安装、特性和应用场景,如在线支付系统的余额扣减,确保操作的原子性。
150 4
|
XML 数据可视化 API
Android经典实战之约束布局ConstraintLayout的实用技巧和经验
ConstraintLayout是Android中一款强大的布局管理器,它通过视图间的约束轻松创建复杂灵活的界面。相较于传统布局,它提供更高灵活性与性能。基本用法涉及XML定义约束,如视图与父布局对齐。此外,它支持百分比尺寸、偏移量控制等高级功能,并配有ConstraintSet和编辑器辅助设计。合理运用可显著提高布局效率及性能。
793 0
|
12月前
|
监控 Java 数据库连接
使用线程池时,如何避免内存泄漏的问题?
使用线程池时,如何避免内存泄漏的问题?