在Android中调用另一个活动时如何提供动画?
Posted
技术标签:
【中文标题】在Android中调用另一个活动时如何提供动画?【英文标题】:How to provide animation when calling another activity in Android? 【发布时间】:2011-02-08 17:32:24 【问题描述】:我有两个活动 A 和 B。我想在什么时候有收缩动画 Activity A 调用 B 并在 Activity B 调用 A 时最大化动画。我不需要动画 xml 文件。
当我们在 android 中调用另一个 Activity 时,它会给出其默认动画,然后它会调用收缩动画。
我想要的是默认动画不应该出现,我想要的动画应该出现。
我们真的可以在调用另一个Activity时给动画吗?
【问题讨论】:
【参考方案1】:你必须使用 OverridePendingTransition 方法来实现它,它在Activity class 中。 apidemos 示例的 res/anim 文件夹中的示例动画。检查。不仅仅是查看ApiDemos/App/Activity/animation 中的演示。
例子:
@Override
public void onResume()
// TODO LC: preliminary support for views transitions
this.overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left);
【讨论】:
感谢您的回复。 API 级别 5 支持 overridePendingTransition 方法,我希望 Android 1.5 支持该应用程序。有没有其他方法可以将动画从一个 Activity 提供给另一个。 太棒了!玩起来很有趣 @sunil 我有和你一样的问题。你能解决这个问题吗?api 级别 3 或 4(不是 5)的动画 在 onResume() 中保留动画代码将导致当用户离开应用程序并返回时播放动画。在许多应用中并不理想。 我需要添加super.onResume();
,得到:"android.util.SuperNotCalledException: Activity com.abc.MyActivity 没有调用 super.onResume()"我>【参考方案2】:
从 API 16 开始,您可以在调用 Context.startActivity(Intent, Bundle) 或相关方法时提供活动选项包。它是通过ActivityOptions 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+:
对于面向 API 级别 5+ 的应用,有活动 overridePendingTransition
方法。传入和传出动画需要两个资源 ID。 0
的 id 将禁用动画。在startActivity
调用之后立即调用它。
即:
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);
然后在您的 Activity 中,您只需指定自己的动画即可。
这也适用于 1.5 API(级别 3)。
【讨论】:
你说“指定你自己的动画”是什么意思?你怎么做到这一点?谢谢! 我也有同样的问题。可能在 onResume 和 onPause 的开始动画中。 有没有办法用Animator来代替? 调用finish()后也可以使用同样的方法!R.anim.fade_in
不还是一个我们在res\anim
中应该有的 xml 文件动画吗?【参考方案3】:
编写了一个教程,以便您可以为活动的进出设置动画,
享受:
http://blog.blundellapps.com/animate-an-activity/
【讨论】:
【参考方案4】:Jelly Bean 通过ActivityOptions.makeCustomAnimation() 方法添加了对此的支持。当然,由于它只是在 Jelly Bean 上,因此对于实际用途来说几乎毫无价值。
【讨论】:
它不再一文不值了:) 如果您的目标是 pre-JellyBean,请使用ActivityOptionsCompat
。以上是关于在Android中调用另一个活动时如何提供动画?的主要内容,如果未能解决你的问题,请参考以下文章