2014-03-24 52 views

回答

9

创建动画本身非常简单。你不需要一个库。有哪些适合大多数情况下,还有其他的方法来制作动画的东西两个选项,但这些是最重要的:

  • 查看动画
  • 对象动画

没有多大的差别在这两者之间就如何使用它们而言,但它们可以做不同的事情。

1)查看动画:

对于观看动画你得先写一个动画XML。其中描述了动画的外观和持续时间。当然,您也可以通过编程方式创建这些动画,但在大多数情况下,使用xml创建动画效果更好。例如,这里有两个动画xmls,一个从顶部向下滑动视图,另一个从视图中淡出视图。

滑下:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
      android:fromYDelta="-100%" 
      android:toYDelta="0%" 
      android:duration="1000"/> 
</set> 

淡出:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha 
      android:fromAlpha="1" 
      android:toAlpha="0" 
      android:duration="700"/> 
</set> 

比你要加载这样的动画:

Animation slide = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down); 

然后你就可以将动画您如下所示:

linearLayout.startAnimation(slide); 

您可以将这些动画合并到一个xml中,只需放置多个translate/alpha/etc。标记到一个集合标记中。

android:startOffset="500" 

为了完整:这是你将如何创建编程淡出动画:您可以通过设置startOffset这样拖延的集合中的一个动画开始

Animation fadeOut = new AlphaAnimation(1, 0); 
fadeOut.setStartOffset(offset); 
fadeOut.setDuration(duration); 

2)对象动画器:

对象动画器可以再次在代码和xml中创建,但在大多数情况下,xml更可取。这是一个淡出动画将会是什么样的对象动画:

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" 
       android:interpolator="@android:anim/linear_interpolator" 
       android:propertyName="alpha" 
       android:valueType="floatType" 
       android:valueFrom="1.0" 
       android:valueTo="0.0" 
       android:duration="1000" /> 

对象的动画看起来可能更复杂一些的开始,但没有太多的XML的差别。可以说ObjectAnimators比View Animations更适合的一件事是ObjectAnimators可能更强大,因为它们可以为任何对象的任何属性制作几乎任何动画。例如围绕它的Y轴并没有多少人知道,这样的事情,甚至有可能下面的动画将旋转视图:

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" 
       android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
       android:propertyName="rotationY" 
       android:valueType="floatType" 
       android:valueFrom="0.0" 
       android:valueTo="360.0" 
       android:duration="5000"/> 

这就是你如何创建编程相同的动画:

ObjectAnimator animation = ObjectAnimator.ofFloat(view, "rotationY", 0.0f, 360f); 
animation.setDuration(5000); 
animation.setInterpolator(new AccelerateDecelerateInterpolator()); 
animation.start(); 

结果看起来是这样的:

enter image description here

您可以从XML应用的ObjectAnimator动画这样的:

AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(getActivity(), R.animator.rotate_axis_y); 
set.setTarget(targetView); 
set.start(); 
+0

这是一个辉煌的答案,明确和重点。谢谢! – HenriqueMS

2

结账Lottie by airbnb

链接到github

您可以使用Bodybovin解析导出为JSON的Adobe After Effects动画。

添加依赖

compile 'com.airbnb.android:lottie:2.1.0' 

JSON文件添加到资产,并以此为如下

<com.airbnb.lottie.LottieAnimationView 
    android:id="@+id/animation_view" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:lottie_fileName="enter the json file name with .json extension" 
    app:lottie_loop="true" 
    app:lottie_autoPlay="true" />