android - 从 RecyclerView 到 Activity 的共享元素转换不起作用

标签 android android-recyclerview shared-element-transition

我想使用从 RecyclerView 项到另一个 Activity 的共享元素转换,但它不起作用。 RecyclerView 位于 fragment 内,这是 RecyclerView 项的 onClick 监听器

  @Override 
    public void onProductItemClick(int pos, PromoORProduct promoORProduct, ImageView shareImageView) {

    Intent intent = new Intent(getActivity(), ProductPreviewAct_.class);
    intent.putExtra("OBJECT", promoORProduct);
    intent.putExtra(ProductPreviewAct.SMALL_IMAGE_TRANSITION_NAME, "small_img" + pos);
    ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(), shareImageView, "small_img" + pos);
    getActivity().startActivity(intent, options.toBundle());
}

从我的适配器的 onBindViewHolder 调用监听器

  @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof ProductsViewHolder) {
            final PromoORProduct user = items.get(position);
            ProductsViewHolder userViewHolder = (ProductsViewHolder) holder;
                ViewCompat.setTransitionName(userViewHolder.imgSmall, "small_img"+position);
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    productsItemClickListener.onProductItemClick(holder.getAdapterPosition(), user, ((ProductsViewHolder) holder).imgSmall);
                }
            });
            userViewHolder.bind(user, this);
        } else if (holder instanceof LoadingViewHolder) {
            LoadingViewHolder loadingViewHolder = (LoadingViewHolder) holder;
            loadingViewHolder.progressBar1.setIndeterminate(true);
        }
    }

在我调用的 Activity 的 onCreate 中

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_product_preview);
        imgSmall = findViewById(R.id.imgSmall2);
        Bundle extras = getIntent().getExtras();
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            getWindow().setSharedElementEnterTransition(TransitionInflater.from(this).inflateTransition(R.transition.shared_element_transaction));
            String imageTransitionName = extras.getString(SMALL_IMAGE_TRANSITION_NAME);
            imgSmall.setTransitionName(imageTransitionName);
        }

    }

输出很奇怪,图像在 fragment 中淡出并在被调用 Activity 的 ImageView 中弹出,退出时也是如此。有任何想法吗... 非常感谢

最佳答案

经过几天的努力找到了它,以防其他人有类似的问题......

检查您的 list 的应用程序 我设置了 android:hardwareAccelerated="false" 删除它,一切都像一个魅力

关于android - 从 RecyclerView 到 Activity 的共享元素转换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47771639/

相关文章:

Android共享元素过渡ToolBar重叠

android - 了解退出/重新进入共享元素转换

java - Android - startActivityForResult 传递对象的 ArrayList 返回

android - RecyclerView v23.2.0 和向上滑动后的空白区域

android - RecyclerView smoothScrollToPosition 小距离太快

java - 当适配器处于同一 Activity 中时,在回收器 View 中添加搜索 View

android - 共享元素过渡 - 仅对共享 View 的可见部分进行动画处理

java - 网络连接时如何检测网络变化和从 A 到 B 的变化 Activity

android - 创建 Spotify 播放列表并向其中添加歌曲。安卓

android - Android Studio 中的布局验证