2013-08-21 29 views
0

我使用droidQuery庫使用方法的Android droidQuery刷卡長度檢測

$.with(myView).swipe(new Function(...)); 

(見我以前的帖子here)辦理刷卡事件,我想知道,如果他們的是一種方式得到答案擴大以檢查用戶刷卡的時間長短,並根據停機時間作出不同的反應。感謝任何答案!

回答

1

您可以按照討論的模型here,在滑動邏輯中添加一些附加代碼。從關鏈接代碼,我們有以下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; 
+0

謝謝,但什麼是startTime? – superuser

+0

@superuser,應該只是'開始'。我更新了我的代碼以反映這一點。 – Phil

+1

非常感謝您爲圖書館提供的所有幫助。這真的很棒。希望它會變得更加流行,更多的信息會在網絡上顯示出來,因此研究起來會更容易。 – superuser