为Activity添加切换动画

Activity跳转可以带有一些转场动画,从一个Activity切换到另一个Activity,本文将介绍一个比较简单的实现方式。从一个Activity切换到另一个,或者执行Fragment转换的时候。
定义两个anim文件作为第一个Activity退出,第二个Activity进入的动画文件。

push_left_in.xml



    

push_left_out.xml



    

定义好文件后做动画的过程就很简单,我们只需要在startActivity调用之后添加我们的动画。

startActivity(new Intent(Intent.ACTION_VIEW, uri));
            overridePendingTransition(R.anim.push_left_in,R.anim.push_left_out);

如果是Fragment的startActivity我们则需要拿到所在的Activity再调用overridePendingTransition,Fragment并没有这个方法。

点击进入可以正常进行动画,但退出的时候并没有动画。退出的动画需要在第二个Activity的finish方法中添加。我们需要再定义第二个Activity的退出和第一个Activity的进入动画。

push_right_out.xml



    
    

push_right_in.xml



    
     

finish中添加动画

@Override
public void finish() {
    super.finish();
    overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out);
}

Fragment的页面转换动画与Activity略有不同,可以直接通过FragmentTransition指定使用默认的转换动画,也可以使用自定义的转换动画,但是要求一次指定四个动画,两个进入的动画,两个退出的动画,
使用默认的转换动画:

    getSupportFragmentManager()
            .beginTransaction()
            .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
            .replace(R.id.content_layout, new ShowRateFragment()).commit();

使用自定义的转换动画

    getSupportFragmentManager()
            .beginTransaction()
            .setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out, R.anim.push_right_in, R.anim.push_right_out)
            .replace(R.id.content_layout, new ShowRateFragment()).commit();

你可能感兴趣的:(为Activity添加切换动画)