我知道这是互联网上的一些例子,而且在Stackoverflow上我发现了许多例子,但是不相信它们,它们都没有满足我的需求.即使我前几次问过类似的问题,我也再次陷入这个问题.基本上是相同的问题,但方向相反.我可以做任何我想要的动画,Activity B但这里的问题是Activity A我可以在几个场景中制作动画.基本上只在这个组合中ActivityA播放enter_left:
overridePendingTransition(R.anim.enter_from_right, R.anim.exit_on_left);
我想要做的是动画(移动)只是Activity A无论是在startActivity()并onBackPressed()同时Activity B在屏幕上停留不为所动.Activity A总是画在上面(作为一个滑动菜单,我可以这样做Activity B).我真的认为上面的代码片段可以完成这项工作:
Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivityForResult(intent, 500);
overridePendingTransition(R.anim.stay_still, R.anim.exit_on_left);
Run Code Online (Sandbox Code Playgroud)
但这甚至不播放任何动画
//this is the animation for onBackPressed()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
overridePendingTransition(R.anim.enter_from_left, 0);
}
Run Code Online (Sandbox Code Playgroud)
动画Activity A我想要但Activity B突然从屏幕上消失,我想留下(设置(R.anim.enter_from_left, R.anim.stay_still)什么也不做).
我准备了所有5个必要的动画:
enter_from_left
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" > …Run Code Online (Sandbox Code Playgroud) 使用以下代码可以使用动画更改活动:
Bundle animation = ActivityOptions.makeCustomAnimation(App.getContext(), R.anim.enter_from_right, R.anim.exit_to_left).toBundle();
startActivity(intent, animation);
Run Code Online (Sandbox Code Playgroud)
对于片段,您可以在FragmentTransaction上执行类似的操作:
// ...
transaction.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left);
// ...
Run Code Online (Sandbox Code Playgroud)
这有效!但是我想在按下时弹出一个动画(从后台弹出).对于片段,您只需添加2个动画资源(popEnter和popExit):
transaction.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_left, R.anim.exit_to_right);
Run Code Online (Sandbox Code Playgroud)
如何为活动创建相同的"背景动画"?