修改fragment的进入动画_Android Fragment 切换动画设置

在Activity跳转之间可以设置动画效果,例如平移,渐变,旋转等动画,当然在Fragment中也可以设置切换的动画效果,可以达到跟ViewPager切换动画类似的效果。在Fragment中设置自定义切换动画主要分为了两种情景,一种是使用 android.app.Fragment包里面的Fragment类时,FragmentManager里面的FragmentTransaction事务只支持XML中的animator标签,如objectAnimator属性动画,不支持传统的补间动画标签如,等。

另一种是使用兼容性版本的android.support.v4.app.Fragment包里面的Fragment类,SupportFragmentManager里面的FragmentTransaction事务支持XML中的animation标签,也就是传统的补间动画,例如,,不支持属性动画标签。

设置Fragment的切换动画主要是使用FragmentTransaction事务类的中setCustomAnimations方法:

setCustomAnimations

FragmentTransaction setCustomAnimations (intenter,intexit,intpopEnter,int popExit)

该方法有4个参数,第一个参数enter是指当一个Fragment被添加added 或者绑定attached到视图上,该Fragment进入视图时的animation或者animator的资源ID;

第二个参数exit是指当一个Fragment从视图上被移除removed或者解除绑定detached时,该Fragment移出视图时的animation或者animator的资源ID;

第三个参数popEnter是指当调用popBackStack()方法或者类似的方法弹出栈顶的Fragment后,Fragment栈的栈顶Fragment重新被添加readded或重新绑定reattached到视图上时,该Fragment进入视图时的animation或者animator的资源ID;

第四个参数popExit是指当调用popBackStack()方法或者类似的方法弹出栈顶的Fragment时,该弹出的Fragment即从视图上被移除removed或者解除绑定detached,该Fragment移出视图时的animation或者animator的资源ID。

android.support.v4.app.Fragment包实现

要实现Fragment的自定义切换动画效果,首先需要自定义XML动画资源文件,可以在res文件夹下新建anim文件夹然后新建XML资源文件。由于android.support.v4.app.Fragment包只支持补间动画的标签,所以可以按照自己的想法来在根标签set中新建动画标签来实现效果,如translate平移,alpha渐变透明度,rotate旋转,scale缩放等。

slide_left_in.xml 左视图进入时动画

slide_left_out.xml 左视图移出时动画

slide_right_in.xml 右视图进入时动画

slide_right_out.xml右视图移出时动画

Activity中实现

packagecom.example.call_aidl;importandroid.os.Bundle;importandroid.support.v4.app.Fragment;importandroid.support.v4.app.FragmentTransaction;importandroid.support.v7.app.ActionBar;importandroid.support.v7.app.AppCompatActivity;public class Main2Activity extendsAppCompatActivity {

ActionBar actionBar;

Fragment curFragment;

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main2);

actionBar=getSupportActionBar();

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

ActionBar.Tab tab1=actionBar.newTab();

tab1.setText("新业务Service");

tab1.setTabListener(new MyTabListener(newLeftFragment()));

ActionBar.Tab tab2= actionBar.newTab().setText("盘点Service");

tab2.setTabListener(new MyTabListener(newRightFragment()));

actionBar.addTab(tab1);

actionBar.addTab(tab2);

}class MyTabListener implementsActionBar.TabListener{privateFragment fragment;publicMyTabListener (Fragment fragment){this.fragment=fragment;

}

@Overridepublic voidonTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {

curFragment=fragment;

ft.setCustomAnimations(R.anim.slide_right_in,

R.anim.slide_left_out,

R.anim.slide_left_in,

R.anim.slide_right_out).replace(R.id.context,fragment);

}

@Overridepublic voidonTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {

}

@Overridepublic voidonTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {

}

}

@Overrideprotected voidonDestroy() {super.onDestroy();

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值