对您的动画文件进行以下修改:
进入.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="500"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
退出.xml:
<?xml version="1.0" encoding="utf-8"?>
<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="-100%"
android:toYDelta="0%" />
</set>
您的第二个活动将从右向左滑入。
为了更好地理解如何使用动画的 fromXDelta 和 toXDelta 值,这里有一个关于这些值的非常基本的说明:
这样您就可以轻松理解为什么要为当前活动添加 android:fromXDelta="0%" 和 android:toXDelta="-100%"。这是因为您希望它从 0% 变为 -100% 位置。
[编辑]
因此,如果您想从 ActivityA 打开 ActivityB,请执行以下操作(假设您有一个按钮):
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(ActivityA.this, ActivityB.class));
overridePendingTransition(R.anim.enter, R.anim.exit);
}
});
现在,如果你想要第一个的“向后”动画,当你离开 Activity B 时,你需要 2 个新的动画文件和 ActivityB 的 onBackPressed 方法中的一些代码,如下所示:
首先是动画文件:
left_to_right.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="500"
android:fromXDelta="-100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
right_to_left.xml:
<?xml version="1.0" encoding="utf-8"?>
<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="100%"
android:toYDelta="0%" />
</set>
在 ActivityB 中执行以下操作:
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left);
}
此外,如果您启用了向上导航,则在这种情况下您还必须添加动画:
您可以像这样启用向上导航:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
这也是您在这种情况下处理动画的方式:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
//NavUtils.navigateUpFromSameTask(this);
finish();
overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left);
return true;
}
return super.onOptionsItemSelected(item);
}
另外请注意,即使您的代码没问题,您的手机也可能会关闭动画。要打开然后执行以下操作:
- 打开设置并转到开发者选项
- 确保它已启用(通过滑动右上角的切换按钮)
- 向下滚动并在“绘图”下,一一点击这些选项:Windows 动画比例、过渡动画比例和 Animator 持续时间比例
- 选择“动画比例 1x”
这有帮助吗?