如何在 Android 中禁用棒棒糖过渡动画

How can I disable lollipop out transition animation in Android

我想在我的应用程序中添加棒棒糖过渡,这真的很棒。它通过流畅的动画将我的视图从一个 activity 分享到另一个 activity,但是当我从第二个屏幕退出到第一个屏幕时我想禁用这个动画,但我找不到如何做 id。我的主题有这种风格:

        <item name="android:windowActivityTransitions">true</item>
    <item name="android:windowContentTransitions">true</item>
    <item name="android:windowAllowEnterTransitionOverlap">true</item>
    <item name="android:windowAllowReturnTransitionOverlap">false</item>
    <item name="android:fragmentAllowEnterTransitionOverlap">@bool/default_underline_indicator_fades</item>
    <item name="android:fragmentAllowReturnTransitionOverlap">@bool/default_underline_indicator_fades</item>

屏幕是指活动吗?如果是这样,就打电话

overridePendingTransition(0, 0)

第二次完成()后activity

添加另一个答案,因为我无法在第一个答案中粘贴代码。尝试

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(0, 0);
}

好的,我知道如何关闭退出转换了。延迟一段时间后,我从视图中删除了转换名称:

 view.postDelayed(new Runnable() {
            @Override
            public void run() {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    view.setTransitionName("some unused transition name");
                }
            }
        }, 500);

如果是删除 - activity 完成后将不会共享

试试这个,如果可行请告诉我(要禁用退出动画,请将 shouldShowExitAniamtion 设置为 false):

@Override
public void onBackPressed() {
    if (shouldShowExitAnimation) {
        super.onBackPressed();
    } else {
        finish();
    }
} 

只需调用常规 Activity finish() 方法而不是 supportFinishAfterTransition()

并重写返回方法

@Override
public void onBackPressed() {
    finish();
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            finish();
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

如果有人一直在寻找答案,您可以像这样 activity 禁用过渡:

override fun finishAfterTransition() {
   super.finish()
}