メソッドを使用してスワイプイベントを処理するためにdroidQueryライブラリを使用しています
$.with(myView).swipe(new Function(...));
(私の以前の投稿はこちらを参照してください)、ユーザーがスワイプしている時間を確認し、ダウンタイムの長さに基づいて異なる反応をするために、回答を拡張する方法があるかどうか疑問に思っていました. 回答ありがとうございます。
ここで説明したモデルに従い、スワイプ ロジックにコードを追加します。リンクされたコードから、次の switch ステートメントがあります。
switch(swipeDirection) {
case DOWN :
//TODO: Down swipe complete, so do something
break;
case UP :
//TODO: Up swipe complete, so do something
break;
case LEFT :
//TODO: Left swipe complete, so do something
break;
case RIGHT :
//TODO: Right swipe complete, so do something (such as):
day++;
Fragment1 rightFragment = new Fragment1();
Bundle args = new Bundle();
args.putInt("day", day);
rightFragment.setArguments(args);
android.support.v4.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, rightFragment);
transaction.addToBackStack(null);
transaction.commit();
break;
default :
break;
}
ダウン タイムのチェックを追加するには、次のクラス変数を追加します。
private Date start;
public static final int LONG_SWIPE_TIME = 400;//this will be the number of milliseconds needed to recognize the event as a swipe
DOWN
次に、これをケース ロジックに追加します。
start = new Date();
スワイプの各ケースで、次のチェックを追加できます。
if (start != null && new Date().getTime() - start.getTime() >= LONG_SWIPE_TIME) {
start = null;
//handle swipe code here.
}
そして最後に、あなたのUP
場合、追加します:
start = null;
LONG_SWIPE_TIME
これにより、スワイプコードによって処理される時間よりも長くダウンしているスワイプのみが処理されるようになります。たとえば、このRIGHT
場合、次のようになります。
case RIGHT :
if (start != null && new Date().getTime() - start.getTime() >= LONG_SWIPE_TIME) {
start = null;
//TODO: Right swipe complete, so do something (such as):
day++;
Fragment1 rightFragment = new Fragment1();
Bundle args = new Bundle();
args.putInt("day", day);
rightFragment.setArguments(args);
android.support.v4.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, rightFragment);
transaction.addToBackStack(null);
transaction.commit();
}
break;