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

时间:2017-03-15 15:04:48

标签: android animation android-5.0-lollipop transition

我希望为我的应用添加棒棒糖过渡,这真的很棒。它通过平滑的动画分享我从一个活动到另一个活动的视图,但是当我从第二个屏幕退出到第一个屏幕并且我找不到如何做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>

6 个答案:

答案 0 :(得分:1)

通过屏幕你的意思是活动吗?如果是这样,请致电

overridePendingTransition(0, 0)

在第二个活动

上结束()之后

答案 1 :(得分:1)

只需调用常规的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);
    }
}

答案 2 :(得分:1)

如果有人一直在寻找答案,则可以为以下活动禁用转场:

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

答案 3 :(得分:0)

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

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

答案 4 :(得分: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);

如果它被删除 - 活动结束时将不会共享

答案 5 :(得分:0)

尝试这个并让我知道它是否有效(要禁用退出动画,请将shouldShowExitAniamtion设置为false):

     struct TreeNode {
         int val;
         TreeNode *left;
         TreeNode *right;
         TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     };

    class Sample  {

    public:
        vector<vector<int>> zigzagLevelOrder(TreeNode* root) 
        {

            vector<vector<int>> result;
            zigzagLevelOrder(root, result, 0);
            return result;

        }

        void zigzagLevelOrder(TreeNode* root, vector<vector<int>>&result, int level)
        {
            if(root != 0)
            {

                if(level == result.size())
                {
                    vector<int> v;
                    if(level%2 == 0)
                    {
                        v.push_back(root->val);
                    }
                    else
                    {
                        vector<int>::iterator it = v.begin();
                        v.insert(it, root->val);
                    }
                    result.push_back(v);
                }
                else
                {
                    if(level%2 == 0)
                    {
                        result[level].push_back(root->val);    
                    }
                    else
                    {
                        vector<int>::iterator it = result[level].begin();
                        result[level].insert(it, root->val); 
                    }
                }

                zigzagLevelOrder(root->left, result, level + 1);
                zigzagLevelOrder(root->right, result, level + 1);
            }        
        }

    };