android跑马灯效果,安卓手机跑马灯怎么设置

android 跑马灯效果,如果文字不超过宽度,我也想做出跑马灯效果,怎么实现?

今天要实现的一个效果是在Android中实现一个跑马灯的效果:

创新互联专注于双桥企业网站建设,成都响应式网站建设公司,电子商务商城网站建设。双桥网站建设公司,为双桥等地区提供建站服务。全流程定制网站开发,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

在新建一个Android product之后,在布局文件main中替换掉原来的TextView

代码如下:

TextView

android:layout_width="60dp"

android:layout_height="wrap_content"

android:textColor="@android:color/black"

android:ellipsize="marquee"

android:focusable="true"

android:focusableInTouchMode="true"

android:marqueeRepeatLimit="marquee_forever"

android:scrollHorizontally="true"

android:text="这是跑马灯的效果这是跑马灯的效果"

/TextView

其他部分代码不用改动,在模拟器上应该可以看到滚动的显示"这是跑马灯的效果这是跑马灯的效果"。

其中有几个问题是我自己碰到的,列举如下:

1.宽度android:layout_width不可以设置为wrap_content(自适应内容)

2.android:text最好是比较长的字符串,最少要长过自己设置的width大小(我这里是60dp)

3.颜色最好别设置为@android:color/white,否则你什么都看不到,因为背景颜色也是white

4.在xml中,TextView 的属性

android:ellipsize = "end" 省略号在结尾

android:ellipsize = "start" 省略号在开头

android:ellipsize = "middle" 省略号在中间

android:ellipsize = "marquee" 跑马灯

5.android:scrollHorizontally="true"相信大家英文水平还不错的话都明白这句的意思是水平滚动

6.android:marqueeRepeatLimit="marquee_forever" 看英文同样可以明白,是无限次循环,学习android,英文基础还是必须的。

7.最后还有两句代码没有解释:

android:focusable="true" //让TextView获得焦点

android:focusableInTouchMode="true" //针对触摸屏获得当前焦点

事实上这两句代码我也了解不是特别多,在网上查了下这两个属性,目前理解为:

android:focusable="true"相当于当前Activity打开的时候,让当前控件TextView获得焦点,才可以实现滚动功能

android:focusableInTouchMode="true"和上述属性应该是类似的,但限制应该是指的触摸屏上的意思

对于这两个属性,希望有高人指点下。

Android实现跑马灯效果

跑马灯相关属性

上面方式1能暂时实现跑马灯效果,但在多次点击事件之后容易失焦。而且在Android4.4上实现有短暂停顿。

MarqueeTextView

MarqueeTextView

attrs.xml

使用

MarqueeView :可垂直跑、可水平跑的跑马灯。

MarqueeViewLibrary :一个很方便使用和扩展的跑马灯Library,通过提供不同的MarqueeFactory来定制不同的跑马灯View, 并且提供了常用类型的跑马灯效果:SimpleMarqueeView。

XML

设置字符串列表数据,或者设置自定义的Model数据类型

设置字符串数据

设置事件监听

在 Activity 或 Fragment 中

在 ListView 或 RecyclerView 的 Adapter 中

android中怎样实现图片的跑马灯效果

Android自带的跑马灯效果不太好控制,不能控制速度,不能即时停止和启动,而且还受焦点的影响蛋疼不已。由于项目需求需要用的可控制性高的跑马灯效果,所以自己写了一个自定义的TextView

注意:在布局文件引用本view时,paddingLeft,paddingRigh都必须为0dp,需要增加这两个属性的,大家可以自行修改代码。

android:ellipsize="marquee" android:singleLine="true" 这两个属性也要加上

public class MarqueeText extends TextView implements Runnable {

private int currentScrollX;// 当前滚动的位置

private boolean isStop = false;

private int textWidth;

private boolean isMeasure = false;

public MarqueeText(C

ontext context) {

super(context);

// TODO Auto-generated constructor stub

}

public MarqueeText(Context context, AttributeSet attrs) {

super(context, attrs);

}

public MarqueeText(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

@Override

protected void onDraw(Canvas canvas) {

// TODO Auto-generated method stub

super.onDraw(canvas);

if (!isMeasure) {// 文字宽度只需获取一次就可以了

getTextWidth();

isMeasure = true;

}

}

/**

* 获取文字宽度

*/

private void getTextWidth() {

Paint paint = this.getPaint();

String str = this.getText().toString();

textWidth = (int) paint.measureText(str);

}

@Override

public void run() {

currentScrollX -= 2;// 滚动速度

scrollTo(currentScrollX, 0);

if (isStop) {

return;

}

if (getScrollX() = -(this.getWidth())) {

scrollTo(textWidth, 0);

currentScrollX = textWidth;

//                        return;

}

postDelayed(this, 5);

}

// 开始滚动

public void startScroll() {

isStop = false;

this.removeCallbacks(this);

post(this);

}

// 停止滚动

public void stopScroll() {

isStop = true;

}

// 从头开始滚动

public void startFor0() {

currentScrollX = 0;

startScroll();

}

}布局文件:

LinearLayout xmlns:android=""

xmlns:tools=""

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" 

Button

android:id="@+id/start"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="start"

android:text="走起" /

Button        android:id="@+id/stop"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="stop"        android:text="停止" /    Button        android:id="@+id/startfor0"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="startFor0"        android:text="从头开始" /    simtice.demo.marqueetext.MarqueeText        android:id="@+id/test"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:background="#339320"        android:ellipsize="marquee"        android:singleLine="true"        android:text="这才是真正的文字跑马灯效果这才是真正的字跑马灯效果这才是真正的"        android:textColor="#000000"        android:textSize="20dp"     /simtice.demo.marqueetext.MarqueeText/LinearLayoutMainActivitypublic class MainActivity extends Activity {        private MarqueeText test;        @Override        public void onCreate(Bundle savedInstanceState) {                super.onCreate(savedInstanceState);                setContentView(R.layout.activity_main);                test = (MarqueeText) this.findViewById(R.id.test);        }        public void start(View v) {                test.startScroll();        }        public void stop(View v) {                test.stopScroll();        }        public void startFor0(View v){                test.startFor0();        }}


网站栏目:android跑马灯效果,安卓手机跑马灯怎么设置
文章链接:http://scyanting.com/article/dsgddgp.html