在 Android 中调用其他活动时如何提供动画?

我有两个活动 A 和 B,我想有缩小动画时 Activity A calls B and maximize animation when Activity B calls A. I don't need the animation xml files for this.

当我们在 Android 中调用另一个 Activity 时,它会给出默认动画,然后调用收缩动画。

我想要的是,默认的动画不应该发生,我想要的动画应该发生。

Can we actually give the animation when calling another Activity?

137528 次浏览

您必须使用 OverridePendingTransfer 方法来实现它,该方法位于 活动课中。Apidemos 示例的 res/anim 文件夹中的示例 Animations。检查一下。超过检查 应用程序/活动/动画的演示。

例如:

@Override
public void onResume(){
// TODO LC: preliminary support for views transitions
this.overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left);
}

Since API 16 you can supply an activity options bundle when calling StartActivity (Inent,Bundle) or related methods. It is created via the 活动选项 builder:

Intent myIntent = new Intent(context, MyActivity.class);
ActivityOptions options =
ActivityOptions.makeCustomAnimation(context, R.anim.fade_in, R.anim.fade_out);
context.startActivity(myIntent, options.toBundle());

如果您正在使用支持库,不要忘记检查 ActivityOptions 构建器和 ActivityOptionsCompat的其他方法。



API 5 + :

For apps targeting API level 5+ there is the Activities overridePendingTransition method. It takes two resource IDs for the incoming and outgoing animations. An id of 0 will disable the animations. Call this immediately after the startActivity call.

例如:

startActivity(new Intent(this, MyActivity.class));
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

API 3 + :

您可以使用意图中的 Intent.FLAG_ACTIVITY_NO_ANIMATION标志来防止默认动画(从右侧滑入)。

例如:

Intent myIntent = new Intent(context, MyActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
context.startActivity(myIntent);

然后在你的活动中你只需要指定你自己的动画。

这也适用于1.5 API (级别3)。

Jelly Bean adds support for this with the Make CustomAnimation () method. Of course, since it's only on Jelly Bean, it's pretty much worthless for practical purposes.