众所周知,在activity界面之间切换和fragment之间切换自身系统是给了一个动画的效果的!所有个性化需求是需要我们自己去实现!
第一:activity之间切换的动画效果 我们需要在activity之间跳转的时候去实现:如下
在点击开启另外一个界面后面,添加overridePendingTransition(R.anim.in_btn,R.anim_out_btn); //动画资源文件是放在res/anim下,anim/in_btn如下 动画集<set xmlns:android = "http://schemas.android.com/apk/res/android"> <translate android:fromYDelta = "100%p" android:toYDelta = "0" android:duration = "2000"/> <alpha android:fromAlpha = "0.0" android:toAlpha = "1.0" android:duration = "2000"/></set> //动画资源anim/out_btn如下 <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="0%p" android:toYDelta="100%p" android:duration="2000"/> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="2000" /> </set>以上,即可实现activity之间切换的动画效果
第二:Fragment之间切换的动画效果 因为fragment之间切换是需要获得管理器的–>然后就是开启一个事物–>设置其动画(有系统自带的动画或者自定义动画)–>fragment的具体操作(例如增加,删除,替换)–>提交事物commit 具体操作如下:
1,当前的activity添加fragment
//获得管理器 --》 开启事物 --》具体操作 --》提交 getFragmentManager().beginTransaction().add(R.id.fragment, new FragmentOne()).commit(); //特别说明--在当前的activity中设置其fragment的后退栈 @Override public void onBackPressed() { if (getFragmentManager().getBackStackEntryCount() > 0) { getFragmentManager().popBackStack(); } else { super.onBackPressed(); } }2,创建fragment—>FragmentOne如下
public class FragmentOne extends Fragment implements View.OnClickListener { private View rootView; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_layout,null); rootView.findViewById(R.id.btnAnotherFragment).setOnClickListener(this); return rootView; } // Fragment加入到回退栈--addToBackStack()方法含义 @Override public void onClick(View v) { getFragmentManager().beginTransaction() //设置自定义动画 .setCustomAnimations(R.animator.animator_enter,R.animator.animator_exit,R.animator.animator_enter,R.animator.animator_exit) //设置fragment加入回退栈 .addToBackStack("OtherFragment") //注意此时依附的仍然是R.id.fragment .replace(R.id.fragment, new OtherFragment()) .commit(); } } //其自定义属性动画效果如下 res/animator/animator_enter <set xmlns:android="http://schemas.android.com/apk/res/android"> <objectAnimator android:duration="1000" android:propertyName="alpha" android:valueFrom="0" android:valueTo="1" /> </set> res/animator/animator_exit <set xmlns:android="http://schemas.android.com/apk/res/android"> <objectAnimator android:duration="1000" android:propertyName="alpha" android:valueFrom="1" android:valueTo="0" /> </set>3,创建otherFragment即可 以上完成了:需要注意一下 1,设置系统自带的动画属性 getSupportFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 2,fragmentTransaction.setCustomAnimation()只能添加xml中定义的动画。 3, setCustomAnimation()必须在replace,add等方法前才会生效。 4, 使用support.v4包,则只能添加View动画,添加自定义的属性动画会报:不能识别的动画类型。
