【问题标题】:Android library to create easily cool animations [closed]用于创建轻松酷炫动画的 Android 库 [关闭]
【发布时间】:2018-04-07 20:59:20
【问题描述】:

我知道一个很酷的库,可以在 CSS 中制作一些很酷的对象动画,http://daneden.github.io/animate.css/

Android 中有没有类似的东西?我的意思是,任何可以轻松制作动画的库。

谢谢

【问题讨论】:

标签: android


【解决方案1】:

创建动画本身非常容易。你不需要图书馆。有两个选项适合大多数情况,还有其他方法可以制作动画,但这些是最重要的:

  • 查看动画
  • 对象动画师

这两者在使用方式上没有太大区别,但可以做不同的事情。

1) 查看动画:

对于视图动画,您首先必须编写动画 xml。在其中,您描述了动画应该是什么样子以及持续多长时间。当然,您也可以通过编程方式创建这些动画,但在大多数情况下,最好在 xml 中创建它们。例如这里有两个动画 xml,一个从顶部向下滑动视图,另一个淡出视图。

向下滑动:

<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();

【讨论】:

  • 这是一个绝妙的答案,清晰而准确。谢谢!
【解决方案2】:

查看Lottie by airbnb

链接到github

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

添加依赖

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

将JSON文件添加到assets中,如下使用

<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" />

【讨论】:

    猜你喜欢
    • 2014-10-02
    • 2016-04-21
    • 1970-01-01
    • 2012-01-31
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    相关资源
    最近更新 更多