Fragment切换到activity时的动画 activity到activity也可以

//抱歉检测出还有问题 暂时不建议使用 后期我会更新

ok解决了 我把MainActivity之前设置的启动模式是单栈模式 改为task栈内复用后就好了

<!-- 设置为栈内复用模式了 -->
        <activity
            android:name=".activity.MainActivity"
            android:label="@string/app_name"
            android:launchMode="singleTask">

        </activity>

我写了一个平移效果的 右边进左边出

项目的功能是点击登录时界面从右边滑出

activity跳转到activity用这个就可以 这个方法百度上到处都有

方法里放的两个文件就是动画的效果 一个管当前界面退出的动画 一个管下一个界面进入的动画 我会在后边贴出来

overridePendingTransition(R.anim.ani_right_get_into, R.anim.ani_left_sign_out);

方法需要在 startActivity、finish、onBackPressed 这三个下边运行才会有效果

普通跳转动画

 Intent intentLoginA = new Intent(getContext(), LoginActivity.class);
        startActivity(intentLoginA);
        overridePendingTransition(R.anim.ani_right_get_into, R.anim.ani_left_sign_out);

 点击返回图标时

 case R.id.mLoginReturn://点击返回上一页
                finish();
                overridePendingTransition(R.anim.ani_left_into, R.anim.ani_right_out);
                break;

点击返回按钮时 

 //界面回退时的动画  左进右出
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            onBackPressed();
            overridePendingTransition(R.anim.ani_left_into, R.anim.ani_right_out);
            return true;
        }
        return false;
    }

但是 遇到fragment到activity就会有bug 切换时灵时不灵 就是有时候有效果 有时候没效果。。

当时我是这样写的

mActivity.overridePendingTransition(R.anim.ani_right_get_into, R.anim.ani_left_sign_out);

后来问了问大佬 给了我一个地址 大家可以看下这个 解决了我的问题

Android中getActivity()为null的解决办法

就是在onAttach方法中获取Activity的对象 这个不会为空 用取得的上下文调用动画代码就ok了 

 @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        mCtx = activity;//mCtx 是成员变量,上下文引用
    }

    @Override
    public void onDetach() {
        super.onDetach();
        mCtx = null;
    }

    //未登录时跳转登陆界面  //动画"右进左出"
    public void intentLoginYouJinZuoChu() {
        Intent intentLoginA = new Intent(getContext(), LoginActivity.class);
        startActivity(intentLoginA);
        mCtx.overridePendingTransition(R.anim.ani_right_get_into, R.anim.ani_left_sign_out);
    }
    //未登录时跳转登陆界面  //动画"下进上出"
    public void intentLoginShangChuXiaJin() {
        Intent intentLoginB = new Intent(getContext(), AuthenticationActivity.class);
        startActivity(intentLoginB);
        mCtx.overridePendingTransition(R.anim.ani_botton_into, R.anim.ani_top_out);
    }

下边贴上xml文件:

R.anim.ani_right_get_into
<set xmlns:android="http://schemas.android.com/apk/res/android">


    <translate
        android:duration="500"
        android:fromXDelta="100%p"
        android:fromYDelta="0"
        android:toXDelta="0%p"
        android:toYDelta="0" />


</set>
R.anim.ani_left_sign_out

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="500"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="-100%"
        android:toYDelta="0"/>
</set>

回退时把动画反过来执行就可以了 结束 我要去加班搬砖了 15号还要交货呢 再见

猜你喜欢

转载自blog.csdn.net/qq_42259105/article/details/88377193