Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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_Transition_Android 5.0 Lollipop_Android Cardview_Android Transitions - Fatal编程技术网

Android共享元素重入过渡无动画

Android共享元素重入过渡无动画,android,transition,android-5.0-lollipop,android-cardview,android-transitions,Android,Transition,Android 5.0 Lollipop,Android Cardview,Android Transitions,我想创建一个带有共享元素的活动转换,如explained 我希望左侧的列表项转换为右侧突出显示的框。 好吧,这很有效,但不幸的是退出转换根本不起作用。从第二个活动返回后,我得到: CardView只停留在原来的位置,不会在任何地方进行缩放或变换。过了一会儿,它就消失了 我以为退出转换是向后播放的进入转换,但这里的情况似乎不是这样。如何使CardView转换回左侧的ListItem 这是我当前的代码: 在第一个活动的侦听器中 我的主题: 更改\u image\u transform.xml:

我想创建一个带有共享元素的活动转换,如explained

我希望左侧的列表项转换为右侧突出显示的框。

好吧,这很有效,但不幸的是退出转换根本不起作用。从第二个活动返回后,我得到:

CardView只停留在原来的位置,不会在任何地方进行缩放或变换。过了一会儿,它就消失了

我以为退出转换是向后播放的进入转换,但这里的情况似乎不是这样。如何使CardView转换回左侧的ListItem

这是我当前的代码:

在第一个活动的侦听器中

我的主题:

更改\u image\u transform.xml:


我已经将transitionName设置为右侧布局的android.support.v7.widget.CardView和左侧的RelativeLayouts。

活动和片段共享转换都很难调试。默认情况下,动画速度很快,有时眼睛只能看到有什么不对劲,但要弄清楚什么/为什么不重要

在调试从A到B的共享转换时,我通常发现重写onMapSharedElements方法非常有用,因此您可以很容易地确定A中的哪些共享元素与B中的元素相关联。在B的onCreate方法中类似这样的内容:


通过这种方式,可以更容易地确定哪些元素没有被映射,也许它们只是还没有被创建,并解决共享转换问题,即:小故障、工件,活动和片段共享转换都很难调试。默认情况下,动画速度很快,有时眼睛只能看到有什么不对劲,但要弄清楚什么/为什么不重要

在调试从A到B的共享转换时,我通常发现重写onMapSharedElements方法非常有用,因此您可以很容易地确定A中的哪些共享元素与B中的元素相关联。在B的onCreate方法中类似这样的内容:


通过这种方式,可以更容易地确定哪些元素没有被映射,也许它们只是还没有被创建,并解决共享的转换问题,即:小故障、工件

当它刚刚消失时,它就消失了,并指示共享元素没有被另一方接受。如果转换名称在recycler视图的适配器或视图保持架中没有唯一分配,则应创建SharedElementCallback并重写onMapSharedElements,以告知共享元素转换哪个视图是您的共享元素。谢谢@George!覆盖MopshareElements效果很好。谢谢@geogemount!!你的评论应该被接受answer@Shine我完全同意。也许你可以添加更多的细节并将其作为答案发布?这里是@JohannBauerWhen,当它消失时,它是并指示共享元素未被另一方接受。如果转换名称在recycler视图的适配器或视图保持架中没有唯一分配,则应创建SharedElementCallback并重写onMapSharedElements,以告知共享元素转换哪个视图是您的共享元素。谢谢@George!覆盖MopshareElements效果很好。谢谢@geogemount!!你的评论应该被接受answer@Shine我完全同意。也许你可以添加更多的细节并将其作为答案发布?给你@johannbauerth这很有用。除非日志都读取相同的内容,这样就不会出现共享元素被拒绝的情况。这很有用。除非日志都读取相同的内容,这样共享元素就不会被拒绝。
Intent intent = new Intent(context, DisplayEpisodeActivity.class);
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,clickedRow.findViewById(R.id.background), "background");
startActivity(intent, options.toBundle());
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="NewApi">
    <style name="BaseTheme" parent="android:Theme.Material.Light.DarkActionBar">
        <item name="android:colorPrimary">#D32F2F</item>
        <item name="android:textColorPrimary">#616161</item>
        <item name="android:colorPrimaryDark">#B71C1C</item>
        <item name="android:colorAccent">#757575</item>
        <item name="android:colorControlHighlight">#EF9A9A</item>
        <item name="android:windowContentTransitions">true</item>
        <item name="android:windowSharedElementEnterTransition">
            @transition/change_image_transform</item>
        <item name="android:windowSharedElementExitTransition">
            @transition/change_image_transform</item>
    </style>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
    <changeTransform/>
    <changeBounds/>
</transitionSet>
setEnterSharedElementCallback(new SharedElementCallback() {

            @Override
            public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) {
                Log.i(Constants.TAG, "EnterSharedElement.onMapSharedElements:" + sharedElements.size());
                //manual override of non-working shared elements goes here
                super.onMapSharedElements(names, sharedElements);
            }

            @Override
            public void onRejectSharedElements(List<View> rejectedSharedElements) {
                //Some element was rejected? Aha!!
                Log.i(Constants.TAG, "EnterSharedElement.onMapSharedElements:" + rejectedSharedElements.size());
                super.onRejectSharedElements(rejectedSharedElements);
            }

            @Override
            public void onSharedElementEnd(List<String> sharedElementNames, List<View> sharedElements, List<View> sharedElementSnapshots) {
                //AFTER the shared transition
                super.onSharedElementEnd(sharedElementNames, sharedElements, sharedElementSnapshots);
            }
        });
    }catch (Exception uie){
        Log.e(Constants.TAG,"UIE:"+uie.getMessage());
    }