2016-04-07 13 views
0

タスクについて。 私はHorizo​​ntalScrollViewから拡張された独自のCustomViewで作業しました。言い換えれば、それは、別のビュー要素を追加するための、いくつかの実現アダプタです。このCustomViewは、要素の追加と削除をアニメートします。そして!スクロールするときにビューをアニメーション化する必要があります。OnScrollListenerを設定する別の方法

その他の情報 ビューをアニメーション化するための作品アルゴリズムが中心にあります。 Ex。中央からスクロールするときにビューのスケールを大きくし、中央からスクロールするときにビューのスケールを大きくします。

問題。 スクロールするときにアニメーションに問題が1つしかありませんでした。ユーザーがスクロールし、OnScrollViewインタフェースがトリガされると、ObjectAnimatorを使用して(表示されている)ビューがアニメートされます。 OnScrollListenerの異なる実装を添付しましたが、それは私のためには機能しませんでした(下記のリスト)。実際には、ユーザーのスクロール - ScrollViewの最初のすべての要素をスクロールし、そのメソッドの後にのみOnScrollメソッドを呼び出します。その結果、アニメーションはいくらか遅れて動作します。スクロールが速いほど、この遅延はより顕著になります。

注意。例。ネイティブAndroidとIOSアラームで同じCustomViewの作業あなたが時間を選択し、数字のリストをスクロールすると、角度が変わります。その結果、ドラムのようにスクロールします。

十分な情報が必要です。乾杯!

// Some different onScrollListeners, that didn't 
// work for me (worked with delay). 

// 1 
getViewTreeObserver().addOnScrollChangedListenernew OnScrollChangedListener() { 

     @Override 
     public void onScrollChanged() { 
      // Notify and animate view using - this.getScrollX(); 
     } 
    }); 


// 2 

    @Override 
    public boolean onTouchEvent(MotionEvent ev) { 
     int action = ev.getAction(); 
     switch (action) { 
      // Notify and animate view using - this.getScrollX(); 
     } 

     return super.onTouchEvent(ev); 
    } 


// 3 

@Override 
    protected void onScrollChanged(int x, int y, int oldX, int oldY) { 
     super.onScrollChanged(x, y, oldX, oldY); 

     // Notify and animate view using - this.getScrollX(); 
    } 

enter image description here

答えて

0

私は最も簡単な解決策でこの作業を行って。ご覧のように、ScrollViewの状態がスクロールしているとき - 私はスクロール位置にアタッチすることなく動作するアニメーションを開始するだけです。それでこのタスクの解決は、それを使用して単純なスケール変換私たちがスクロールするまで、アニメーションではありません!

この結果、私は数週間で新しいタイプのリストアダプターであるAnimatedViewPagerとしてこの作品を発表します。私はGithubで、GensaGames。

関連する問題