2017-06-23 3 views
-1

ユーザーが特定の位置にスクロールしたときにのみ、関数を呼び出すことができます。現在、私は次のことをやっている:特定の位置にスクロールするときにのみ関数を呼び出す方法は?

view.addOnScrollChangeListener(){ 
    int[] locA = v1.getLocationOnScreen(); // it gives x & y location 
    int[] locB = v2.getLocationOnScreen(); // it gives x & y location 
    if(locA[1] == threshold) callFunctionA(); 
    if(locB[1] == threshold) callFunctionB(); 
} 

問題は、ユーザーのスクロールが速すぎる場合、それはcallFunctionA() or callFunctionBを呼び出すことはありません、です。これを解決するには?

+0

スクロールバーをスクロールコンテナとして使用していますか? – Krish

+0

はい、v1とv2はスクロールビュー内のビューです – jquery404

+0

両方のビューをrecyclerviewに追加してスクロール位置を取得する –

答えて

0

これは動作するはずです。特定のポイントを超えてスクロールした場合、これがトリガされ、再度しきい値の前にスクロールすると再び発生します。

boolean funcACalled = false; 
boolean funcBCalled = false; 
view.addOnScrollChangeListener(){ 
    int[] locA = v1.getLocationOnScreen(); // it gives x & y location 
    int[] locB = v2.getLocationOnScreen(); // it gives x & y location 
    if(locA[1] > threshold && !funcACalled){ 
     callFunctionA(); 
     funcACalled = true; 
    } 
    if(locB[1] > threshold && !funcBCalled){ 
     callFunctionB(); 
     funcBCalled = true; 
    } 
    if(locA[1] < threshold) funcACalled = false; 
    if(locB[1] < threshold) funcBCalled = false; 
} 
+0

うーん、それは動作しません – jquery404

関連する問題