您的位置:首页 > 移动开发 > Android开发

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

2017-04-15 15:06 831 查看
编写不易,如有转载,请声明出处: 梦回河口:http://blog.csdn.net/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.csdn.net/detail/zxc514257857/9815066

———-因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!———-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息