之前在网上找了很多关于TextView的跑马灯效果实现的例子,实现起来都存在一些问题,例如一种是完全重画一个跑马灯,还有就是只设置TextView的相关属性使其具有跑马灯的效果,总的来说这两种方法都是可行的,但是都有其不足之处,第一种太复杂,实现起来比较麻烦,第二种呢,它只能在TextView获得焦点的时候才有跑马灯的效果,这样有时候并不能达到我们所要求的效果。我通过网上的一些例子自己在做了一些改动,就实现了现在不用获取焦点也能“跑”起来的效果。具体代码如下首先,写一个类,让其继承自TextView:public class MarqueeText extends TextView {public MarqueeText(Context con) {super(con);}public MarqueeText(Context context, AttributeSet attrs) {super(context, attrs);}public MarqueeText(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}@Overridepublic boolean isFocused() {return true;}@Overrideprotected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {}}然后再将我们已经写好的这个控件(MarqueeText)放到布局文件中,例如main.xml:<TextView android:layout_width="400dip" android:layout_height="wrap_content" android:layout_marginLeft="80dip" android:layout_marginBottom="25dip" android:textSize="25sp" android:textColor="@android:color/black" android:ellipsize="marquee" android:focusable="true" android:marqueeRepeatLimit="marquee_forever" android:focusableInTouchMode="true" android:scrollHorizontally="true" android:text="这才是真正的文字跑马灯效果,文字移动速度,文字移动方向,文字移动的样式,动画等等……" android:background="#2FFFFFFF" > </TextView><!-- 在布局文件中用自己写的控件只需要写类的全名就行,如下com.example. 这是包名,后面再跟类名就行了 --><com.example.MarqueeText android:id="@+id/AMTV1" android:layout_width="400dip" android:layout_height="wrap_content" android:layout_marginLeft="80dip" android:textSize="25sp" android:textColor="@android:color/black" android:lines="1" android:focusable="true" android:focusableInTouchMode="true" android:scrollHorizontally="true" android:marqueeRepeatLimit="marquee_forever" android:ellipsize="marquee" android:background="#2FFFFFFF" android:text="这才是真正的文字跑马灯效果,文字移动速度,文字移动方向,文字移动的样式,动画等等……" />前一个TextView是用Android自带的跑马灯效果,后一个就是咱自己的。至于Activity中怎么写这里就不多说了,没有什么特殊的设置。关于MarqueeText类中为什么要复写onFocusChanged()方法,那是因为如果不写,在Textview 获得焦点后,再失去焦点时 字就会停止“跑”了,所以如果想让它一直跑下去就复写onFocusChanged(),并且里面什么也不做(主要是不能调用父类的方法)。
转载自:http://blog.csdn.net/jdsjlzx/article/details/7760346
分享到:
相关推荐
本篇文章将详细讲解三种实现TextView跑马灯效果的方法。 ### 1. 使用`ellipsize`属性 #### 1.1 XML布局配置 首先,在XML布局文件中,可以通过设置`ellipsize`属性为`marquee`来开启跑马灯效果。同时,`singleLine...
以上就是关于Android中TextView跑马灯效果的基本介绍和实现方法。通过合理设置属性和编写适当的代码,我们可以创建出满足需求的跑马灯效果。同时,自定义的MarqueeTextView可能会提供更丰富的定制选项,以适应各种...
通过分析这些测试,开发者可以更好地理解和掌握在不同情况下的TextView跑马灯效果,以应对实际开发中的各种需求。 总之,实现TextView的跑马灯效果需要注意焦点、宽度、延迟启动、嵌套视图等因素。通过对这些问题的...
需要注意的是,跑马灯效果只有在`TextView`获取焦点时才会生效。因此,通常我们需要通过编程方式在合适的时候给`TextView`分配焦点,例如在Activity的`onCreate()`方法中: ```java TextView marqueeTextView = ...
本教程主要围绕如何在Android中使用`TextView` 实现跑马灯效果展开。首先,我们需要了解`TextView` 的基本属性和设置方法。在XML布局文件中,我们可以这样创建一个`TextView`: ```xml <TextView android:id="@+id...
【标题】:“TextView跑马灯效果2” 在Android开发中,TextView是我们常用的一个组件,用于显示文本信息。而“跑马灯”效果则是TextView的一种特殊显示方式,它可以使文本在达到TextView宽度边界后,继续从左侧滚动...
- 如果布局中有多个`TextView`设置了跑马灯效果,一次只能有一个能生效,因为Android系统一次只允许一个View拥有焦点。 4. **优化** - 为了提升用户体验,可以考虑添加动画效果,比如渐入渐出,使得滚动更自然。 ...
`android:ellipsize="marquee"` 用于实现跑马灯效果,`android:focusable="true"` 和 `android:focusableInTouchMode="true"` 用于让 TextView 获得焦点,以便实现跑马灯效果。 在布局文件中,可以直接使用以下代码...
2. **焦点获取**:默认情况下,TextView需要获取焦点才能启动跑马灯。可以通过`android:focusable="true"`和`android:focusableInTouchMode="true"`来确保TextView在触摸模式下也能获取焦点。 3. **启动滚动**:...
这里,`android:focusable`和`android:focusableInTouchMode`设置为`true`是为了让TextView能够获取焦点,因为跑马灯效果只有在TextView获取焦点时才会启动。`android:scrollHorizontally="true"`表示文本将在水平...
在提供的压缩包文件 `MarqueeTextView` 中,可能包含了一个自定义的`TextView` 类,它扩展了标准的`TextView` 并增加了对跑马灯效果的支持,或者优化了某些性能问题。这个自定义组件可能会提供一些额外的属性或方法...
在Android中实现TextView的跑马灯效果并不复杂,主要通过调整布局文件中的属性来实现。 首先,要开启TextView的跑马灯功能,关键在于设置`ellipsize`属性。`ellipsize`属性决定了当文本过长时如何省略,将其设置为`...
在Android开发中,自定义控件是提升应用特色和用户体验的...以上就是实现Android自定义TextView跑马灯效果的详细过程。通过这个例子,开发者可以进一步理解Android自定义控件的机制,并将其应用于更多复杂的效果实现。
传统的TextView跑马灯效果是通过设置`android:singleLine="true"`和`android:ellipsize="marquee"`来实现的,但这种方式需要TextView获得焦点才能滚动,而且有时会遇到文本截断的问题。本文将介绍一种不依赖焦点和...
在Android开发过程中,有时我们需要在`TextView`中展示动态的文字跑马灯效果。这种效果通常用于新闻应用中的滚动头条新闻或者公告栏等场景。本文将详细介绍如何通过自定义`TextView`来实现文字的跑马灯效果。 #### ...
在Android中,TextView本身支持跑马灯效果,只需要开启它的marquee(滚动)属性即可。在XML布局文件中,可以通过以下方式设置: ```xml <TextView android:text="跑马灯效果演示" android:singleLine="true" <!--...
在Android中,TextView的默认属性并不支持跑马灯效果,但可以通过开启特定的属性来实现。`Marquee`效果主要通过以下两个关键属性控制: 1. `android:singleLine`:设置为true,使TextView只能显示一行文本,超出...
但是,要注意的是,跑马灯效果并不会立即启动,而是需要TextView获取焦点后才会开始。如果想要在应用启动时就显示跑马灯,可以添加以下代码: ```java TextView marqueeTextView = findViewById(R.id.text_view_...
ellipsize="marquee"`使文本启用跑马灯效果,`android:fadingEdge="horizontal"`和`android:scrollHorizontally="true"`则用于指定水平方向的渐变边框和水平滚动,`android:focusable="true"`和`android:...