我知道一个很酷的库可以在CSS中使用一些很酷的对象动画,http://daneden.github.io/animate.css/
Android中有类似的东西吗?我的意思是,任何制作动画的库都很容易。
谢谢
答案 0 :(得分: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.标签到一组标签。您可以通过设置startOffset
来延迟集合中一个动画的开始:
android:startOffset="500"
完整性:这是以编程方式创建淡出动画的方法:
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setStartOffset(offset);
fadeOut.setDuration(duration);
2)对象动画师:
可以在代码和xml中再次创建对象动画师,但在大多数情况下,xml更受欢迎。这就是使用Object Animator淡出动画的样子:
<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();
结果如下:
您可以从xml应用ObjectAnimator动画,如下所示:
AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(getActivity(), R.animator.rotate_axis_y);
set.setTarget(targetView);
set.start();
答案 1 :(得分:0)
链接到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" />