Я столкнулся с проблемой мультитач. Проблема в том, что я могу одновременно коснуться двух кнопок на экране.
Я знаю, что этот вопрос задан несколько раз в этом форуме, и единственным решением является объявление android:splitMotionEvents="false"
в вашем родительском макете. Но после объявления этого вопроса проблема остается. Это проблема с аппаратным обеспечением или с кодом? Любой указатель здесь ценится.Android Disable Multitouch on Views
2
A
ответ
1
Эта проблема выглядит бесполезной, так как android 4.0 каждый onClick выполняется в новом потоке.
Как я решил:
// 1. создать свой собственный клик-регистратор
public abstract class AbstractCarOnClickListener {
protected static volatile boolean processing = false;
protected void executeBlock() {
ActivityUtil.scheduleOnMainThread(new Runnable() {
public void run() {
processing=false;
}
}, 400);
}
}
// 2. создать подкласс вашего слушателя
public abstract class AppButtonsOnClickListener extends AbstractCarOnClickListener implements View.OnClickListener {
public void onClick(View v) {
if(processing) return;
try{
processing=true;
onCarButtonClick(v);
} finally {
executeBlock();
}
}
public abstract void onCarButtonClick(View v);
}
// 3. установить слушателя на ваше мнение
public void onClick(View v) {
clickListener.onClick(v);
}
public OnClickListener clickListener = new AppButtonsOnClickListener(){
public void onCarButtonClick(View v) {
hintContainer.setVisibility(View.GONE);
if (v == cancelButton) {
listener.onCancelButtonClicked();
}
}
}
0
Это то, что сработало для меня. В дополнение к установке андроида: splitMotionEvents = «ложных» на каждом ViewGroup, который содержит кнопки я вставил это в MyAdapter.getView() ...
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View cell, MotionEvent event) {
// Process touches only if: 1) We havent touched a cell, or 2) This event is on the touched cell
if (mTouchedCell == null || cell.equals(mTouchedCell)) {
int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN) {
cell.startAnimation(mShrink);
mTouchedCell = cell;
} else if (action == MotionEvent.ACTION_CANCEL) {
if (cell.equals(mTouchedCell)) {
cell.startAnimation(mGrow);
}
mTouchedCell = null;
return true;
} else if (action == MotionEvent.ACTION_UP) {
cell.startAnimation(mFadeOut);
mTouchedCell = null;
}
return false;
}
return true;
}
});
... и, конечно, этот адаптер .. .
private static View mTouchedCell = null;
Смежные вопросы
- 1. android change views on swipe
- 2. Disable Ripple on ListView
- 3. Android Multitouch
- 4. Android Multitouch Game
- 5. nsuserdefaults in viewdidload disable hidding views
- 6. Android multitouch issue
- 7. disable enter on form
- 8. Android: проблема с Multitouch
- 9. android multitouch emulator
- 10. Android MultiTouch не работает
- 11. Android Multitouch Странное поведение
- 12. Управление Android Multitouch
- 13. Android 1.5 Multitouch
- 14. Android-кнопка onclick multitouch
- 15. mystery on BigQuery views
- 16. Autoresizing views on iPhone
- 17. Android Views vs. iOS Views
- 18. WPF disable click on ComboBoxItem
- 19. Highcharts disable click on column
- 20. Disable Stemming on Pourer Parser
- 21. Disable button on submit form
- 22. nsIAlertService on alert click disable
- 23. disable click on div element
- 24. Emacs on Windows disable cmd
- 25. On select disable text fields
- 26. wpf disable on lost focus
- 27. iframe disable on hover effect
- 28. C# Disable ScrollWheel on Trackbar
- 29. Disable Fetch on Hibernate joinColumn
- 30. Rvm on beagleboneblack disable posix
Вы пытались использовать android: windowEnableSplitTouch? Причина set android: windowEnableSplitTouch = "false" или андроид: splitMotionEvents = "false" для группы просмотра, в которой присутствуют кнопки. –