Android TestView跑马灯效果的实现
跑马灯就是一行字幕在不断的循环显示的效果。
本文通过TextView属性的设置或完全代码实现跑马灯效果的实现。
一.第一种方法
主方法调用类的执行语句就一句话:setContentView(R.layout.activity_main);
布局文件activity.xml代码如下
跑马灯效果实际就是通过后面六句属性语句完成的。
看一下下面相关解释:
(一)android:singleLine="true"当显示为一行的时候,才有效果
(二)android:marqueeRepeatLimit="marquee_forever"//表示滚动回数,这里这么设置,表示一直滚动
(三)android:ellipsize="marquee" 跑马灯显示
由于输入的内容多于一行,如果不处理就会直接不显示后面的内容,通过处理可以在前面、中间或后面加一个省略号的效果
android:ellipsize="start" 省略号在开头
android:ellipsize="middle" 省略号在中间
android:ellipsize="end" 省略号在结尾
(四)android:focusable="true" //要显示该跑马灯,view必须要获得焦点,只有在取得焦点的情况下跑马灯才会显示。
(五)android:marqueeRepeatLimit在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为 marquee_forever时表示无限次。也可以设置为1,2.。等。
(六)android:focusableInTouchMode:是否在触摸模式下获得焦点。
对于一个大View中有很多子View来说,同一时刻只能有一个子View获得focus!也就是说当前这一屏上,最多只能有一个view能有跑马灯效果,而不能多个View同事都有跑马灯效果。
二.完全用代码显示出来的方法(不使用布局文件.xml)
package com.example.helloworld;
import android.R.color;
import android.app.Activity;
import android.os.Bundle;
import android.text.Layout;
import android.text.TextUtils.TruncateAt;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup.LayoutParams;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView view=new TextView(this);//创建文本
view.setText("人永远是要学习的;死的时候,才是毕业的时候。");//设置文字
view.setWidth(50);//设置宽度
view.setBackgroundColor(color.holo_red_light);//设置字体颜色
view.setTextSize(22);//字体大小
view.setPadding(20, 20, 20, 20);
//真正起到循环作用的代码
view.setSingleLine(true);
view.setMarqueeRepeatLimit(100);//设置循环的次数
view.setEllipsize(TruncateAt.MARQUEE);//跑马灯的显示(省略号的设置)
view.setScrollX(5);//往x轴滑动,参数代表速度
view.setFocusable(true);//获得聚焦
view.setFocusableInTouchMode(true);//在点击屏幕时是否获得聚焦
//把设置是TextView显示出来
setContentView(view);
//setContentView(R.layout.activity2);
}
}
通过运行上面的代码也能实现布局文件让文字不断循环的跑马灯效果。
总结:
TextView其实就是一个类,也可以调用它的方法来完成很多事情,
但是作为一个android开发者,主要还是用布局文件来开发页面,
效果稳定,而且代码简洁。