Android实现跑马灯效果及问题解决
今天公司项目让实现一个跑马灯的效果,因为有用户反映总是忘记还款截至时间,于是就要求做一个单条文字横向滚动的效果,用于提示用户。
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实现跑马灯效果及问题解决相关推荐
- Android TextView跑马灯效果与设置文字阴影
TextView跑马灯效果的实现 自定义 一个TextView public class MusicDesText extends TextView {public MusicDesText(Cont ...
- android实现跑马灯效果,TextView实现跑马灯效果 就这么简单!
一.方法 这里我们用两种方法来实现跑马灯效果,虽然实质上是一种 实质就是: 1.TextView调出跑马灯效果 2.TextView获取焦点 第一种: 1.TextView调出跑马灯效果 androi ...
- android 横向跑马灯,Android 横向 跑马灯效果TextView
你瞅啥? 自定义控件MarqueeView import android.content.Context; import android.graphics.Rect; import android.t ...
- android实现跑马灯效果(最小集代码)
marquee: 滚动 RepeatLimit:重复限制 ellipsize:椭圆大小
- android:ellipsize实现跑马灯效果总结
原文地址:http://www.cnblogs.com/Gaojiecai/archive/2013/06/18/3142783.html android:ellipsize用法如下: 在xml中 a ...
- Android 使用 ellipsize 实现文字横向移动效果(跑马灯效果)
实现的效果图如下 ellipsize 可以设置跑马灯效果 具体代码设置如下 <TextViewandroid:layout_width="match_parent"andro ...
- Android 文本实现跑马灯效果 用自带的TextView控件
注意跑马灯需要文本已经确定的情况下设置 1.第一种方式在布局代码中 <TextViewandroid:id="@+id/music_name_tv"android:layou ...
- Android文字实现跑马灯效果——两种方法实现
第一种方法,设置textView的属性 <com.example.glide.MarqueeViewandroid:id="@+id/marqueeView"android: ...
- android 图片跑马灯动画,【Android自定义View】- 文本跑马灯效果
简介 有些时候,文字过长,或者有多条需要展示的文本时,我们需要将文本进行左右滚动,多条文本时,还得上下滚动以实现展示不同的文本内容.这时候就需要我们自定义view来实现文本跑马灯效果了. 效果图 jj ...
最新文章
- 轮盘赌算法的简单说明
- GridSearchCV 与 RandomizedSearchCV 用法注意随机搜索可以自定义打分 or loss 函数
- Appium+python自动化19-iOS模拟器(iOS Simulator)安装自家APP
- nav 鼠标移入当前高亮显示,其他消失
- 陈桥五笔用户编号获取_用户群组分析
- Zuul 查看所有路由路径与filter(过滤器)
- 2017-07-02 前端日报
- (读书笔记).NET大局观-.NET框架类库概观
- Redis(四):Spring + JedisCluster操作Redis(集群)
- ORACLE关于段的HEADER_BLOCK的一点浅析
- 【转】c#数字图像处理(四)线性点运算
- ecshop根目录调用_ECSHOP各文件夹功能说明
- 贵!iPhone 11系列维修费用出炉 最高的可以入手一部华为P30 Pro了…
- ajax怎么传全局变量的值,ajax方法如何给全局变量赋值(示例代码)
- 六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序
- 【数据分析】如何构建指标体系 设计一份优质报表
- 微服务是银弹还是焦油坑?
- 123457123456#0#-----com.cym.shuXue02--前拼后广--开心学数学
- linux iptable命令用法
- 小孟网站被黑客攻击,已经哭晕在厕所……
热门文章
- 多元线性回归——波士顿房屋价值模型预测
- 好看不过AR,好玩不过IP营销,不能颠覆产品那就颠覆创意
- 志愿者招募令|来!一起Build OceanBase第一次开发者大会
- 神人乔布斯辞职 几家欢乐几家愁?
- NSVisualEffectView (SwiftUI 中文文档手册 教程含源码)
- 修改MfgTool 工具并通过 USB OTG 口来烧写自己制作的uboot\rootfs\.dtb\zImage文件
- Portapack应用开发教程(十) 猎狐功能和RSSI数值显示
- 掌控板教程 | 让掌控板像 Mixly 串口监视器一样绘图
- YouTube排名第一的英文演讲《Dream》
- 2020年高教社杯全国大学生数学建模C题中小微企业信贷决策(Matlab代码)