【问题标题】:Android MotionLayout PauseAndroid MotionLayout 暂停
【发布时间】:2020-10-09 18:01:25
【问题描述】:

是否可以暂停 Motion 布局转换然后恢复此转换?(例如,我显示对话框片段,我需要暂停此运动场景,并且在关闭对话框后我想恢复转换) 我通过 MotionLayout.setTransitionToEnd() 之类的代码启动转换

【问题讨论】:

    标签: android android-motionlayout


    【解决方案1】:

    您应该能够获得当前进度并设置为该值...然后当您准备好恢复时,您可以再次调用 transitionToEnd() 它将从该值恢复...例如

    private void pauseAnimation() {
        float currentProgress = motionLayout.getProgress()
        motionLayout.setProgress(currentProgress())
    }
    
    private void resumeAnimation() {
        motionLayout.transitionToEnd()
    }
    

    这应该做你想要完成的事情

    【讨论】:

      【解决方案2】:
      【解决方案3】:

      您可以像这样在暂停片段之前存储您离开的进度位置:

      private var outState: Bundle? = null
      const val KEY_CURRENT_POSITION_LIST_CATEGORY = "KEY_CURRENT_POSITION_LIST_CATEGORY"
      
      override fun onPause() {
              super.onPause()
              outState = Bundle()
              outState!!.putFloat(KEY_CURRENT_POSITION_LIST_CATEGORY, motion_layout.progress)
          }
      

      还有onResume,你可以在motion_layout中设置动画的进度

       override fun onResume() {
              super.onResume()
              if (outState != null) {
              motion_layout.progress=outState!!.getFloat(KEY_CURRENT_POSITION_LIST_CATEGORY)
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多