Android单行跑马灯效果实现
2024-08-31 17:32:19
参考网址: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"/>
效果:不会失焦,能实现跑马灯效果。但是依然会有卡顿。
最新文章
- AngularJs的UI组件ui-Bootstrap分享(十四)——Carousel
- 001.libev安装及eclipse下添加libev库链接
- MindProject R6025解决
- 看2015年TFC游戏大会,云计算何以唱主角
- acm pc^2的配置与使用
- 006 [翻译] Haneke(一个Swfit iOS缓存类)
- 性能测试-Jmeter
- Centos 64位安装 EPEL源
- JQuery AJAX的嵌套使用
- poj 2503 快排+二分
- centos7安装httpd和php
- Mysql的管理及使用
- Go语言-通道类型
- 原生js触碰到底部触发函数;
- python 迭代器协议和生成器
- angular.isNumber()
- IIS8.0配置网站,错误提示:用户 &#39;IIS APPPOOL\你的网站名称&#39;登录失败
- python之列表【list】
- NFS详解
- OGG_Oracle GoldenGate简介(概念)
热门文章
- iview报错[Vue warn]: Error in render: ";TypeError: ctx.injections.tableRoot.$scopedSlots[ctx.props.column.slot] is not a function";
- 极*Java速成教程 - (4)
- Springcloud 2.x 版本 分布式配置中心
- C++中的字符串类
- 背包问题: HDU1114Piggy-Bank
- es6中let实例应用之一
- Python 通过dmidecode获取Linux服务器硬件信息
- mkfifo - 创建FIFO(命名管道)
- 基于numpy的绘图
- pandas 的axis参数的理解