2013-02-26 61 views
1

我正在構建一個應用程序,允許用戶使用水平滑動瀏覽不同的屏幕,但是這些屏幕也包含垂直滾動視圖。看起來,如果垂直滾動不是100%垂直(希望有意義),android會將垂直滾動檢測爲水平滑動。Android Developemnt:降低水平滑動靈敏度或關閉垂直滑動

無論如何禁用垂直掃描,或降低水平檢測的靈敏度?

onFling類中的代碼目前非常基本,像這樣。

public boolean onFling(MotionEvent start, MotionEvent finish, float velocityX, 
       float velocityY) { 
    //Right Swipe 
    if (finish.getRawX() < start.getRawX()) { 
     Toast.makeText(getApplicationContext(), "Showing Listings For : "+date.getDate(),Toast.LENGTH_SHORT).show(); 
     } 

    if (start.getRawX() < finish.getRawX()) { 
     Toast.makeText(getApplicationContext(), "Showing Listings For : "+date.getDate(),Toast.LENGTH_SHORT).show(); 
     } 
    } 

- 更新 -

嗯,我結束了計算bewtween輕掃,這給了我一個東西,用它來確定如何刷卡是垂直的起點和終點的垂直差異。它非常基本,但似乎工作正常。

更新的代碼現在看起來像。

public boolean onFling(MotionEvent start, MotionEvent finish, float velocityX, 
       float velocityY) { 
    //Right Swipe 

    //Caluclate the vertical difference 
    float verticalChange = start.getRawY() - finish.getRawY(); 

    if ((finish.getRawX() < start.getRawX()) && (verticalChange > -40 && verticalChange < 40)) { 
     Toast.makeText(getApplicationContext(), "Showing Listings For : "+date.getDate(),Toast.LENGTH_SHORT).show(); 
     } 

    if (start.getRawX() < finish.getRawX()) && (verticalChange > -40 && verticalChange < 40)) { 
     Toast.makeText(getApplicationContext(), "Showing Listings For : "+date.getDate(),Toast.LENGTH_SHORT).show(); 
     } 
    } 

回答

0

您可以擴展自己的垂直滾動視圖,不會觸發事件進行水平滑動。當然,那麼你必須在不是滾動視圖的部分上滑動。

- 額外評論---您是否在各種手機/設備上測試過該功能?你可能會發現自己有不同的結果。

+0

理想情況下,我希望整個屏幕可以滑動,但只能在水平面上滑動。不,我目前只在仿真器上進行過測試。 – cosmicsafari 2013-02-26 13:41:29

+0

如果可能的話,我會建議在實際的電話上嘗試它(可以借用朋友嗎?),並看看你是否有相同的結果。 模擬器已經走了很長的一段路,但是如果你有一臺較慢的電腦,它的結果可能會相當不可思議/尷尬,我發現。 – Zerkz 2013-02-26 13:54:37