Android中继承TextView实现文字的跑马灯效果

编写不易,如有转载,请声明出处:http://blog.youkuaiyun.com/zxc514257857/article/details/70184606

实现原理

  自定义一个MarqueeTextView类,继承Text,将MarqueeTextView强制设置为被选中状态,然后一直进行滚动。

Demo展示图片

这里写图片描述

实现代码如下

//布局代码
//(layout)activity_main.xml
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.test.marqueetextview.activity.MainActivity">

    <TextView
        android:id="@+id/title1"
        android:paddingTop="10dp"
        android:paddingLeft="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="姓名:"/>

    <com.test.marqueetextview.view.MarqueeTextView
        android:id="@+id/name1"
        android:paddingTop="10dp"
        android:layout_toRightOf="@+id/title1"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:text="尼古拉斯赵四"/>

    <TextView
        android:id="@+id/title2"
        android:layout_marginTop="10dp"
        android:layout_below="@+id/title1"
        android:paddingTop="10dp"
        android:paddingLeft="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="姓名:"/>

    <com.test.marqueetextview.view.MarqueeTextView
        android:id="@+id/name2"
        android:layout_marginTop="10dp"
        android:paddingTop="10dp"
        android:layout_below="@+id/name1"
        android:layout_toRightOf="@+id/title2"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:text="郭达斯坦森"/>

</RelativeLayout>
-------------------------------------------------------------------
//自定义控件代码
//(view)MarqueeTextView
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;

/**
 * 具有跑马灯效果的TextView
 * 实际上就是将使用这个MarqueeTextView控件的全部设置为强制被选中
 */

public class MarqueeTextView extends TextView{

    public MarqueeTextView(Context context) {
        super(context);
    }

    public MarqueeTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public MarqueeTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    /**强制被选中*/
    @Override
    public boolean isFocused() {
        return true;
    }
}
-------------------------------------------------------------------
//activity代码
//(activity)MainActivity
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.test.marqueetextview.R;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

Demo下载请移步:http://download.youkuaiyun.com/detail/zxc514257857/9815066


----------因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamBackTo

感谢各位金主大大(* _ *)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值