一起Talk Android吧(第四百八十回:用代码实现视图动画)

各位看官们大家好,上一回中咱们说的例子是"集合类视图动画",这一回中咱们说的例子是"用代码实现视图动画"。闲话休提,言归正转,让我们一起Talk Android吧!

实现方法

我们在前面章回中介绍的视图动画都是通过xml文件实现的,在使用动画的时候,在代码中获取动画并且绑定到控件上。动画的实现主要是在xml中配置动画的属性,因此我们依据不同类型的视图动画介绍了不同的标签和属性,包含渐变类,缩放类、平移类、旋转类和集合类,一共五类视图动画。本章回中将介绍使用代码实现视图动画的方法,详细如下:

  1. 通过构造方法创建视图动画类的对象;
  2. 绑定动画到控件上;
  3. 绑定动画通过startAnimation方法实现,这种方法和绑定xml中动画的方法完全一样;

示例代码

用代码实现动画的过程比较简单,不过核心操作体现在构造方法中,因为构造方法是重载方法,有多个构造方法,我们以渐变类动画为例来说明。

AlphaAnimation alphaAnimation = new AlphaAnimation(0,1);
alphaAnimation.setDuration(4000);
mImageViewBubble.startAnimation(alphaAnimation);

上面的代码中通过AlphaAnimation类的构造方法创建了渐变类动画的对象,该类的构造方法有多种,我们使用带有两个参数的构造方法:

  • 第一个参数表示动画开始时的透明度;
  • 第二个参数表示动画结束时的透明度;

其实这两个参数对应了alpha标签中的fromAlphatoAlpha属性。代码中的setDuration()方法不是AlphaAnimation类的方法而是从父类继承来的方法。startAnimation()方法用来把动画绑定到ImageView控件上,这种方法和绑定xml中动画的方法完全一样。

集合类动画的使用方法也其它类动画不一样,因为它没有属性,所以构造方法比较简单。通常使用带有一个参数的构造方法来创建集合类对象,该参数是布尔类型,取值为true时表示它包含的动画使用共用的插值器。取值为false时表示它包含的动画使用动画自己的插值器;

集合类动画的特点是把其它类型的动画组成一个动画集,用代码实现集合类动画时通过addAnimation()方法把其它类型的动画组成动画集,该方法的参数就是其它类动画的对象,下面是示例代码:

AnimationSet animationSet = new AnimationSet(false);
animationSet.addAnimation(alphaAnimation);

演绎推广

我们以渐变类动画为例介绍了如何通过代码实现动画,缩放、平移、旋转和集合类动画的实现方法也类似。不同的地方在于各个类的构造方法不同,接下来我分享一下如何把动画的实现从xml配置迁移到代码实现的方法:

  1. xml中的标签名称对应代码中的类名,通常是在标签名后面加上Animation来组成类名;
  2. xml中的属性对应该类中构造方法的参数,参数类型和数量与属性类型和数量完全匹配;
  3. 共同类Animation变成了父类,渐变类等五种类型的动画是它的子类;
  4. 共同属性变成了父类的公有方法,子类对象通过setXXX()方法来配置共同属性;
  5. 有一个例外是集合类动画,它的类名是AnimationSet,构造方法比较简单,主要通过addAnimation()方法把其它类型的动画组成动画集;

经验总结

我们介绍了实现视图类动画的两种方法:xml实现和代码实现。其实它们的实现方法类似,xml实现时重点关注各个标签以及标签包含的属性,代码实现时重点关注类以及类的构造方法。而xml中的标签就是代码中的类,xml中属性就是类中构造方法的参数。

当然了这两种实现动画的方法还是有些差异的:

  • xml实现动画比较清晰,代码和实现是分开的,互不影响;
  • 代码实现动画比较灵活,可以随时使用;

在实际项目中,我的经验是使用xml来实现动画,这样有助于项目代码管理。大家不必拘泥于我们的经验,可以依据项目需要来选择一种实现方法。

看官们,关于"用代码实现视图动画"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值