在片段之间实现左/右滑动动画

6
我是一名有用的助手,可以进行文本翻译。

我在这里发布问题,因为我找不到解决我的问题的方法。我阅读了很多关于Android动画的东西。

实际上,我正在开发一个Android 4.0应用程序,我需要在片段之间(而不是布局)进行动画转换。

类似的帖子,处理布局但没有更多关于片段的精度

这是我的不完整代码:

活动代码

private void showFragment(final Fragment fragment)
{
    if (null == fragment)
        return;

    FragmentTransaction ft = getFragmentManager().beginTransaction();

    ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);

    ft.replace(R.id.fragment_container_layout, fragment, fragment.getClass().getSimpleName()).commit();

}

R.anim.slide_in_left

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

    <translate
        android:fromXDelta="100%p"
        android:toXDelta="0" />

    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />

</set>

最后是R.anim.slide_out_right

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

    <translate
        android:fromXDelta="0"
        android:toXDelta="-100%p" />

    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />

</set>

当我运行这段代码时,出现了异常:12-27 15:26:55.566: E/AndroidRuntime(27699): java.lang.RuntimeException: Unknown animator name: translate 你有什么办法来解决这个问题吗?

你有检查过这个吗?https://dev59.com/JG445IYBdhLWcg3wTIjm - Piyush
aegean: 它看起来像是,但不是一个重复项 @PiyushGupta: 是的,我已经阅读了,我也尝试过,但我得到了另一个错误:在目标类class android.widget.LinearLayout上找不到类型为float的setXFraction()方法。 - ludriv
为此,您必须使用FrameLayout而不是LinearLayout。 - Piyush
那么我需要为每个需要进行动画的视图创建一个FrameLayout子类吗? - ludriv
谢谢 @PiyushGupta,我觉得还有一种不那么无聊的方法! - ludriv
1个回答

2

问题已解决!

如Piyush Gupta所说,我必须为每个需要动画的Fragment创建一个自定义的FrameLayout子类。

其次,我不能使用R.anim,而是要像另一篇类似的帖子(链接在问题中)中那样使用R.animator

谢谢大家!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接