Общий переход элемента идет с миганием - PullRequest
0 голосов
/ 22 мая 2018

У меня есть повторное представление по щелчку его элемента. Я открываю действие с переходом общего элемента, как это:

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, возвращая фрагмент ProductDetailViewPagerFragment, который имеет представление изображения и загружает изображения следующим образом: (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 Ответ

0 голосов
/ 22 мая 2018

Я думаю, что вы должны установить TransitionName для ViewPager во втором действии.Предыдущий вид будет связан с viewPager.Если вы позвоните

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

после успешной загрузки изображения (или сбоя), переход будет завершен, и он не будет работать.

...