闪烁带来的共享元素转换
Shared element transition coming with blink
我在点击它的项目时有 recyclerview 我正在打开一个 activity 共享元素转换是这样的:
Intent myIntent = new Intent(getActive, EnlargeActivity.class);
myIntent.putExtra("IMAGE_URL", imageArrayList.get(position).getUrl());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
holder.iv.setTransitionName(String.valueOf(MainActivity.position + "ZoomImage"));
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(getActive,
holder.iv,
ViewCompat.getTransitionName(holder.iv));
context.startActivity(myIntent, options.toBundle());
在 activity 它有 viewpager:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_enlarge);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setEnterTransition(null);
}
supportPostponeEnterTransition();
在扩展 FragmentStatePagerAdapter 的 viewpager 适配器中返回一个具有图像视图的片段 ProductDetailViewPagerFragment 并且我正在加载这样的图像:(MainActivity.position 是 recyclerview 的位置)
Picasso.with(getActivity())
.load(url)
.into(imageView, new Callback() {
@Override
public void onSuccess() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
imageView.setTransitionName(MainActivity.position + "ImageZoom");
}
getActivity().supportStartPostponedEnterTransition();
}
@Override
public void onError() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
imageView.setTransitionName(MainActivity.position + "ImageZoom");
}
getActivity().supportStartPostponedEnterTransition();
}
});
我认为您应该在第二个 activity 中为 ViewPager 设置 TransitionName。之前的视图将与 viewPager 连接。
如果你打电话给
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
imageView.setTransitionName(MainActivity.position + "ImageZoom");
}
图片加载成功(或失败)后,转换完成,将不工作。
我在点击它的项目时有 recyclerview 我正在打开一个 activity 共享元素转换是这样的:
Intent myIntent = new Intent(getActive, EnlargeActivity.class);
myIntent.putExtra("IMAGE_URL", imageArrayList.get(position).getUrl());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
holder.iv.setTransitionName(String.valueOf(MainActivity.position + "ZoomImage"));
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(getActive,
holder.iv,
ViewCompat.getTransitionName(holder.iv));
context.startActivity(myIntent, options.toBundle());
在 activity 它有 viewpager:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_enlarge);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setEnterTransition(null);
}
supportPostponeEnterTransition();
在扩展 FragmentStatePagerAdapter 的 viewpager 适配器中返回一个具有图像视图的片段 ProductDetailViewPagerFragment 并且我正在加载这样的图像:(MainActivity.position 是 recyclerview 的位置)
Picasso.with(getActivity())
.load(url)
.into(imageView, new Callback() {
@Override
public void onSuccess() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
imageView.setTransitionName(MainActivity.position + "ImageZoom");
}
getActivity().supportStartPostponedEnterTransition();
}
@Override
public void onError() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
imageView.setTransitionName(MainActivity.position + "ImageZoom");
}
getActivity().supportStartPostponedEnterTransition();
}
});
我认为您应该在第二个 activity 中为 ViewPager 设置 TransitionName。之前的视图将与 viewPager 连接。 如果你打电话给
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
imageView.setTransitionName(MainActivity.position + "ImageZoom");
}
图片加载成功(或失败)后,转换完成,将不工作。