我想使用卡片翻转动画在 2 个片段之间进行交换。
这是我的动画文件之一:
<?xml version="1.0" encoding="utf-8"?>
<set>
<!-- Rotate. -->
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
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. -->
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:valueFrom="1.0"
android:valueTo="0.0"
android:propertyName="alpha"
android:startOffset="@integer/card_flip_time_half"
android:duration="1" />
</set>
我有 4 个这样的文件。它们几乎直接取自这个谷歌演示。我的最低 sdk 为 8,所以我使用的是强烈推荐的 Nine Old Android 库。但是,我仍然收到以下错误:Uknown animation name: objectAnimator
。我可以在我的java文件中导入objectAnimator的包,所以我非常确定我已经使用JAR文件正确配置了所有内容。早些时候,我将objectAnimator
设置为translate
(并更改了属性值),它确实做了一个动画,只是不是我要做的更复杂的动画。
有人对我可能做错了什么有任何建议吗?我开始抓住稻草。
编辑:以防万一有帮助,这是我的翻转卡功能:
public void flipSalesCard(FragmentManager fm) {
if (salesShowingBack) {
salesShowingBack = false;
Fragment smallSSF = new SmallSalesSectionFragment();
FragmentTransaction trans = fm.beginTransaction();
trans.setCustomAnimations(R.anim.card_flip_left_in, R.anim.card_flip_left_out);
trans.replace(R.id.SalesInfoFragment, smallSSF);
trans.addToBackStack(null);
trans.commit();
return;
}
salesShowingBack = true;
Fragment expandedSSF = new ExpandedSalesSectionFragment();
FragmentTransaction trans = fm.beginTransaction();
trans.setCustomAnimations(R.anim.card_flip_right_in, R.anim.card_flip_right_out);
trans.replace(R.id.SalesInfoFragment, expandedSSF);
trans.addToBackStack(null);
trans.commit();
}
Nine Old 不适用于片段 https://github.com/JakeWharton/NineOldAndroids/issues/43
该 https://github.com/kedzie/Support_v4_NineOldAndroids 还有另一个库但请注意警告,因为"视图动画将不再起作用"
尝试以编程方式执行此操作怎么样?
我的回答:如何在通知视图中对向下推送内容视图的幻灯片进行动画处理就是一个例子。
另外,如果您将xmlns:android="http://schemas.android.com/apk/res/android"中的一个向上移动到集合声明中并删除另一个,会发生什么情况。
我花了几个小时在同一个问题上,结果很干。这个StackOverflow答案提供了一种替代技术(不需要NineOldAndroid)来实现翻转旋转,效果非常好。