添加动画到片段时替换

时间:2014-07-08 07:19:59

标签: android

我正在尝试一个简单的片段代码演示,我在方向更改中替换片段

CODE:

FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();

        /**
         * Check the device orientation and act accordingly
         */
        if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            /**
             * Landscape mode of the device
             */             

            LS_Fragment ls_fragment = new LS_Fragment();
            fragmentTransaction.replace(android.R.id.content, ls_fragment);
        } else {
            /**
             * Portrait mode of the device
             */
                PM_Fragment pm_fragment = new PM_Fragment();
            fragmentTransaction.replace(android.R.id.content, pm_fragment);
        }
        fragmentTransaction.commit();

现在搜索网后我发现我必须使用

fragmentTransaction.setCustomAnimations()

但我无法理解如何编写动画xml并将其提供给.setCustomAnimations()函数

2 个答案:

答案 0 :(得分:1)

您刚刚将In and Out Animation作为参数传递给.setCustomAnimations(in,out)

fragmentTransaction.setCustomAnimations(R.anim.slide_in_left2, R.anim.slide_out_right2);

转到此fragments-translate-animation进行演示或

转到此android-switch-fragment-with-animation.html进行演示

并查看此Android Fragment Animation SO Post

答案 1 :(得分:0)

要为片段之间的转换设置动画,请使用片段管理器创建片段事务。

在每个片段交易中,您可以指定分别用于显示和隐藏的动画内外动画(或者在使用替换时两者都指定)。

以下代码显示了如何通过滑出一个片段并将另一个片段滑入其中来替换片段。

FragmentTransaction ft = getFragmentManager().beginTransaction();

// here you have to set your animation xml for in and out transition 
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);

DetailsFragment newFragment = new DetailsFragment();

ft.replace(R.id.details_fragment_container, newFragment, "detailFragment");

// Start the animated transition.
ft.commit();

作为参考,XML动画定义将使用objectAnimator标记。 slide_in_left的示例可能如下所示:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="700"
        android:fromXDelta="-100%"
        android:toXDelta="0%" >
    </translate>
</set>

slide_out_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
   <translate
       android:duration="700"
       android:fromXDelta="0%"
       android:toXDelta="100%" >
   </translate>
</set>