毕加索:2个片段之间的共享元素转换

时间:2018-04-02 16:05:00

标签: android android-fragments android-animation picasso shared-element-transition

我有一个带有recyclerview的片段,它有一个ImageView,用Picasso加载它的照片。单击recyclelerview项时,它将使用具有较大ImageView的新片段替换当前片段,并使用Picasso加载相同的图像。我想在这两个片段之间实现共享元素转换,而我似乎无法通过谷歌搜索找到。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

过去几天我一直在努力解决同样的问题,最后得到了它,除了我使用Glide,请查看我的question。我在那里分享了一些代码,但对于毕加索来说,它会是类似的。基本上,你可以通过推迟共享元素转换,直到你确定图像被加载为止,你使用Picasso Callback,一旦图像加载完成就会触发,你开始推迟转换,类似于那个:

Picasso.with(mContext).load(image).resize(width,height)
                .error(R.drawable.error)
                .placeholder(R.drawable.placeholder)
                .into(imageView, new Callback() {
                    @Override
                    public void onSuccess() {
                        startPostponedEnterTransition();
                    }

                    @Override
                    public void onError() {
                        startPostponedEnterTransition();
                    }
                });

您可以在this文章中了解有关推迟过渡的更多信息。

当然,实施共享元素转换涉及其他步骤,其中一部分可以在我的问题中找到,另一部分在this文章(最近的)和this一部分(它有4个部分) 只是为了确保,你的碎片不是嵌套的?

如果您在阅读这些文章后遇到一些问题,我可以分享一些代码或尽可能多地解释。