在Android中,View.onLongClickListener()
大約需要1秒的時間將其視爲長按。如何配置長時間點擊的響應時間?如何配置LongClick的響應時間?
回答
默認超時由ViewConfiguration.getLongPressTimeout()
定義。
您可以實現自己的長按:
boolean mHasPerformedLongPress;
Runnable mPendingCheckForLongPress;
@Override
public boolean onTouch(final View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
if (!mHasPerformedLongPress) {
// This is a tap, so remove the longpress check
if (mPendingCheckForLongPress != null) {
v.removeCallbacks(mPendingCheckForLongPress);
}
// v.performClick();
}
break;
case MotionEvent.ACTION_DOWN:
if(mPendingCheckForLongPress == null) {
mPendingCheckForLongPress = new Runnable() {
public void run() {
//do your job
}
};
}
mHasPerformedLongPress = false;
v.postDelayed(mPendingCheckForLongPress, ViewConfiguration.getLongPressTimeout());
break;
case MotionEvent.ACTION_MOVE:
final int x = (int) event.getX();
final int y = (int) event.getY();
// Be lenient about moving outside of buttons
int slop = ViewConfiguration.get(v.getContext()).getScaledTouchSlop();
if ((x < 0 - slop) || (x >= v.getWidth() + slop) ||
(y < 0 - slop) || (y >= v.getHeight() + slop)) {
if (mPendingCheckForLongPress != null) {
v. removeCallbacks(mPendingCheckForLongPress);
}
}
break;
default:
return false;
}
return false;
}
謝謝。我放棄longClick事件並立即使用MotionEvent。實際上,我開始像MotionEvent一樣,因爲它比longClick早得多(僅在API 11之後)。它使我的應用程序在更多Android手機上更輕鬆。我希望Java/Oracle通過簡單段引入longClick秒/ milsec – user1234817 2012-03-01 14:26:09
「mHasPerformedLongPress」永遠不會設置爲真? – wangqi060934 2013-09-03 16:51:54
這可能是來不及回答,但需要有人的情況下。
如果您的手機是固定的,您可以更改超時時間。 只需將數據庫中的值設置爲所需的超時值即可。這將影響系統的長按事件。
目錄:/data/data/com.android.providers.settings/databases
文件:settings.db
表:確保
名: long_press_timeout
通過編碼?您可能需要系統應用程序權限。其實不太確定。 但如果你回追蹤ViewConfiguration.getLongPressTimeout()方法中,你會看到常值從Settings.Secure.LONG_PRESS_TIMEOUT來這是
超時設置操作是寫在settings.db映射查看課程,因此它會影響每個視圖。
- 1. 如何管理LongClick的持續時間?
- 2. 如何確定fsockopen()的響應時間
- 3. 如何保證Actor的響應時間?
- 4. 如何減少響應爲JSON的請求響應時間?
- 5. 如何在使用火箭褲時配置JSON響應?
- 6. 安裝/配置FishEye時,如何解決503響應代碼?
- 7. 響應時間監視位置
- 8. 如何改善碼頭響應時間?
- 9. 如何減少響應時間
- 10. 如何提高響應時間
- 11. 如何在EditText爲LongClick時禁用edittext?
- 12. 如何在Apache中設置響應時間
- 13. 如何在角度js中設置時間響應滑塊?
- 14. Apache響應時間
- 15. WKInterfaceButton響應時間
- 16. UploadValuesAsync響應時間
- 17. Rails響應時間
- 18. Spring:響應時間
- 19. NSXMLParser響應時間
- 20. AJAX響應時間
- 21. 使用響應時間隨時間變化的Jmeter響應時間
- 22. UIButton的響應時間
- 23. Node.js的響應時間
- 24. 如何控制,谷歌玻璃的位置位置響應時間頻率?
- 25. 如果響應時間過長,則將量角器配置爲忽略資源
- 26. Jmeter - 我們如何從響應時間計算思考時間?
- 27. 如何更改時間配置?
- 28. 日誌響應時間長,如JMeter的
- 29. 響應不匹配,配置參數:
- 30. 在longClick上設置選擇?
看來這個時間是由ROM定義的,而不是你的活動。 – Huang 2012-02-27 04:48:49
解決此問題的任何想法。我只是想加快onLongClick Listener的響應時間,順便說一句:我用它來進行拖放相關活動。 – user1234817 2012-02-27 04:55:00
你想在這個長時間點擊操作中做什麼? – 2012-02-27 04:56:29