Google的“材料设计指南”规定了以下转换为“父母与孩子”#34;父级由列表组成时的转换。 (Material Design Guidelines)
我如何提供这样的过渡?我没有意识到为实现这一目标而提供的任何内置过渡。
答案 0 :(得分:9)
一种选择是使用ActivityOptionsCompat.makeScaleUpAnimation
Activity activity = getActivity();
Intent intent = new Intent(activity, OtherActivity.class);
Bundle options = ActivityOptionsCompat.makeScaleUpAnimation(
sourceView, 0, 0, sourceView.getWidth(), sourceView.getHeight()).toBundle();
ActivityCompat.startActivity(activity, intent, options);
这会导致新活动从sourceView
答案 1 :(得分:3)
使用共享元素启动活动
在具有共享元素的两个活动之间制作屏幕过渡动画:
启用主题中的窗口内容转换。 在您的样式中指定共享元素过渡。 将转换定义为XML资源。 使用 android:transitionName 属性为两个布局中的共享元素指定一个公用名。 使用ActivityOptions.makeSceneTransitionAnimation()方法。
// get the element that receives the click event
final View imgContainerView = findViewById(R.id.img_container);
// get the common element for the transition in this activity
final View androidRobotView = findViewById(R.id.image_small);
// define a click listener
imgContainerView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(this, Activity2.class);
// create the transition animation - the images in the layouts
// of both activities are defined with android:transitionName="robot"
ActivityOptions options = ActivityOptions
.makeSceneTransitionAnimation(this, androidRobotView, "robot");
// start the new activity
startActivity(intent, options.toBundle());
}
});
对于您在代码中生成的共享动态视图,请使用View.setTransitionName()方法在两个活动中指定公共元素名称。
要在完成第二个活动时反转场景转换动画,请调用Activity.finishAfterTransition()方法而不是Activity.finish()。
答案 2 :(得分:0)
您可以使用以下代码制作动画
Intent intent = new Intent(MainActivity.this, NFCTagInformationActivity.class);
Bundle options = ActivityOptionsCompat.makeClipRevealAnimation(
cvTagInfoSmall, 0, 0, cvTagInfoSmall.getWidth(), cvTagInfoSmall.getHeight()).toBundle();
ActivityCompat.startActivity(this, intent, options);
您可以使用makeScaleUpAnimation
代替makeClipRevealAnimation
进行不同的视图过渡动画。