当前位置: 首页 > 知识库问答 >
问题:

共享元素转换伴随着闪烁而来

梁丘宏硕
2023-03-14

我点击了recyclerview的项目,打开了一个共享元素转换的活动,如下所示:

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());

在活动中,它有视图寻呼机:

 super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_enlarge);


    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getWindow().setEnterTransition(null);
    }

    supportPostponeEnterTransition();

在扩展FragmentStatePagerAdapter的viewpager适配器中,返回一个片段ProductDetailViewPagerFraack,该片段具有一个Imageview和im加载图像,如:(MainActivity.position是回收器视图的位置)

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();
                }
            });

共有1个答案

柴修筠
2023-03-14

我想你应该在第二个活动中为ViewPager设置TransitionName。上一个视图将与viewPager连接。如果你打电话

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    imageView.setTransitionName(MainActivity.position + "ImageZoom");
  }

图像加载成功(或失败)后,过渡结束,它将无法工作。

 类似资料:
  • 我在Lollipop上的共享元素转换中看到了奇怪的事情。共享元素在开始动画之前闪烁(请看视频https://www.youtube.com/watch?v=DCoyyC_S-9A) 我不知道为什么会这样。但是,当我添加

  • 我一直在尝试实现这个共享元素转换,并在单击转换时不断出现“java.lang.IllegalArgumentException:共享元素不能为null”错误。请帮忙。 这是下面给出的MainActive onCreate方法。请检查我的代码。 这是recyclerView的onClickListener。 图像的过渡名称相同。这里的bug修复在使用共享元素的活动转换中出现问题并不是问题所在。 我卡

  • 我正在实现一个gallery应用程序,它有一个片段,其中包含一个带有图像的RecyclerView,单击一个图像,我会转到ViewPager循环浏览图像 目前,我正试图实现像本视频中那样的入门动画。问题是动画不起作用,我显然遗漏了一些东西(只是显示与转换相关的代码): 查看页面: GridAdapter: 在MainActivity中,我在onClick中实例化ViewPagerFragment:

  • 当完成活动时,我正在更新包含viewpager的活动中的视图及其名称,但它会闪烁:

  • 问题内容: 我在angular.js中有指令/类或问题。 Chrome可以正常运行,但是Firefox会通过或导致元素闪烁。恕我直言,它是由引起的转换/ 到,可能是Firefox的JavaScript编译器是有点慢,所以元素出现了一会儿,然后躲起来? 例: 问题答案: 尽管文档中没有提到它,但是将规则添加到CSS 可能还不够。如果您要在主体中加载angular.js或模板编译得不够快,请使用指令,

  • 我希望采用Glide库来代替通用图像加载器,但在共享元素转换方面遇到了问题。 在我的简单沙盒中,我使用UIL创建了以下过渡:https://dl.dropboxusercontent.com/u/97787025/device-2015-06-18-113333.mp4 非常简单,而且效果很好。但当我使用Glide时,它看起来不太好看:https://dl.dropboxusercontent.c