Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 自定义后退按钮动画_Android - Fatal编程技术网

Android 自定义后退按钮动画

Android 自定义后退按钮动画,android,Android,按下“后退”按钮时的默认动画是从左向右滑动。我想用一个自定义动画来代替它。我目前认为onBackPressed和overridePendingTransition的一些组合会起作用,但我一直没能让它工作。找到了答案。我没有找到当前的活动。下面的代码实现了这一点 @Override public void onBackPressed() { [This Activity].this.finish(); overridePendingTransition(R.anim.fade_in, R.

按下“后退”按钮时的默认动画是从左向右滑动。我想用一个自定义动画来代替它。我目前认为onBackPressed和overridePendingTransition的一些组合会起作用,但我一直没能让它工作。

找到了答案。我没有找到当前的活动。下面的代码实现了这一点

@Override
public void onBackPressed() {
  [This Activity].this.finish();
  overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
}

我认为您不应该使用finish,因为视图存储的数据将被擦除

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);
}

如果你不想要动画

遵循活动中的代码

参考: ,int

我不会使用onBackPressed,因为当我们使用片段时,这是一种黑客行为,例如,我们需要处理堆栈。我在这里提出了一个更优雅的解决方案:


包括一些示例代码,否则我们不知道您可能做错了什么。请注意super,它需要在它之后,否则没有效果。@Chris.Jenkins,如果您正在告诉overridepending。。应该在超级之后,然后是的。它应该是在任何结束呼叫之后。超级联赛基本上结束了。因此,在这种情况下,超车应该在完成或超车后进行。现在,有没有办法做到这一点,除了最后一次按下后退按钮,这将退出你的应用程序?i、 e.有没有办法检查后堆栈,看看你的应用程序是否还在上面?@Chris.Jenkins,这是错误的。overridePendingTransition始终位于最后。当调用一个意图overridePendingTransition时,它是最后一个,即使在上面的示例中,overridePendingTransition也是最后一个。效果确实有效。我想为那些可能从Chris的commentsuper.on中获得错误信息的人澄清这一点。backpressed自动调用finish。使用它,而不是手动调用finish。。
@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(0,0);
}