我正在尝试使用图像作为共享元素为RecyclerView元素进行共享元素转换。
除了共享元素转换之外,我能够进行其他转换工作。
我的猜测是问题出现在Transition.hide和transition.Show。
中 另外,我被卡住了。请帮助:)以下是处理转换的方法
public void goToProduct(ProductItem current) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Transition changeTransform = TransitionInflater.from(this).
inflateTransition(R.transition.change_image_transform);
Transition explodeTransform = TransitionInflater.from(this).
inflateTransition(android.R.transition.explode);
productListFragment.setSharedElementReturnTransition(changeTransform);
productListFragment.setExitTransition(explodeTransform);
productPageFragment.setSharedElementEnterTransition(changeTransform);
productPageFragment.setEnterTransition(explodeTransform);
isProductPageOpenedFromCart = false;
isProductPageOpenedFromList = false;
ImageView listImage = (ImageView) findViewById(R.id.listImg1);
ImageView pageImage = (ImageView) findViewById(R.id.pageImg);
FragmentTransaction transaction = manager.beginTransaction();
transaction.hide(productListFragment)
.addToBackStack("transaction")
.addSharedElement(listImage, "MyTransition");
if (isCartOpen) {
CartFragment cartFragment = (CartFragment) manager.findFragmentByTag(CART_FRAGMENT_TAG);
transaction.remove(cartFragment);
isCartOpen = false;
isProductPageOpenedFromCart = true;
} else {
isProductPageOpenedFromList = true;
}
productPageFragment.setProduct(current);
transaction.show(productPageFragment).addToBackStack("transaction")
.addSharedElement(pageImage, "MyTransition");;
transaction.commit();
}
else {

转换文件夹文件名为change_image_transform,包含:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeTransform/>
<changeImageTransform/>
</transitionSet>
&#13;
我也确实使用过android:transitionName =&#34; MyTransition&#34;在boath图像。
以下是添加到style.xml的代码行
<item name="android:windowContentTransitions">true</item>
<item name="android:windowEnterTransition">@transition/change_image_transform</item>
<item name="android:windowExitTransition">@transition/change_image_transform</item>
<item name="android:windowSharedElementEnterTransition">@transition/change_image_transform</item>
<item name="android:windowSharedElementExitTransition">@transition/change_image_transform</item>
&#13;
答案 0 :(得分:0)
在RecyclerView中你可以拥有许多id R.id.listImg1 的视图你必须在适配器中设置sharedView setTransitionName programatycally例如你可以使用你的产品ID来创建过渡名称。当您创建第二个详细信息片段时,您可以将包过渡名称传递给该分段。在onCrete中,您可以将图像transitionname设置为与之前相同。
或者您可以创建:
public interface IRecyclerClikListener {
public void onItemClik(int pos,Object obj,View view);
}
将此侦听器添加到回收站。在视图中,您将参考传递给clikced row。如果您参考了cliked视图,则可以将转换名称设置为图像属于此视图。别忘了在第二个片段中设置相同的转换名称。