activity之间及fragment之间切换的动画效果

众所周知,在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动画,添加自定义的属性动画会报:不能识别的动画类型。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值