`
coolerbaosi
  • 浏览: 767209 次
文章分类
社区版块
存档分类
最新评论

android: 不需要焦点的TextView跑马灯 MarqueeTextView

 
阅读更多
之前在网上找了很多关于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);
}
@Override
public boolean isFocused() {
return true;
}
@Override
protected 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

分享到:
评论

相关推荐

    android三种方式实现TextView跑马灯效果

    本篇文章将详细讲解三种实现TextView跑马灯效果的方法。 ### 1. 使用`ellipsize`属性 #### 1.1 XML布局配置 首先,在XML布局文件中,可以通过设置`ellipsize`属性为`marquee`来开启跑马灯效果。同时,`singleLine...

    android TextView跑马灯

    以上就是关于Android中TextView跑马灯效果的基本介绍和实现方法。通过合理设置属性和编写适当的代码,我们可以创建出满足需求的跑马灯效果。同时,自定义的MarqueeTextView可能会提供更丰富的定制选项,以适应各种...

    TextView滚动,跑马灯效果终极解决方案

    通过分析这些测试,开发者可以更好地理解和掌握在不同情况下的TextView跑马灯效果,以应对实际开发中的各种需求。 总之,实现TextView的跑马灯效果需要注意焦点、宽度、延迟启动、嵌套视图等因素。通过对这些问题的...

    TextView跑马灯实例

    需要注意的是,跑马灯效果只有在`TextView`获取焦点时才会生效。因此,通常我们需要通过编程方式在合适的时候给`TextView`分配焦点,例如在Activity的`onCreate()`方法中: ```java TextView marqueeTextView = ...

    使用TextView实现跑马灯效果

    本教程主要围绕如何在Android中使用`TextView` 实现跑马灯效果展开。首先,我们需要了解`TextView` 的基本属性和设置方法。在XML布局文件中,我们可以这样创建一个`TextView`: ```xml &lt;TextView android:id="@+id...

    TextView跑马灯效果2

    【标题】:“TextView跑马灯效果2” 在Android开发中,TextView是我们常用的一个组件,用于显示文本信息。而“跑马灯”效果则是TextView的一种特殊显示方式,它可以使文本在达到TextView宽度边界后,继续从左侧滚动...

    TextView 实现文字滚动播放效果效果(跑马灯)

    - 如果布局中有多个`TextView`设置了跑马灯效果,一次只能有一个能生效,因为Android系统一次只允许一个View拥有焦点。 4. **优化** - 为了提升用户体验,可以考虑添加动画效果,比如渐入渐出,使得滚动更自然。 ...

    android TextView实现跑马灯效果

    `android:ellipsize="marquee"` 用于实现跑马灯效果,`android:focusable="true"` 和 `android:focusableInTouchMode="true"` 用于让 TextView 获得焦点,以便实现跑马灯效果。 在布局文件中,可以直接使用以下代码...

    Android文字跑马灯效果

    2. **焦点获取**:默认情况下,TextView需要获取焦点才能启动跑马灯。可以通过`android:focusable="true"`和`android:focusableInTouchMode="true"`来确保TextView在触摸模式下也能获取焦点。 3. **启动滚动**:...

    android 跑马灯效果

    这里,`android:focusable`和`android:focusableInTouchMode`设置为`true`是为了让TextView能够获取焦点,因为跑马灯效果只有在TextView获取焦点时才会启动。`android:scrollHorizontally="true"`表示文本将在水平...

    文字自动滚动TextView(长度不够也可以)

    在提供的压缩包文件 `MarqueeTextView` 中,可能包含了一个自定义的`TextView` 类,它扩展了标准的`TextView` 并增加了对跑马灯效果的支持,或者优化了某些性能问题。这个自定义组件可能会提供一些额外的属性或方法...

    Android TextView实现跑马灯效果的方法

    在Android中实现TextView的跑马灯效果并不复杂,主要通过调整布局文件中的属性来实现。 首先,要开启TextView的跑马灯功能,关键在于设置`ellipsize`属性。`ellipsize`属性决定了当文本过长时如何省略,将其设置为`...

    Android自定义TextView实现跑马灯效果

    在Android开发中,自定义控件是提升应用特色和用户体验的...以上就是实现Android自定义TextView跑马灯效果的详细过程。通过这个例子,开发者可以进一步理解Android自定义控件的机制,并将其应用于更多复杂的效果实现。

    Android 实现不依赖焦点和选中的TextView跑马灯

    传统的TextView跑马灯效果是通过设置`android:singleLine="true"`和`android:ellipsize="marquee"`来实现的,但这种方式需要TextView获得焦点才能滚动,而且有时会遇到文本截断的问题。本文将介绍一种不依赖焦点和...

    自定义TextView实现文字的跑马灯效果

    在Android开发过程中,有时我们需要在`TextView`中展示动态的文字跑马灯效果。这种效果通常用于新闻应用中的滚动头条新闻或者公告栏等场景。本文将详细介绍如何通过自定义`TextView`来实现文字的跑马灯效果。 #### ...

    android跑马灯源码

    在Android中,TextView本身支持跑马灯效果,只需要开启它的marquee(滚动)属性即可。在XML布局文件中,可以通过以下方式设置: ```xml &lt;TextView android:text="跑马灯效果演示" android:singleLine="true" &lt;!--...

    跑马灯效果MarqueTextView textview 循环 跑马灯效果.7z

    在Android中,TextView的默认属性并不支持跑马灯效果,但可以通过开启特定的属性来实现。`Marquee`效果主要通过以下两个关键属性控制: 1. `android:singleLine`:设置为true,使TextView只能显示一行文本,超出...

    Android跑马灯 循环文字

    但是,要注意的是,跑马灯效果并不会立即启动,而是需要TextView获取焦点后才会开始。如果想要在应用启动时就显示跑马灯,可以添加以下代码: ```java TextView marqueeTextView = findViewById(R.id.text_view_...

    android textView 走马灯效果实例

    ellipsize="marquee"`使文本启用跑马灯效果,`android:fadingEdge="horizontal"`和`android:scrollHorizontally="true"`则用于指定水平方向的渐变边框和水平滚动,`android:focusable="true"`和`android:...

Global site tag (gtag.js) - Google Analytics