随着移动应用的不断发展,用户对于应用的需求越来越高,除了功能性之外,用户也越来越注重于应用的设计与用户交互体验。而动画作为一种非常重要的用户交互体验方式,也成为了现代移动应用设计中不可或缺的一部分。本文将为大家介绍一下Android中常用的动画分类以及如何在应用中运用它们。
一、View动画
View动画顾名思义是对View进行动画操作,Android中常用的View动画有Tween动画和Frame动画。
Tween动画
Tween动画又称为补间动画,它可以根据时间的变化来改变View的属性(比如大小、透明度、平移、旋转等)使得View的变化看上去更加流畅。通过补间动画,开发者可以很方便的实现各种动态效果。下面是一个旋转动画的示例:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <rotate android:duration="500" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360" /> </set>
上面的代码定义了一个时长为500毫秒的旋转动画,从0度旋转到360度。其中pivotX和pivotY指的是旋转的中心点。
Frame动画
Frame动画是指播放一组图片序列形成的动画。在Android中可以通过AnimationDrawable来实现。下面是一个Frame动画的示例:
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/frame1" android:duration="100" /> <item android:drawable="@drawable/frame2" android:duration="100" /> <item android:drawable="@drawable/frame3" android:duration="100" /> </animation-list>
上面的代码定义了一个播放3张图片形成的Frame动画,每张图片播放100毫秒,效果就是形成了一个连续的动画效果。
二、属性动画
属性动画是在View动画的基础上进一步发展的一种动画形式。与View动画不同的是,属性动画可以对任意对象进行动画操作,而不是仅限于View,同时支持更多的动画效果。Android中常用的属性动画工具是ValueAnimator和ObjectAnimator。
ValueAnimator
ValueAnimator可以用于对一个值进行动画操作,比如View的透明度、位置、大小等属性。
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0f, 1f); valueAnimator.setDuration(1000); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animator) { float fraction = animator.getAnimatedFraction(); view.setAlpha(fraction); } }); valueAnimator.start();
上面的代码运用ValueAnimator实现了一个透明度变化的动画效果,将View的透明度从0到1,持续时间为1秒钟。
ObjectAnimator
ObjectAnimator可以对一个对象的属性进行动画操作,比如View的透明度、位置、大小等属性,所以ObjectAnimator比ValueAnimator更加灵活。
ObjectAnimator animator = ObjectAnimator.ofFloat(view, "alpha", 1f, 0f, 1f); animator.setDuration(2000); animator.start();
上面的代码运用ObjectAnimator实现了一个透明度变化的动画效果,将View的透明度从1到0再到1,持续时间为2秒钟。
三、揭露动画
揭露动画是在Android 5.0推出的一种比较特殊的动画效果,也是现在主流应用组件采用的开场动画。这种动画效果就是在一个已有的布局上添加一个圆形动画,将布局从圆形的中心向四周展开。该动画实现原理是通过裁剪窗口来实现的。
代码示例
下面是一个简单的揭露动画的代码示例:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { Animator animator = ViewAnimationUtils.createCircularReveal(view, centerX, centerY, startRadius, endRadius); animator.setDuration(1000); animator.start(); }
上面的代码通过ViewAnimationUtils.createCircularReveal方法创建了一个圆形的揭露动画,并指定了动画持续时间为1秒钟。
结语
动画作为一种非常重要的用户交互体验方式,已经成为现代移动应用设计中不可或缺的一部分。通过本文的介绍,相信大家已经了解了Android中的动画分类以及如何运用它们。