【问题标题】:Android animator versus anim resource directoriesAndroid 动画师与动画资源目录
【发布时间】:2018-07-10 14:24:23
【问题描述】:

我正在研究如何适当地利用 Android 的资源目录,但我不清楚以下几点:

android animator 资源目录和android anim 资源目录有什么区别?

http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

此外,我想我要问的问题是属性动画和补间动画有什么区别?

【问题讨论】:

  • 我没有在下面看到这个答案,所以在下面的 API 指南链接中,在最底部,它说“区分使用新属性动画 API 的动画文件和使用旧版动画 API 的动画文件查看动画框架,从 Android 3.1 开始,您应该将属性动画的 XML 文件保存在 res/animator/ 目录中。"

标签: android android-resources


【解决方案1】:

老实说,我认为 Google 在解释 Property Animations API guide 中的差异方面做得非常好(见下文)。

TL;DR 的主要区别是:

  1. 补间动画简洁,只允许对视图的位置(平移)、大小(比例)、角度(旋转)和半透明度(alpha)进行操作。属性动画框架更加通用和灵活:它通过允许实时更新动画目标对象的任何属性(例如“foobar”)来概括前一种情况——只要它有一个 setFoobar() 方法。 setScaleX()、setAlpha() 等只是涉及视图的特定情况。

  2. 因此,实现补间动画通常更容易,代码也更轻量。

  3. 属性动画可用于任何类型的目标对象,而不仅仅是视图:唯一重要的是定义 setFoobar() 方法,如前所述(基于反射的方法查找)。

  4. 补间动画仅对视图的配置进行调整,而属性动画有效地修改对象。前一种方法的一个常见缺陷是,当使用动画来移动视图时,相关的可点击区域不会在整个动画过程中更新,并且与视图在屏幕上的有效位置不同步。

引用指南:

属性动画与视图动画有何不同

视图动画系统提供了仅对 View 对象进行动画处理的功能,因此如果您想要对非 View 对象进行动画处理,您必须实现自己的代码来执行此操作。视图动画系统也受到限制,因为它只公开了视图对象的几个方面以进行动画处理,例如视图的缩放和旋转,而不是背景颜色。

视图动画系统的另一个缺点是它只修改了视图的绘制位置,而不是实际的视图本身。例如,如果您为按钮设置动画以在屏幕上移动,则按钮可以正确绘制,但您可以单击按钮的实际位置不会改变,因此您必须实现自己的逻辑来处理此问题。

使用属性动画系统,这些约束被完全移除,您可以对任何对象(视图和非视图)的任何属性进行动画处理,并且对象本身会被实际修改。属性动画系统在执行动画的方式上也更加健壮。在较高级别上,您可以将动画师分配给您想要制作动画的属性,例如颜色、位置或大小,并且可以定义动画的各个方面,例如多个动画师的插值和同步。

然而,视图动画系统需要更少的时间来设置并且需要更少的代码来编写。如果视图动画完成了您需要做的所有事情,或者如果您现有的代码已经按照您想要的方式运行,则无需使用属性动画系统。如果出现用例,在不同情况下使用这两种动画系统也可能有意义。

【讨论】:

    【解决方案2】:

    基本上补间动画是标准动画,

    例如:缩放、旋转、平移等(这些可以应用于任何类型的视图)

    顾名思义,Property Animations 用于更改任何 View 的属性。

    例如:更改ImageView的Alpha,在棒棒糖中更改fab按钮的translationZ值等

    希望澄清。

    Check Android View Tween Animation

    补间动画可以对 View 对象的内容执行一系列简单的变换(位置、大小、旋转和透明度)。因此,如果您有一个 TextView 对象,您可以移动、旋转、放大或缩小文本。如果它有背景图像,则背景图像将与文本一起转换。动画包提供了补间动画中使用的所有类。

    check this url for Property Animation

    属性动画系统是一个强大的框架,可以让您为几乎任何东西制作动画。您可以定义动画以随时间更改任何对象属性,无论它是否绘制到屏幕上。属性动画在指定的时间长度内更改属性(对象中的字段)的值。要制作动画,您需要指定要制作动画的对象属性,例如对象在屏幕上的位置、要制作动画的时间以及要制作动画的值。

    【讨论】:

    • 谢谢!这很简洁,我现在完全明白了!
    【解决方案3】:

    试试这个简短的答案:

    res/anim - 任何视图Tween Animation缩放、旋转、平移)。

    res/animator - 某些视图 Property AnimationImageView - 更改 alpha,FAB - 设置 Z 顺序)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 2015-03-29
      相关资源
      最近更新 更多