AdapterViewFlipper实现跑马灯横幅广告滚动效果

先看效果图:

 

AdapterViewFlipper继承了AdapterViewAnimator,可以通过showPrevious()和showNext()方法控制组件显示上一个、下一个组件,可以设置切换view时候的动画,而且使用起来非常简洁。

XML属性:

android:animateFirstView:设置显示该组件的第一个View时是否使用动画

android:inAnimation:设置组件显示时使用的动画

android:loopViews:设置循环到最后一个组件后是否自动“转头”到第一个组件

android:outAnimation:设置组件隐藏时使用的动画

android:autoStart:设置显示该组件是否是自动播放

android:flipInterval:设置自动播放的时间间隔

以上属性同样也可以通过代码设置,这里就不做一一介绍了。

AdapterViewFlipper可以设置一个Adapter,去操作他的数据集合;还有一点需要注意的是AdapterViewFlipper只支持属性动画-ObjectAnimator,不可以设置别的方式的动画,不然会抛异常,如果你是写在XML里面,需要将文件放在animator下面!

animator xml:

<?xml version="1.0" encoding="utf-8"?>
<!--首页viewflipper进入动画-->
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator">
    <propertyValuesHolder
        android:propertyName="y"
        android:valueFrom="450"
        android:valueTo="0"
        android:valueType="floatType"/>
    <propertyValuesHolder
        android:propertyName="alpha"
        android:valueFrom="0"
        android:valueTo="1"
        android:valueType="floatType"/>
</objectAnimator>
<?xml version="1.0" encoding="utf-8"?>
<!--首页viewflipper退出动画-->
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator">
    <propertyValuesHolder
        android:propertyName="y"
        android:valueFrom="0"
        android:valueTo="-450"
        android:valueType="floatType"/>
    <propertyValuesHolder
        android:propertyName="alpha"
        android:valueFrom="1"
        android:valueTo="0"
        android:valueType="floatType"/>
</objectAnimator>

这是两个同时移动和渐变的组合动画,objectAnimator设置的组合动画只能同时进行。

注意:2019-06-24更新!如下...

上述通过xml的方式设置组合动画会在android6.0以下的手机出现异常:unknown animator name: propertyvaluesholder

低版本的手机无法识别propertyvaluesholder标签?

所以保险起见就用代码设置动画:

//设置进入动画
PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("translationY",450,0);
PropertyValuesHolder p2 = PropertyValuesHolder.ofFloat("alpha",0,1);
ObjectAnimator anim_in = ObjectAnimator.ofPropertyValuesHolder(vf_rewardNow,p1,p2).setDuration(1000);
anim_in.setInterpolator(new AccelerateDecelerateInterpolator());
adapterViewFlipper.setInAnimation(anim_in);

//设置退出动画
PropertyValuesHolder p3 = PropertyValuesHolder.ofFloat("translationY",0,-450);
PropertyValuesHolder p4 = PropertyValuesHolder.ofFloat("alpha",1,0);
ObjectAnimator anim_out = ObjectAnimator.ofPropertyValuesHolder(vf_rewardNow,p3,p4).setDuration(1000);
anim_out.setInterpolator(new AccelerateDecelerateInterpolator());
adapterViewFlipper.setOutAnimation(anim_out);

源码我就不更新了,就是发现这个问题更新一下博客。

源码Demo下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值