Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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_Animation_Layout_Android Motionlayout - Fatal编程技术网

Android 动态设置多运动布局动画

Android 动态设置多运动布局动画,android,animation,layout,android-motionlayout,Android,Animation,Layout,Android Motionlayout,我有两个XML格式的运动布局。一个是父母,一个是孩子 当从XML设置开始动画的动画时,它可以工作。但是,当使用代码动态启动相同的运动布局时,视图不会显示,但日志中的动画显示它已完成。 可能是什么问题 @Override public void onTransitionCompleted(MotionLayout motionLayout, int currentId) { switch (currentId) {

我有两个XML格式的运动布局。一个是父母,一个是孩子

当从XML设置开始动画的动画时,它可以工作。但是,当使用代码动态启动相同的运动布局时,视图不会显示,但日志中的动画显示它已完成。 可能是什么问题

   @Override
            public void onTransitionCompleted(MotionLayout motionLayout, int currentId) {
                switch (currentId) {
                    case R.id.endHomeLaunch:
                        motionLayout.setTransition(R.id.expanded, R.id.collapsed);
                        motionLayout.setProgress(0);
                        motionLayoutFloatButton.setTransition(R.id.startFloat,R.id.endFloat);
                        motionLayoutFloatButton.setTransitionDuration(1000);
                        motionLayoutFloatButton.transitionToEnd();

                        break;

由于我的父布局有滑动动画,我无法添加单击动画,因为这会在布局动画中添加错误。唯一的选择是创建两个单独的运动布局场景。

这通常是由于运动布局无法在主线程上正确排队造成的。我刚刚解决了这样一个问题,解决方案似乎是协同程序,即在一个片段中,您可以这样做:

 lifecycleScope.launchWhenStarted {
   delay(50) //pause to allow other views to initialize
   motionLayout.setTransition(R.id.myTransition)
   motionLayout.transitionToEnd()
 }