2016-05-06 4 views
2

ViewDragHelperを使用してビューを新しい場所にスライドさせていますが、viewDragHelper.smoothSlideViewTo(dragView, x, y)を使用しようとしています。問題は次のとおりです。スライドアニメーションが完了した後に通知を受け取るにはどうすればよいですか?私はスライドアニメーションイベント(特にonSlideAnimationComplete()のようなもの)を聞く方法を探しています。任意のアイデアの人々ですか?ViewDragHelperアニメーションリスナー

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; 
} 
+0

[this](https://gist.github.com/pskink/b747e89c1e1a1e314ca6)を参照してください。 – pskink

+0

@pskinkあなたのコードは私の質問にどのように関連していますか?私はまだアニメーションの完全なイベントをキャプチャする場所を知らない。 – yongsunCN

+0

最初にドキュメントを読んでから、自分のコードでアニメーションのサポートを実装した方法を見て、自分のコードを実行しても役に立ちます。 – pskink

答えて

0

アニメーションを行うときviewdraghelperはリスナーまたはコールバックを持っていないようだが、あなたはこのように、その状態を経onViewDragStateChangedと裁判官を実装することにより、それを解決することができます

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

状態== 1を意味しますドラッグ、状態== 2はスクロールを意味し、状態== 0はアイドルを意味する。

関連する問題