【问题标题】:Custom Flip animation between fragments android support package片段之间的自定义翻转动画android支持包
【发布时间】:2015-12-19 03:25:45
【问题描述】:

我正在尝试找出如何在 2 个片段之间创建翻转动画。

我已尝试将CardFlip 培训作为指导,但似乎无法实现。 我正在使用android支持包并将其设置为补间动画,但不成功。

如何实现片段之间的翻转动画?

这是我从指南中创建的前 2 个 xml,也许你可以看看我是否做错了什么。 screen_flip_left_in.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

     <!-- Before rotating, immediately set the alpha to 0. -->
    <alpha
        android:valueFrom="1.0"
        android:valueTo="0.0"
        android:propertyName="alpha"
        android:duration="0" />

    <!-- Rotate. -->
    <rotate
        android:valueFrom="-180"
        android:valueTo="0"
        android:propertyName="rotationY"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:duration="@integer/card_flip_time_full"/>

    <!-- Half-way through the rotation (see startOffset), set the alpha to 1. -->
    <alpha
        android:valueFrom="0.0"
        android:valueTo="1.0"
        android:propertyName="alpha"
        android:startOffset="@integer/card_flip_time_half"
        android:duration="1" />
</set>

screen_flip_left_out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
        <!-- Rotate. -->
    <rotate
        android:valueFrom="0"
        android:valueTo="180"
        android:propertyName="rotationY"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:duration="@integer/card_flip_time_full" />

    <!-- Half-way through the rotation (see startOffset), set the alpha to 0. -->
    <alpha
        android:valueFrom="1.0"
        android:valueTo="0.0"
        android:propertyName="alpha"
        android:startOffset="@integer/card_flip_time_half"
        android:duration="1" />

</set>

【问题讨论】:

  • 什么不起作用?特定代码崩溃了吗?请提供更多详细信息。
  • @QVDev 首先,我不能使用指南中的 objectanimator,因为它在 android 支持包中不可用,所以代码在那里崩溃,直到我切换到补间动画。然后,我根本没有任何翻转效果。我不确定是否是因为我在那里使用了不同的插值器元素;我使用这个 android:interpolator="@android:anim/accelerate_decelerate_interpolator" 因为我需要支持 api 8 级,而指南中的那个是 api 11 向上的。
  • 所以当你把它改成补间时它工作正常吗?这确实可能是因为 api 级别。也许将 tween 用于较旧的 api 并为较新的 api 使用翻转?或者创建自定义翻转动画
  • @QVDev 不。我无法让它工作。我一定在xml中做错了什么。我会把它贴在这里,让你看看我是否错了。请问您有任何设置或如何创建自定义翻转动画吗?..
  • 这里也一样!你解决了吗?

标签: android


【解决方案1】:

android:propertyName 仅适用于 ObjectAnimator (Honeycomb+) 动画,不适用于 Gingerbread 的视图动画。只有使用 Honeycomb animator api 才能实现卡片翻转动画。我创建了一个支持库的分支,以允许使用来自NineOldAndroids 的 Animator api 进行片段转换。使用我的github project 的 animator-transition 分支。一旦你有了修改后的支持库,请查看 http://developer.android.com/training/animation/cardflip.html 以制作动画 xml。

【讨论】:

  • 甚至无法将您的项目导入 Eclipse。尝试连续几个小时(大约 4 小时) - 没有运气。每次项目出现问题或遗漏时。此外,您的项目需要 ActionBarSherlock 自己使用 support-v4。能否请您提供您的 supportv4 lib 版本的编译 jar(如 v4/bin 中的)?
【解决方案2】:

你的 xml 应该在 objectAnimator 标签内包含值,而不是在 alpha 和 rotate 标签内。 objectAnimator 具有 propertyName,其中您已经指定了属性值。

【讨论】:

    【解决方案3】:

    这不对! “一旦你有了修改后的支持库,请查看 http://developer.android.com/training/animation/cardflip.html 以制作动画 xml。”

    这并不真正支持 v4 库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      相关资源
      最近更新 更多