Fragment的基本用法大家应该都很熟悉了,下面记录下小白今天用到Fragment的一点小技巧;
一,Fragment几个重要的方法:
1,add(),replace()时,会执行fragment的生命周期
2,show(),hide()时,就是在BackStackRecord里面去选择目标fragment 放到栈顶,所有已经add到这个栈里面的fragment此时其实都是onResume()的,不会影响生命周期,
如果要想在我们理解的onResume()时去做一些操作,那么就在复写onHiddenChanged(boolean hidden)方法,因为show(),hide()方法都会回调这个方法。
二,在同一个Activity 中,标签项的Fragment切换动画
如果Fragment不是用ViewPager来加载,而是用FrameLayout
这时要想为其加上切换动画的话,就可以直接用FragmentManager里面的抽象方法
首先获取FragmentManager对像,通过FragmentManager对象来获取FragmentTransaction超类,
关键代码如下:
getSupportFragmentManager().beginTransaction() .setCustomAnimations(R.anim.push_in_right,R.anim.push_out_left) .show(mDiscoverFragment).hide(mHomeFragment) .commit();注意:一定要在show(),hide()前设置,
看源码:
public FragmentTransaction show(Fragment fragment) { BackStackRecord.Op op = new BackStackRecord.Op(); op.cmd = 5; op.fragment = fragment; this.addOp(op); return this; }void addOp(BackStackRecord.Op op) { if(this.mHead == null) { this.mHead = this.mTail = op; } else { op.prev = this.mTail; this.mTail.next = op; this.mTail = op; } op.enterAnim = this.mEnterAnim; op.exitAnim = this.mExitAnim; op.popEnterAnim = this.mPopEnterAnim; op.popExitAnim = this.mPopExitAnim; ++this.mNumOp; }以上,只要这样简单的一句,fragment切换时的水平动画效果就出来了。自己快去试试吧,