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