Android 自定义活动共享转换

Android 自定义活动共享转换,android,android-transitions,shared-element-transition,Android,Android Transitions,Shared Element Transition,我有两个活动:A和B。两者都有一个图像浏览页面 有一个共享的活动转换,“当前”映像作为共享元素。例如,如果用户滚动到第三个图像,则共享元素名称为image\u 2 要执行转换,我只需调用: ActivityCompat.startActivityForResult(activity, intent, requestCode, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements)

我有两个活动:
A
B
。两者都有一个图像浏览页面

有一个共享的活动转换,“当前”映像作为共享元素。例如,如果用户滚动到第三个图像,则共享元素名称为
image\u 2

要执行转换,我只需调用:

ActivityCompat.startActivityForResult(activity, intent, requestCode,
       ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements)
             .toBundle());
这很好用

我想为
a
(调用方活动)添加自定义退出转换。后者应该淡出另一种观点


如何实现此目标?

您可以使用以下方法指定退出、重新进入、进入和返回转换

getWindow().setEnterTransition(getEnterTransition());
getWindow().setReturnTransition(getReturnTransition());
getWindow().setExitTransition(getExitTransition());
getWindow().setReenterTransition(getReenterTransition());
当然,在您的情况下,您只需要设置退出转换。但我之所以包含这一点,是因为您可能希望从调用方活动设置重新输入转换

要回答您的问题(淡出),您可以像这样使用淡出过渡

@SuppressWarnings("NewApi")
private Transition getExitTransition() {
    Fade fadeOut = new Fade(Fade.OUT);
    fadeOut.excludeTarget(android.R.id.navigationBarBackground, true);
    fadeOut.excludeTarget(android.R.id.statusBarBackground, true);
    fadeOut.setInterpolator(new FastOutLinearInInterpolator());
    fadeOut.setDuration(150);
    return fadeOut;
}
您可能会注意到我排除了导航栏和状态栏,它是用来防止


好了,我希望这有帮助。

您可以使用以下方法指定退出、重新进入、进入和返回转换

getWindow().setEnterTransition(getEnterTransition());
getWindow().setReturnTransition(getReturnTransition());
getWindow().setExitTransition(getExitTransition());
getWindow().setReenterTransition(getReenterTransition());
当然,在您的情况下,您只需要设置退出转换。但我之所以包含这一点,是因为您可能希望从调用方活动设置重新输入转换

要回答您的问题(淡出),您可以像这样使用淡出过渡

@SuppressWarnings("NewApi")
private Transition getExitTransition() {
    Fade fadeOut = new Fade(Fade.OUT);
    fadeOut.excludeTarget(android.R.id.navigationBarBackground, true);
    fadeOut.excludeTarget(android.R.id.statusBarBackground, true);
    fadeOut.setInterpolator(new FastOutLinearInInterpolator());
    fadeOut.setDuration(150);
    return fadeOut;
}
您可能会注意到我排除了导航栏和状态栏,它是用来防止

好了,我希望这有帮助