今天公司项目让实现一个跑马灯的效果,因为有用户反映总是忘记还款截至时间,于是就要求做一个单条文字横向滚动的效果,用于提示用户。

GitHub上找了几个跑马灯的库,本以为可以实现自己想要的效果,不过这个库真心不错,推荐给大家:

1.sunfusheng/MarqueeView 这是扩展了 ViewFlipper实现的。

2.gongwen/MarqueeViewLibrary 这也是扩展了ViewFlipper控件实现的

这两个库虽然文字过长时都可以滚动,但是文字显示不全,超出部分被省略掉了

下面总结下我实现过程中遇到的坑

1.首先我是在一个小demo里面对TextView设置下面的属性就可以实现跑马灯效果,代码如下:

<TextViewandroid:layout_width="120dp"android:layout_height="wrap_content"android:layout_gravity="center"android:ellipsize="marquee"android:singleLine="true"android:focusable="true"android:marqueeRepeatLimit="marquee_forever"android:focusableInTouchMode="true"android:scrollHorizontally="true"android:text="abcdefghijklmnopqrstuvwxyz.0123456789"/>

但是我写到项目里面并没有出现滚动效果

最后发现原来焦点被其他控件抢走了

解决的方法我们可以通过自定义TextView来实现:重写 isFocused(),返回为ture

public class MarqueeView extends TextView {public MarqueeView(Context context) {super(context);}public MarqueeView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);}public MarqueeView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overridepublic boolean isFocused() {return true;}
}

2.如果这时,布局文件中有两个跑马灯和一个EditText的话,第一个走马灯就会停止。

这是因为EditText获取了焦点,解决方案,重写父类的 onFocusChanged 方法即可
我们在自定义的MarqueeView 中重写onFocusChanged

/*
* 用于EditText抢注焦点的问题
* */
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {if (focused) {super.onFocusChanged(focused, direction, previouslyFocusedRect);}
}

3.如果我们弹出一个对话框的话,会发现,弹出对话框后,跑马灯效果就停止了,原因是Dialog抢了焦点,解决方案就是重写下onWindowFocusChanged方案

/*
* Window与Window间焦点发生改变时的回调
* */
@Override
public void onWindowFocusChanged(boolean hasWindowFocus) {if (hasWindowFocus)super.onWindowFocusChanged(hasWindowFocus);
}

至此,我们的Android跑马灯效果已经可以完美的运行了。

不过唯一不足的是,文字过短不会有滚动效果

Android实现跑马灯效果及问题解决相关推荐

  1. Android TextView跑马灯效果与设置文字阴影

    TextView跑马灯效果的实现 自定义 一个TextView public class MusicDesText extends TextView {public MusicDesText(Cont ...

  2. android实现跑马灯效果,TextView实现跑马灯效果 就这么简单!

    一.方法 这里我们用两种方法来实现跑马灯效果,虽然实质上是一种 实质就是: 1.TextView调出跑马灯效果 2.TextView获取焦点 第一种: 1.TextView调出跑马灯效果 androi ...

  3. android 横向跑马灯,Android 横向 跑马灯效果TextView

    你瞅啥? 自定义控件MarqueeView import android.content.Context; import android.graphics.Rect; import android.t ...

  4. android实现跑马灯效果(最小集代码)

    marquee: 滚动 RepeatLimit:重复限制 ellipsize:椭圆大小

  5. android:ellipsize实现跑马灯效果总结

    原文地址:http://www.cnblogs.com/Gaojiecai/archive/2013/06/18/3142783.html android:ellipsize用法如下: 在xml中 a ...

  6. Android 使用 ellipsize 实现文字横向移动效果(跑马灯效果)

    实现的效果图如下 ellipsize 可以设置跑马灯效果 具体代码设置如下 <TextViewandroid:layout_width="match_parent"andro ...

  7. Android 文本实现跑马灯效果 用自带的TextView控件

    注意跑马灯需要文本已经确定的情况下设置 1.第一种方式在布局代码中 <TextViewandroid:id="@+id/music_name_tv"android:layou ...

  8. Android文字实现跑马灯效果——两种方法实现

    第一种方法,设置textView的属性 <com.example.glide.MarqueeViewandroid:id="@+id/marqueeView"android: ...

  9. android 图片跑马灯动画,【Android自定义View】- 文本跑马灯效果

    简介 有些时候,文字过长,或者有多条需要展示的文本时,我们需要将文本进行左右滚动,多条文本时,还得上下滚动以实现展示不同的文本内容.这时候就需要我们自定义view来实现文本跑马灯效果了. 效果图 jj ...

最新文章

  1. 轮盘赌算法的简单说明
  2. GridSearchCV 与 RandomizedSearchCV 用法注意随机搜索可以自定义打分 or loss 函数
  3. Appium+python自动化19-iOS模拟器(iOS Simulator)安装自家APP
  4. nav 鼠标移入当前高亮显示,其他消失
  5. 陈桥五笔用户编号获取_用户群组分析
  6. Zuul 查看所有路由路径与filter(过滤器)
  7. 2017-07-02 前端日报
  8. (读书笔记).NET大局观-.NET框架类库概观
  9. Redis(四):Spring + JedisCluster操作Redis(集群)
  10. ORACLE关于段的HEADER_BLOCK的一点浅析
  11. 【转】c#数字图像处理(四)线性点运算
  12. ecshop根目录调用_ECSHOP各文件夹功能说明
  13. 贵!iPhone 11系列维修费用出炉 最高的可以入手一部华为P30 Pro了…
  14. ajax怎么传全局变量的值,ajax方法如何给全局变量赋值(示例代码)
  15. 六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序
  16. 【数据分析】如何构建指标体系 设计一份优质报表
  17. 微服务是银弹还是焦油坑?
  18. 123457123456#0#-----com.cym.shuXue02--前拼后广--开心学数学
  19. linux iptable命令用法
  20. 小孟网站被黑客攻击,已经哭晕在厕所……

热门文章

  1. 多元线性回归——波士顿房屋价值模型预测
  2. 好看不过AR,好玩不过IP营销,不能颠覆产品那就颠覆创意
  3. 志愿者招募令|来!一起Build OceanBase第一次开发者大会
  4. 神人乔布斯辞职 几家欢乐几家愁?
  5. NSVisualEffectView (SwiftUI 中文文档手册 教程含源码)
  6. 修改MfgTool 工具并通过 USB OTG 口来烧写自己制作的uboot\rootfs\.dtb\zImage文件
  7. Portapack应用开发教程(十) 猎狐功能和RSSI数值显示
  8. 掌控板教程 | 让掌控板像 Mixly 串口监视器一样绘图
  9. YouTube排名第一的英文演讲《Dream》
  10. 2020年高教社杯全国大学生数学建模C题中小微企业信贷决策(Matlab代码)