【问题标题】:Android Animate Alpha during Drag Animation Now Working拖动动画期间的 Android Animate Alpha 现在可以工作
【发布时间】:2019-10-27 23:56:08
【问题描述】:

我已经使用 ViewDragHelper 向组件添加了拖动功能,并且我正在尝试向组件添加淡入淡出动画,以便当用户触摸屏幕并拖动它时,它会使用动画更改组件的 alpha。 问题是动画等待用户的交互停止,然后它应用动画,因此在组件过渡期间,您看不到 alpha 动画,

override fun clampViewPositionVertical(child: View, top: Int, dy: Int): Int {
        if(top < verticalRange)
            return verticalRange
        backgroundView.animate().alpha((backgroundView.alpha - 0.05).toFloat()).duration = 10
        return top
    }

触摸事件:

 override fun onTouchEvent(event: MotionEvent): Boolean {
            return if (isDragEnabled && (isControlScreenLayoutTarget(event) || isMoving)) {
                viewDragHelper.processTouchEvent(event)
                true
            } else {
                super.onTouchEvent(event)
            }
        }

【问题讨论】:

  • 您应该添加onTouchEvent的代码以使其更清晰。
  • @DuyKhanhNguyen 我已经编辑了问题并添加了 onTouchEvent
  • 您的代码块之间没有任何联系,我们不知道您如何/在哪里调用clampViewPositionVertical。您应该添加足够多的代码以适应流程。
  • @DuyKhanhNguyen 如果您需要,我会添加更多代码,但该错误与拖动流程无关。我在clampViewPositionVertical 函数中添加了一些日志,并且我知道该函数已被调用,但alpha 动画在用户触摸/交互停止之前不起作用。

标签: android animation viewdraghelper


【解决方案1】:

您不应该在clampViewPositionVertical() 中开始您的动画。调用该方法以返回视图将移动的边界,实际上是滚动。

相反,您应该等到视图被释放,换句话说,在onViewReleased() 中完成范围检查后立即开始您的动画。

【讨论】:

  • 是的,我可以做到,但这不是我想要实现的,我喜欢在用户滚动视图时更改 alpha。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-01
相关资源
最近更新 更多