属性动画的简单用法收集

有时候我们想让某个控件实时的去执行某个属性动画,而有时候我们需要某个控件像view动画那样在一定的时间范围内做出某个动画效果。

那么如何做呢?下面给出相应的方法:

一:某个控件在一定的时间范围内做出属性动画效果变化

ObjectAnimator objectAnimatorX = ObjectAnimator.ofFloat(iv_02, "translationX", 20);
ObjectAnimator objectAnimatorY = ObjectAnimator.ofFloat(iv_02, "translationY", 20);
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.setDuration(100);
animatorSet.playTogether(objectAnimatorX,objectAnimatorY);
animatorSet.start();
代码中的iv_02就是代表的要做动画效果的控件。且本例是一个属性动画集合变化。下面介绍第二种方式实现:

mHeader.animate().translationY(0).setDuration(300)
        .setInterpolator(new AccelerateInterpolator());
mContentView.animate().translationY(0).setDuration(300)
        .setInterpolator(new AccelerateInterpolator());
mHeader.animate().scaleX(1).setDuration(300).setInterpolator(new AccelerateInterpolator());
mHeader.animate().scaleY(1).setDuration(300).setInterpolator(new AccelerateInterpolator());
代码中的mHeader和mContentView都是代表的控件,这是另外一种完成:一定时间范围内做出属性动画效果。


二:某个控件实时的做出属性动画的变化效果

代码超级简单,如下:

// 计算header移动距离(手势移动的距离*阻尼系数*0.5)
float headerMoveHeight = deltaY * 0.5f * SCROLL_RATIO;
// 计算content移动距离(手势移动的距离*阻尼系数)
float contentMoveHeight = deltaY * SCROLL_RATIO;
//属性变化
mHeader.setTranslationY(headerMoveHeight);
mContentView.setTranslationY(contentMoveHeight);
float scale = deltaY / mHeader.getHeight() / 2.5f + 1;
mHeader.setScaleX(scale);
mHeader.setScaleY(scale);
从上面的代码中,我们可以看出来,这里的效果实现是用的直接设置相应的属性即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值