Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android共享元素转换仅在离开活动时有效,在进入活动时无效_Android_Animation_Imageview_Android Transitions_Shared Element Transition - Fatal编程技术网

Android共享元素转换仅在离开活动时有效,在进入活动时无效

Android共享元素转换仅在离开活动时有效,在进入活动时无效,android,animation,imageview,android-transitions,shared-element-transition,Android,Animation,Imageview,Android Transitions,Shared Element Transition,我正在使用共享元素转换来设置从活动a到活动B的图像视图的动画。 我正在为此使用以下代码: Intent i = new Intent(A.this, B.class); Pair<View, String> p1 = Pair.create(v2, "logo"); ActivityOptionsCompat options = ActivityOptionsCompat. makeSceneTransitionAnimation((Acti

我正在使用共享元素转换来设置从活动a到活动B的图像视图的动画。 我正在为此使用以下代码:

Intent i = new Intent(A.this, B.class);
Pair<View, String> p1 = Pair.create(v2, "logo");
ActivityOptionsCompat options = ActivityOptionsCompat.
                     makeSceneTransitionAnimation((Activity) mContext,p1);
context.startActivity(i, options.toBundle());
Intent i=新的Intent(A.this,B.class);
配对p1=配对创建(v2,“徽标”);
ActivityOptionsCompat选项=ActivityOptionsCompat。
makeSceneTransitionAnimation((活动)mContext,p1);
startActivity(i,options.toBundle());
我的主题是:

<style name="AnimationTheme" parent="Theme.AppCompat.Light.NoActionBar">

        <item name="android:windowContentTransitions">true</item>
        <item name="android:windowAllowEnterTransitionOverlap">true</item>
        <item name="android:windowAllowReturnTransitionOverlap">true</item>

    </style>

真的
真的
真的
“logo”是A和B中图像视图的转换名称。 但是我注意到,当图像按预期从B->A转换时,从A->B转换不起作用,两个活动之间只是一个淡入淡出的动画

我做错了什么?我该如何解决这个问题,使图像从A->B也变成动画

注意:A是一个具有图像回收器视图的活动,每个视图都打开为一个详细活动(B),图像在两个活动之间转换


谢谢

如果使用任何imageloading库加载图像,则需要在图像下载时设置侦听器

private final RequestListener<Integer, GlideDrawable> listener = new RequestListener<Integer, GlideDrawable>() {
       @Override
       public boolean onException(Exception e, Integer model, Target<GlideDrawable> target, boolean isFirstResource) {
           return false;
       }

       @Override
       public boolean onResourceReady(GlideDrawable resource, Integer model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
           startPostponedEnterTransition();
           return false;
       }
};


Glide.with(getActivity()).load(list.get(position).getId()).listener(listener).into(imageView);

我测试了所有答案,比如删除动画或
startPostponedEnterTransition()
等等。什么都没用。这条线终于解决了我的问题。将此添加到style.xml中。这样可以防止屏幕闪烁

<item name="android:windowIsTranslucent">true</item>
true
此处相同:
<item name="android:windowIsTranslucent">true</item>