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();
}
}
理想情況下,我希望整個屏幕可以滑動,但只能在水平面上滑動。不,我目前只在仿真器上進行過測試。 – cosmicsafari 2013-02-26 13:41:29
如果可能的話,我會建議在實際的電話上嘗試它(可以借用朋友嗎?),並看看你是否有相同的結果。 模擬器已經走了很長的一段路,但是如果你有一臺較慢的電腦,它的結果可能會相當不可思議/尷尬,我發現。 – Zerkz 2013-02-26 13:54:37