android Fragment动画的问题

时间:2015-10-22 08:12:24

标签: android android-fragments android-animation

我正在学习开发Android应用程序,我正在尝试通过从侧面滑动来添加片段。片段已添加,但只是出现,没有动画。

FragmentOne中有一个按钮,我在MainActivity中附加了一个事件,以便在点击FragmentTwo时。该事件被正确拦截

有人能发现我做错了吗?

MainActivity.java

public class MainActivity extends Activity
{
    LinearLayout ll;
    FragmentOne f1;
    Animation fadeIn;

    @Override
    protected void onCreate ( Bundle savedInstanceState )
    {
        super.onCreate ( savedInstanceState );
        setContentView ( R.layout.activity_main );

        f1 = new FragmentOne ();

        FragmentTransaction ft1 = getFragmentManager ().beginTransaction ();
        ft1.add ( R.id.topFl, f1 );
        ft1.commit ();
    }


    @Override
    protected void onStart ()
    {
        super.onStart ();

        Button b = f1.getAddFragmentButton ();
        b.setOnClickListener
        (
            new Button.OnClickListener () 
            {
                public void onClick ( View v ) 
                {
                    FragmentTransaction ft2 = getFragmentManager ().beginTransaction ();
                    ft2.setCustomAnimations ( R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_right, R.anim.exit_to_left );

                    ft2.addToBackStack ( null );

                    ft2.add ( R.id.bottomFl, new FragmentTwo () );
                    ft2.commit ();
                }
            }
        );
    }
}

enter_from_right.xml

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

    <objectAnimator
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromXDelta="-100%" android:toXDelta="0%"
        android:fromYDelta="0%" android:toYDelta="0%"
        android:duration="1700"/>
</set>

exit_to_left.xml

<?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <objectAnimator
        android:fromXDelta="0%" android:toXDelta="-100%"
        android:fromYDelta="0%" android:toYDelta="0%"
        android:duration="1700"/>
</set>

1 个答案:

答案 0 :(得分:2)

使用support library fragments而不是使用getFragmentManager(),请使用getSupportFragmentManager()

这可能听起来反直觉,但最好使用支持库组件,因为任何错误(如此)都会更新和修复,而平台组件则与平台版本相关联。