【Android】(最新)跑马灯文字水平滚动(79/100)

先上效果:
跑马灯文字水平滚动
Android系统中TextView实现跑马灯效果,必须具备以下几个条件:

  1. android:singleLine=“true”
  2. android:ellipsize=“marquee”
  3. android:marqueeRepeatLimit=“marquee_forever”
  4. TextView必须单行显示,即内容必须超出TextView大小
  5. TextView要获得焦点才能滚动

示例布局如下:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".activity.MarqueeActivity"
    android:background="#3A3A3A"
    >
    <FrameLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        >
        <TextView

            android:id="@+id/tv"
            android:singleLine="true"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit="marquee_forever"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            tools:text="本直播不构成投资协议,产品的历史业绩不预示未的历史不预谨本直播不构成投资协议,产品的历史业绩不预示未的历史不预谨"
            android:textColor="@color/white"
            android:scrollHorizontally="true"

            android:focusable="true"
            android:focusableInTouchMode="true"
            />
    </FrameLayout>

</android.support.constraint.ConstraintLayout>

逻辑处理如下:

package top.lc951.myandroid.activity;

import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.widget.TextView;

import top.lc951.myandroid.R;

/**
 * 跑马灯效果
 *
 * */
public class MarqueeActivity extends AppCompatActivity {

    public static void actionActivity(Context context){
            Intent intent=new Intent(context,MarqueeActivity.class);
            context.startActivity(intent);
        }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_marquee);

        TextView textView=findViewById(R.id.tv);
        textView.setSelected(true);//能动起来的关键代码
        textView.setText("本直播不构成投资协议" +
                ",产品的历史业绩不预示未的历史不预谨本直播不构成投资协议" +
                ",产品的历史业绩不预示未的历史不预谨本直播不构成投资协议" +
                ",产品的历史业绩不预示未的历史不预谨本直播不构成投资协议" +
                ",产品的历史业绩不预示未的历史不预谨");
    }
}

在没有textView.setSelected(true); 这一行怎么都动不了,参考过很多博客也是没有这行的,看了看日期的确是13年以前的技术博客了。
以前布局就可以动起来的,现在需要加这行才能跑动起来。
注意这行代码,如果跑动动画效果没有请检查一下这行代码

哦!
开源地址:https://gitee.com/lc951/my-android
有兴趣的可以去瞅瞅看,都是一些实用小demo

自研产品推荐

历时一年半多开发终于smartApi-v1.0.0版本在2023-09-15晚十点正式上线
smartApi是一款对标国外的postman的api调试开发工具,由于开发人力就作者一个所以人力有限,因此v1.0.0版本功能进行精简,大功能项有:

  • api参数填写
  • api请求响应数据展示
  • PDF形式的分享文档
  • Mock本地化解决方案
  • api列表数据本地化处理
  • 再加上UI方面的打磨

为了更好服务大家把之前的公众号和软件激活结合,如有疑问请大家反馈到公众号即可,下个版本30%以上的更新会来自公众号的反馈。
嗯!先解释不上服务端原因,API调试工具的绝大多数时候就是一个数据模型、数据处理、数据模型理解共识的问题解决工具,所以作者结合自己十多年开发使用的一些痛点来打造的,再加上服务端开发一般是面向企业的,作者目前没有精力和时间去打造企业服务。再加上没有资金投入所以服务端开发会滞后,至于什么时候会进行开发,这个要看募资情况和用户反馈综合考虑。虽然目前国内有些比较知名的api工具了,但作者使用后还是觉得和实际使用场景不符。如果有相关吐槽也可以在作者的公众号里反馈蛤!
下面是一段smartApi使用介绍:
在这里插入图片描述

下载地址:

posted @ 2023-05-24 11:58  lichong951  阅读(23)  评论(0编辑  收藏  举报  来源