参考网址:https://www.jianshu.com/p/e6c1b825d322

起初,使用了如下XML布局:

 <TextView
android:id="@+id/tv_person_name"
android:layout_marginTop="16dp"
android:layout_width="125dp"
android:layout_height="wrap_content"
android:text="健康快乐的小..."
android:textSize="20sp"
android:textColor="#CE000000"
android:layout_alignParentLeft="true"
android:layout_marginLeft="85dp"
android:singleLine="true"//设置单行
android:ellipsize="marquee"//跑马灯
android:marqueeRepeatLimit="marquee_forever"//无限循环
android:focusable="true"//获得焦点
android:focusableInTouchMode="true" />

结果是:能暂时实现跑马灯效果,但在多次点击事件之后容易失焦。而且在Android4.4上实现有短暂停顿。

focusable和focusableInTouchMode的区别:https://blog.csdn.net/SylG17/article/details/85047234

曾尝试通过EvenBus重新获取焦点,但是并无卵用。

后来采用自定义跑马灯类:

 public class MarqueeTextView extends AppCompatTextView {
/** 滚动次数 */
private int marqueeNum = -1;//-1为永久循环,大于0是循环次数。`
public void setMarqueeNum(int marqueeNum) {
this.marqueeNum = marqueeNum;
}
public MarqueeTextView(Context context) {
super(context);
setAttr();
}
public MarqueeTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setAttr();
}
public MarqueeTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setAttr();
}
/**
* 始终获取焦点
* 跑马灯在TextView处于焦点状态的时候才会滚动
*/
@Override
public boolean isFocused() {
return true;
}
/**
* 设置相关属性
*/
private void setAttr(){
this.setEllipsize(TextUtils.TruncateAt.MARQUEE);//设置跑马等效果
this.setMarqueeRepeatLimit(marqueeNum);//设置跑马灯重复次数
this.setSingleLine(true);//设置单行
}
}

采用自定义跑马灯控件:

 <com.sz.cszj.intelligentrobot.cszjrobot.view.MarqueeTextView
android:id="@+id/tv_person_name"
android:layout_marginTop="16dp"
android:layout_width="125dp"
android:layout_height="wrap_content"
android:text="健康快乐的小..."
android:textSize="20sp"
android:textColor="#CE000000"
android:layout_alignParentLeft="true"
android:layout_marginLeft="85dp"/>

效果:不会失焦,能实现跑马灯效果。但是依然会有卡顿。

Android单行跑马灯效果实现的更多相关文章

  1. android实现跑马灯效果

    第一步:新建一个新项目,MarqueeTextView 首先为了观察到跑马灯效果,将要显示的文字极可能 写长.在strings.xml目录里面将 <string name="hello ...

  2. android实现跑马灯效果(能够实现两个以上跑马灯)

    本文用了继承自TextView的MarqueeTextView来实现跑马灯效果.原因是,跑马灯效果是须要TextView拥有焦点才会跑动的.而有时候TextView获得焦点会有点耗时,造成要等待一段时 ...

  3. Android TextView 跑马灯效果 - 2018年6月19日

    第一步在布局中添加加粗部分代码: <TextView android:id="@+id/tv_company" android:layout_width="0dp& ...

  4. Android中跑马灯效果

    <com.randy.test1.self.MarqueeText android:id="@+id/btn1" android:layout_width="mat ...

  5. Android 开发笔记___textvieww__跑马灯效果

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  6. android 怎么实现跑马灯效果

    自定义控件 FocusedTextView, 使android系统误以为它拥有焦点 public class FocusedTextView extends TextView { public Foc ...

  7. 安卓之文本视图TextView及跑马灯效果

    一.基本属性和设置方法 二.跑马灯用到的属性与方法说明 三.省略方式的取值说明 四.跑马灯效果案例代码   (1)布局xml文件 <?xml version="1.0" en ...

  8. android:ellipsize实现跑马灯效果总结(转)

      最近无意间看到了涉及到跑马灯效果的代码,于是在网上查阅了很多资料,在这里对自己看的一些文章进行一下总结,顺便加上自己的一些体会. 让我们一步步逐渐向下. 首先我们要实现走马灯这样一个效果,通常来说 ...

  9. Android学习总结——TextView跑马灯效果

    Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1.android:ellipsize="marquee" 2.TextView必须单行显示,即内容必须 ...

随机推荐

  1. python 三元表达式

    python 三元表达式(ternary expression)  把 if-else块 写到一行或者一个表达式中 并且产生一个值 value = true if condition else fal ...

  2. java8--- Optional的使用

    // https://www.jianshu.com/p/82ed16613072 1.Optional.of(T value),传入非 null(否则会抛出 NullPointerException ...

  3. ☆☆☆☆☆Placeholder兼容各大浏览器的例子☆☆☆☆☆

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  4. 自我笔记,Rides介绍

    Redis是一个key-value存储系统,和Memccached类似,支持存储的value类型相对更多,很大程度上补偿memcached这类key-value存储的不足 他提供了Java,c/c++ ...

  5. ECMAScript 6 学习笔记(二)

    ECMAScript 6 let和const命令 let命令 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a ...

  6. Python爬虫之selenium高级功能

    Python爬虫之selenium高级功能 原文地址 表单操作 元素拖拽 页面切换 弹窗处理 表单操作 表单里面会有文本框.密码框.下拉框.登陆框等. 这些涉及与页面的交互,比如输入.删除.点击等. ...

  7. JavaEE高级-MyBatisPlus学习笔记

    第 1 章 简介 1.1 MyBatisPlus 介绍 -MyBatis-Plus(简称 MP),是一个 MyBatis 的增强工具包,只做增强不做改变. 为简化开发工作.提高生产率而生我们的愿景是成 ...

  8. quartus ip核破解

    在证书文件中添加一段: FEATURE 6AF7_0012 alterad 2035.12 permanent uncounted E75BE809707E VENDOR_STRING="i ...

  9. bzoj4326: NOIP2015 运输计划(二分+LCA+树上差分)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4326 题目大意:有一颗含有n个顶点的树,每两个点之间有一个边权,现在有m个运输计划,每个 ...

  10. AtCoder Regular Contest 066 E - Addition and Subtraction Hard (结论+DP)

    Time limit : 2sec / Memory limit : 256MB Score : 900 points Problem Statement Joisino has a formula ...