【问题标题】:ViewDragHelper animation listenerViewDragHelper 动画监听器
【发布时间】:2016-05-06 14:27:36
【问题描述】:

我正在使用 ViewDragHelper 将视图滑动到新位置,并且我正在尝试使用 viewDragHelper.smoothSlideViewTo(dragView, x, y)。问题是:幻灯片动画完成后如何获得通知?我正在寻找一种方法来收听幻灯片动画事件(尤其是 onSlideAnimationComplete() 之类的)。大家有什么想法吗?

private boolean smoothSlideTo(float slideOffset) {
    final int topBound = getPaddingTop();
    int x = (int) (slideOffset * (getWidth() - transformer.getMinWidthPlusMarginRight()));
    int y = (int) (topBound + slideOffset * getVerticalDragRange());
    if (viewDragHelper.smoothSlideViewTo(dragView, x, y)) {
        ViewCompat.postInvalidateOnAnimation(this);
        return true;
    }
    return false;
}

【问题讨论】:

  • this
  • @pskink 你能更具体地说一下你的代码与我的问题有什么关系吗?我仍然不知道在哪里捕获动画完成事件。
  • 先阅读文档,然后看看我是如何在我的代码中实现动画支持的,运行我的代码也会很有帮助
  • 你现在知道它是如何工作的了吗?
  • @pskink 不,我没有,你没有回答我的问题

标签: android android-animation viewdraghelper


【解决方案1】:

好像viewdraghelper在做动画的时候没有监听和回调,但是可以通过实现onViewDragStateChanged来解决,通过它的状态来判断,像这样:

    @Override
    public void onViewDragStateChanged(int state) {
        if (state == 0) {
            if (settleDestX == contentView.getLeft() && swipeOverListener != null) {
                swipeOverListener.onSwipeOver(settlePosition);
            }
        }
    }

state==1 表示拖动,state==2 表示滚动,state==0 表示空闲。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 2016-06-09
    相关资源
    最近更新 更多