Android单行跑马灯效果实现
参考网址: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单行跑马灯效果实现的更多相关文章
- android实现跑马灯效果
第一步:新建一个新项目,MarqueeTextView 首先为了观察到跑马灯效果,将要显示的文字极可能 写长.在strings.xml目录里面将 <string name="hello ...
- android实现跑马灯效果(能够实现两个以上跑马灯)
本文用了继承自TextView的MarqueeTextView来实现跑马灯效果.原因是,跑马灯效果是须要TextView拥有焦点才会跑动的.而有时候TextView获得焦点会有点耗时,造成要等待一段时 ...
- Android TextView 跑马灯效果 - 2018年6月19日
第一步在布局中添加加粗部分代码: <TextView android:id="@+id/tv_company" android:layout_width="0dp& ...
- Android中跑马灯效果
<com.randy.test1.self.MarqueeText android:id="@+id/btn1" android:layout_width="mat ...
- Android 开发笔记___textvieww__跑马灯效果
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- android 怎么实现跑马灯效果
自定义控件 FocusedTextView, 使android系统误以为它拥有焦点 public class FocusedTextView extends TextView { public Foc ...
- 安卓之文本视图TextView及跑马灯效果
一.基本属性和设置方法 二.跑马灯用到的属性与方法说明 三.省略方式的取值说明 四.跑马灯效果案例代码 (1)布局xml文件 <?xml version="1.0" en ...
- android:ellipsize实现跑马灯效果总结(转)
最近无意间看到了涉及到跑马灯效果的代码,于是在网上查阅了很多资料,在这里对自己看的一些文章进行一下总结,顺便加上自己的一些体会. 让我们一步步逐渐向下. 首先我们要实现走马灯这样一个效果,通常来说 ...
- Android学习总结——TextView跑马灯效果
Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1.android:ellipsize="marquee" 2.TextView必须单行显示,即内容必须 ...
随机推荐
- laravel5.5结合bootstrap上传插件fileinput 上传图片
引入相关js <script src="{{ asset('bootstrap-fileinput/js/fileinput.js') }}"></script& ...
- Zookeeper — 应用场景
大致来说,zookeeper 的使用场景如下,我就举几个简单的,大家能说几个就好了: 分布式协调 分布式锁 元数据/配置信息管理 HA高可用性 分布式协调 这个其实是 zookeeper 很经典的一个 ...
- spring boot 枚举使用的坑
java 枚举的功能挺多,但是坑更多,使用的时候要注意.如下面这个枚举. @Getter @AllArgsConstructor public enum EnumExpenseType impleme ...
- 锚点定位且不改变url地址
锚点定位且不改变url html 事件触发<li v-for="(item,index) in couponsList.swaps" :key="index&quo ...
- 使nginx归于systemd管理
[root@centos7 ~]# vim /usr/lib/systemd/system/nginx.service [Unit] Description=The Nginx HTTP Server ...
- 02MySQL数据库
1.MySQL启动和关闭 2.登录MySQL数据库 MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录. 格式1:cmd> m ...
- 费用流+SPFA ||Luogu P3381【模板】最小费用最大流
题面:[模板]最小费用最大流 代码: #include<cstdio> #include<cstring> #include<iostream> #include& ...
- ubuntu进入纯命令行
启动按shfit 然后光标在第一行按e 倒数第二行末尾添加quiet splash $vt_handoff 3 然后按CTRL+X或F10引导系统,启动之后就是命令行模式了
- mysql 分页查询及优化
1.分页查询 select * from table limit startNum,pageSize 或者 select * from table limit pageSize offset star ...
- Django【第1篇】:Django之MTV模型
Django框架第一篇基础 一个小问题: 什么是根目录:就是没有路径,只有域名..url(r'^$') 补充一张关于wsgiref模块的图片 一.MTV模型 Django的MTV分别代表: Model ...