属性动画PropertyAnimation 小试牛刀

本文详细介绍了属性动画的概念,特别是ObjectAnimator在Android中的使用方法,包括如何实现透明度和大小的变化,以及如何利用AnimatorSet进行多个动画的同步和顺序执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近看推酷,这几天的主题可以出一张专辑了,名字就叫属性动画之过年大团圆。开个玩笑罢了。

之前都是使用ViewAnimation,如果你不知道什么是viewAnimation,好吧,基本上引用它的语句是这样的形式view.startAnimation(xxoo); (现在知道了么?)

好了,言归正传,什么是属性动画?属性动画就是通过改变属性值是来实现动画效果,比如alpha scaleX scaleY translationX等等
相关类型在下边,今天主要说ObjectAnimator,为毛?因为简单粗暴… …
1. ObjectAnimator 动画的执行类
2. ValueAnimator 动画的执行类
3. AnimatorSet 用于控制一组动画的执行:线性,一起,每个动画的先后执行等。
4. AnimatorInflater 用户加载属性动画的xml文件
5. PropertyValueHolder 其实也是个动画集合,关于跟AnimatorSet的区别,一会说

随便在布局文件整一张图片,加一个点击时的方法,方法如下

 public void propAnim(final View view){
        ObjectAnimator animator = ObjectAnimator
        .ofFloat(view, "translationX", 0f,50f)//rotationY  以Y轴为基准开始旋转
        .setDuration(1000);
        animator.start();
        }

点完,顿时觉得头不疼了,腰不酸了,腿脚也麻利了吧。
这是最简单的一种,仅仅是旋转。现在要实现 alpha scale 透明度和大小两个方面的变化呢?
上面不是写了一个AnimatorSet 么,就是它了。

//通过AnimatiorSet来设计同步执行的多个属性动画
  ObjectAnimator alpha= ObjectAnimator.ofFloat(imageView, "alpha", 1.0F, 0.5F);// 透明度
  ObjectAnimator scaleX= ObjectAnimator.ofFloat(imageView, "scaleX", 1.0F, 0.50F);// 水平方向
  ObjectAnimator scaleY= ObjectAnimator.ofFloat(imageView, "scaleY", 1.0F, 0.50F);//竖直方向
  AnimatorSet set = new AnimatorSet();
  //set.playSequentially(alpha, scaleX, scaleY);//分步执行
  //set.playTogether(alpha, scaleX, scaleY);//同步执行
  //属性动画的执行顺序控制
  // 先同步执行动画scaleX和scaleX,然后再执行alpha
  set.play(scaleY).with(alpha);
  set.play(scaleX).after(scaleY);
  set.setDuration(1000);
  set.start();

说明一下,关于参数,因为是ofFloat方法所以,参数必须是float值,还有参数的个数,可变参数,你懂得,一个参数时,会通过反射的方法获得当前值作为初始值,之前的那个参数作为结束值,两个参数没啥好说的,一个开始,一个结束,三个参数同两个参数,中间那个为过度值。
其实还有一个法儿子,就是上边提到的5 PropertyValuesHolder

PropertyValuesHolder alpha = PropertyValuesHolder.ofFloat("alpha", 1.0f,1.5f);// alpha
        PropertyValuesHolder scaleX = PropertyValuesHolder.ofFloat("scaleX", 1.0f,0f,1.5f);//scaleX
        PropertyValuesHolder scaleY = PropertyValuesHolder.ofFloat("scaleY", 1.0f,0f,1.5f);//scaleY
            ObjectAnimator.ofPropertyValuesHolder(view, alpha,scaleX,scaleY).setDuration(2000).start();//从PropertyValuesHolder 导入动画

那么这两种区别在哪?
答案就在下边,不解释。

 //属性动画的执行顺序控制
 // 先同步执行动画scaleX和scaleX,然后再执行alpha
  set.play(scaleY).with(alpha);
  set.play(scaleX).after(scaleY);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值