我有两个活动A和B.我想要收缩动画时 当活动B调用A时,活动A调用B并最大化动画。我不需要动画xml文件。
当我们在Android中调用另一个Activity时,它会提供默认动画,然后调用缩小动画。
我想要的是不应该发生默认动画,并且应该发生我想要的动画。
我们可以在调用另一个Activity时实际给出动画吗?
答案 0 :(得分:137)
从API 16开始,您可以在调用Context.startActivity(Intent, Bundle)或相关方法时提供活动选项包。它是通过ActivityOptions构建器创建的:
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。 ID为0
将禁用动画。在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(Level 3)。
答案 1 :(得分:78)
您必须使用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);
}
答案 2 :(得分:29)
答案 3 :(得分:3)
Jelly Bean使用ActivityOptions.makeCustomAnimation()方法添加了对此的支持。当然,因为它只是在Jelly Bean上,所以它实际上毫无价值。