开发过程中,我们常常要实现各种各样的效果,跑马灯就是其中之一。android的TextView可以设置属性android:ellipsize="marquee"来实现跑马灯效果,但是如果我们的是要实现图文并茂的复杂布局的跑马灯,TextView就有点捉襟见肘了。

先来看下效果图:

hammerheadMMB29Ksimonchen01232016151025
hammerheadMMB29Ksimonchen01232016151025

既有图片,又有文字。我们看到这种效果,一般会想到通过自定义控件来实现,但是处理起来还是有点麻烦。那么我们可以怎样来实现呢?

ObjectAnimator

Android属性动画。跑马灯实际就是一个横向的位移效果。我们完全可以通过通过给View设置动画来实现,而且非常简单。

ObjectAnimator是从API11,也就是android3.0开始引入的。网上有很多相关的文章了,这里就不详细介绍了。我们只关注我们需要实现动画的方法。

ofFloat(Object target, String propertyName, float... values) Constructs and returns an ObjectAnimator that animates between float values.

第一个参数: 需要执行动画的View 第二个参数: 动画类型,因为我们是需要执行横向移动效果,所以直接传入"translationX" 第三个参数: 这是一个可变的float参数。因为我们是需要从右到左的执行。按照坐标规律,数字是从大到小,因为跑马灯需要滚出视图区域,所以结束位置一定是一个负数。float... values可以只传入一个值,代表从当前位置往右边移动多少。可以自己设置不同的值来看效果。

那么如何实现我们图中的效果呢?控件默认位置是0,需要让它从最右边执行到最左边。