大家可能都尝试过TextView的跑马灯效果,效果很酷,但是有一个缺陷,TextView只能在获得焦点的情况下才能显示跑马灯效果。我原先试过重写onDraw()函数,运行成功,但是代码太过烦琐,时间长了自己都懒得看了,一直想找个好的方法把它剃掉,后来无意中遇到下面的方法,给大家推荐一下:
方法依然是重写TextView,但是关键看重写哪里,(后悔当初没好好看就直接重写onDraw()了):
public class ScrollingTextView extends TextView {
public ScrollingTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public ScrollingTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ScrollingTextView(Context context) {
super(context);
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
if(focused)
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
@Override
public void onWindowFocusChanged(boolean focused) {
if(focused)
super.onWindowFocusChanged(focused);
}
@Override
public boolean isFocused() {
return true;
}
}
关键的关键就是在isFocused函数上,大家有空可以看看TextView的源码,上面很清楚。建议大家没事的时候多看看源码,可以从中学到很多好东西。
使用时如下,比如我的自定义类在包com.wlei.test下面:
<com.wlei.test.ScrollingTextView
android:text="Really Long Scrolling Text Goes Here.... ..... ............ .... ...."
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:id="@+id/TextView03"
android:padding="5dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
原文详见:http://androidbears.stellarpc.net/?p=185
分享到:
相关推荐
总的来说,Android的TextView跑马灯效果是通过结合XML布局属性和代码控制实现的,它为展示长文本提供了灵活的解决方案,特别是在有限的空间内。理解和掌握这个功能对于Android开发者来说非常有用,可以提升用户体验...
本篇文章将详细讲解三种实现TextView跑马灯效果的方法。 ### 1. 使用`ellipsize`属性 #### 1.1 XML布局配置 首先,在XML布局文件中,可以通过设置`ellipsize`属性为`marquee`来开启跑马灯效果。同时,`singleLine...
在创建APK程序时,你需要将这个包含跑马灯效果的TextView集成到你的Activity或Fragment中,并确保其他必要的依赖和资源已添加。你可以使用Android Studio进行编译和打包,生成的APK文件可以直接在Android设备上安装...
如果默认的跑马灯效果不能满足需求,可以创建一个自定义的TextView。通过继承`TextView`类并重写`onDraw()`方法,可以自定义跑马灯的滚动行为。这种方法更灵活,但相对复杂,需要对Android绘图有深入理解。 5. **...
注意,为了使跑马灯效果生效,`TextView`必须是单一的、不可编辑的行,并且需要获取焦点。可以通过在代码中调用`requestFocus()`来为`TextView`请求焦点。 接下来,我们要将跑马灯效果应用到ListView的每一项。在...
以上就是关于在Android中实现TextView跑马灯效果的主要技术点。在实际项目中,开发者可以根据需求调整这些设置,以达到理想的跑马灯滚动效果。文件"newZx1"可能包含了一个示例项目或代码片段,用于演示如何实现这一...
通过分析这些测试,开发者可以更好地理解和掌握在不同情况下的TextView跑马灯效果,以应对实际开发中的各种需求。 总之,实现TextView的跑马灯效果需要注意焦点、宽度、延迟启动、嵌套视图等因素。通过对这些问题的...
如果默认的TextView跑马灯效果不能满足需求,可以考虑自定义一个继承自TextView的类,重写`onDraw()`方法,手动实现滚动动画。 5. **性能优化** 跑马灯效果可能会消耗一定的性能,特别是对于长文本或频繁滚动的...
标题“textview(跑马灯效果)文字长短不限循环播放”所描述的就是这样一个功能,即在TextView中实现一个不受文本长度限制、可以自动循环滚动的跑马灯效果,而且这个效果不需要TextView获取焦点也能运行。...
6. **自定义滚动**:如果默认的跑马灯效果不符合需求,可以考虑使用自定义View或者动画库来实现更复杂的滚动效果,例如改变滚动速度、方向或添加动画过渡等。 7. **兼容性问题**:在Android的不同版本和设备上,...
以上就是关于Android中TextView跑马灯效果的基本介绍和实现方法。通过合理设置属性和编写适当的代码,我们可以创建出满足需求的跑马灯效果。同时,自定义的MarqueeTextView可能会提供更丰富的定制选项,以适应各种...
要实现跑马灯效果,我们需要借助两个关键属性:`android:singleLine`(或`android:maxLines=1`)和`android:ellipsize="marquee"`。`singleLine`属性确保文本只显示一行,`ellipsize="marquee"`则激活跑马灯效果。 ...
总结来说,要实现Android中的TextView跑马灯效果,我们可以自定义一个TextView子类,并重写某些方法来模拟焦点,然后在布局文件中设置相关属性,如`ellipsize`、`focusable`等。这样,用户即使不点击或聚焦在...
总的来说,实现Android的跑马灯效果并不复杂,关键在于正确设置XML属性和处理焦点变化。这个效果可以增加用户界面的动态性,提升用户体验。通过理解上述知识点并结合实际代码,你应该能够创建一个无论是否获得焦点都...
本教程主要围绕如何在Android中使用`TextView` 实现跑马灯效果展开。首先,我们需要了解`TextView` 的基本属性和设置方法。在XML布局文件中,我们可以这样创建一个`TextView`: ```xml <TextView android:id="@+id...
`android:ellipsize="marquee"` 用于实现跑马灯效果,`android:focusable="true"` 和 `android:focusableInTouchMode="true"` 用于让 TextView 获得焦点,以便实现跑马灯效果。 在布局文件中,可以直接使用以下代码...
然而,为了增强用户体验,开发者常常会为TextView添加各种动画效果,如跑马灯、闪烁和跳动等。这些动态效果可以吸引用户的注意力,使得应用更加生动有趣。 首先,让我们来讨论“跑马灯”效果。跑马灯,又称为滚动...
【标题】:“TextView跑马灯效果2” 在Android开发中,TextView是我们常用的一个组件,用于显示文本信息。而“跑马灯”效果则是TextView的一种特殊显示方式,它可以使文本在达到TextView宽度边界后,继续从左侧滚动...
首先,实现`TextView`跑马灯效果的关键在于设置两个属性:`android:singleLine`(或`android:maxLines="1"`)和`android:ellipsize`。`singleLine`属性使`TextView`只显示一行文本,`ellipsize`属性则定义了当文本...
2. `android:focusable="true"`:为了使跑马灯效果生效,`TextView`需要获取焦点。通过设置`focusable`为`true`,允许`TextView`可以被选中并获得焦点。 3. `android:marqueeRepeatLimit="marquee_forever"`:这个...