我想在下一个活动中添加一个输入转换。
所以我做了:
getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
window.setEnterTransition(new Slide());
这似乎不起作用。做了一些试验和错误(因为我有其他活动的转换)我发现它在调用后确实有效
ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, view, "some_name");
ActivityCompat.startActivity(activity, new Intent(TourAndLoginActivity.this, LoginActivity.class), activityOptionsCompat.toBundle());
但是我没有共享元素(我添加了一个视图来测试它)。 无法将'null'添加为共享元素。
这样做真的是强制性的吗?我的解决方法是添加一个不可见的共享元素。
答案 0 :(得分:9)
取自Android开发者文档:
使用过渡启动活动 如果启用转换并为活动设置退出转换,则在启动另一个活动时会激活转换,如下所示:
startActivity(intent,
ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
如果您为第二个活动设置了输入转换,则活动开始时也会激活转换。要在启动另一个活动时禁用转换,请提供空选项包。
https://developer.android.com/training/material/animations.html
首先启用转换,如下所示:
getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
window.setEnterTransition(new Slide());
然后按如下方式启动活动:
startActivity(intent,
ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
答案 1 :(得分:0)
您可以在调用此方法时添加转换
Intent i = new Intent(context, SampleActivity.class);
i.putExtra("data", data);
startActivity(i);
context.overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);