我试图重写onBackPressed()方法来设置我自己的动画,但实际发生的是它从我的活动滑到相同的活动,然后显示新的活动。
下面是我的代码:
@Override
public void onBackPressed()
{
super.onBackPressed();
overridePendingTransition(R.anim.slide_out_right, R.anim.slide_in_left);
}下面是动画:
向右滑出:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate android:duration="400" android:fromXDelta="0%" android:toXDelta="100%" />
<alpha android:duration="400" android:fromAlpha="1.0" android:toAlpha="0.0" />
</set>左侧幻灯片:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator= "false" >
<translate android:duration = "400" android:fromXDelta = "-100%" android:toXDelta = "0%" />
<alpha android:duration = "400" android:fromAlpha = "0.0" android:toAlpha = "1.0" />
</set>谢谢你们的帮助。
发布于 2015-12-24 19:41:25
super.onBackPressed();删除此行,然后工作
这是translate slide_in_from_left
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="500"
android:fromXDelta="-300%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>slide_in_from_right
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="500"
android:fromXDelta="300%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>slide_out_to_left
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="500"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="-300%"
android:toYDelta="0%" />
</set>slide_out_to_right
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="500"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="300%"
android:toYDelta="0%" />
</set>/
@Override
public void onBackPressed()
{
overridePendingTransition(R.anim.slide_out_right, R.anim.slide_in_left);
// add which work after you back.
}并添加你正在工作的功能,按back。
发布于 2015-12-24 19:57:40
以下是你可以尝试解决的方法:
@Override
public void onBackPressed()
{
finish();
overridePendingTransition(R.anim.slide_out_right, R.anim.slide_in_left);
}发布于 2015-12-24 20:02:38
编辑:这是来自Android Developers Blog - Back and other hard keys: three stories的答案
如果你要调查安卓平台上的基础应用程序,你会注意到一个相当常见的模式:添加一点魔法来拦截BACK键,并做一些不同的事情。要做到这一点,魔术需要看起来像这样:
@Override public boolean onKeyDown(int keyCode,KeyEvent onKeyDown){ if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //在后面做一些事情。return true;} return super.onKeyDown(keyCode,event);}
如何截取活动中的BACK键也是我们看到开发人员问的常见问题之一,因此从2.0开始,我们有了一个新的小API来使这一点更简单,更容易发现和正确:
@Override public void onBackPressed() { //在后面做点什么。返回;}
如果这就是您所关心的全部,并且您并不担心支持2.0之前的平台版本,那么您可以停在这里。否则,请继续阅读。
因此,您的代码应该如下所示
@Override
public void onBackPressed()
{
overridePendingTransition(R.anim.slide_out_right, R.anim.slide_in_left);
finish();
}和
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
overridePendingTransition(R.anim.slide_out_right, R.anim.slide_in_left);
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}https://stackoverflow.com/questions/34452179
复制相似问题