多种动画布局可动态设置动画

问题描述

我在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()
 }

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...