Java Android:加速活动之间的共享元素转换

Java Android:加速活动之间的共享元素转换,java,android,user-interface,transition,Java,Android,User Interface,Transition,我有两个活动之间的共享元素转换,其工作方式如下: Intent someintent = new Intent(this, someclass.class); if (Build.VERSION.SDK_INT >= 21) { ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this , new Pair<

我有两个活动之间的共享元素转换,其工作方式如下:

Intent someintent = new Intent(this, someclass.class);

        if (Build.VERSION.SDK_INT >= 21) {

            ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this
                    , new Pair<>(viewClicked.findViewById(R.id.someimage), "someimage")
                    , new Pair<>(viewClicked.findViewById(R.id.someicon), "someicon")
            );
            startActivity(someintent, options.toBundle());
        }
        else {
            startActivity(someintent);
        }
Intent someintent=新的Intent(this,someclass.class);
如果(Build.VERSION.SDK_INT>=21){
ActivityOptions=ActivityOptions.MakeScenetTransitionAnimation(此
,新的一对(viewClicked.findViewById(R.id.someimage),“someimage”)
,新对(viewClicked.findViewById(R.id.someicon),“someicon”)
);
startActivity(someintent,options.toBundle());
}
否则{
星触觉(someintent);
}

这很好,但过渡过程非常缓慢。当第一次单击图像时,它似乎会在转换发生之前暂停一两秒钟。这是由于正在加载的活动的“重量”造成的还是延迟是可配置的?

您是否尝试更改
entertransion
returntransition
的持续时间:

    private Transition enterTransition() {
        ChangeBounds bounds = new ChangeBounds();
        bounds.setDuration(2000);

        return bounds;
    }

    private Transition returnTransition() {
        ChangeBounds bounds = new ChangeBounds();
        bounds.setInterpolator(new DecelerateInterpolator());
        bounds.setDuration(2000);

        return bounds;
    }
onCreate
中:

getWindow().setSharedElementEnterTransition(enterTransition());
getWindow().setSharedElementReturnTransition(returnTransition());

另一种可能有助于某些已在其样式中设置过渡的方式:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().getSharedElementEnterTransition().setDuration(2000);
    getWindow().getSharedElementReturnTransition().setDuration(2000)
        .setInterpolator(new DecelerateInterpolator());
}

您正在转换到什么视图?我在使用需要从web抓取的图像时遇到延迟,在本例中,我延迟了enter转换(API的一部分)直到图像被完全下载/显示为止。@Booger我正在从一个包含图像回收视图的活动转换到另一个包含相同图像片段的活动。视图本身是一个常规的图像视图。谢谢-我尝试在转换中的fromActivity和toActivity中使用它,它不会影响速度。所以,如果这是改变转换时间的唯一方法,那么我猜是片段的重量造成了延迟。非常感谢您的帮助如果设置代码,我会崩溃:window.sharedelemententertransformation不能null@famfamfam你需要确保你有一个合适的过渡设置。很难说没有看到代码。您可以添加空检查或将其写入Kotlin以避免此错误,但它无法解决此问题。