这段时间突然有一个需求,要实现跑马灯效果,回忆一下,感觉这个应该在n年前就已经被玩坏,遂在网上一搜,果然一堆供你使用,于是兴高采烈的随便打开一个网页,发现实现的方式有许多,按照网上写个demo是没问题,但放到我的app中就毫无作用,当时我内心是崩溃的,后来,我灵机一动,想这么简单一个效果,自己来实现,功夫不负有心人,一会就搞定,特此记录这一振奋吾心得时刻,同时我也总结了实现这种效果各种方法。
- 方式一:
简单,但有时无效,不能控制速度
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:focusable="true">
<TextView
android:layout_width="100dip"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="走马灯效果的演示"
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true" />
</LinearLayout>
- 方式二
这种方式初看是没有问题,但细看还是存在很多问题,因为重写了onDraw()方法,没有调用super.onDraw(),这会导致设置的textView许多属性的无效,可优化,但有些复杂(可能我水平有限,坐等大神告知)。
public class AutoScrollTextView extends TextView {
private static final String TAG = "AutoScrollTextView";
/**
* view的y坐标
*/
private float viewY = 0.0f;