Мое приложение должно проверить, не пользовательские клики или нет. Но я не могу использовать Android OnDoubleClickListener или что-то подобное. Просто реализует его:Android Как написать простой таймер для событий пользовательского интерфейса?
Моя проблема отличается от «обычного» двойного щелчка.
Что я хочу: Если пользователь дважды кликает, запустите Y-активность. Если пользователь нажимает только 1 клик, подождите 500 мс, затем запустите операцию X. Если пользователь нажмет 2 нажмите медленно, запустить X активность
Это мой код:
long now = System.currentTimeMillis();
thisTime = now;
if (thisTime - lastTouchTime < WAIT_TIME) {
// Double tap
this.getContext()
.getApplicationContext()
.startActivity(
(new Intent(getContext(),
ChangePlaceActivity.class))
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
// If is double tap, reset to start state.
lastTouchTime = -1;
return true;
} else {
// Too slow or first click
// If not double tap, save last state for next check
lastTouchTime = thisTime;
Log.d("Worker thread", "Declare" + System.currentTimeMillis());
Thread t = new Thread() {
public void run()
{
try {
sleep(WAIT_TIME);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
t.start();
try {
t.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("Worker thread", "" + System.currentTimeMillis());
// start MainAct
Log.d("Single Click", "Yes");
this.getContext()
.getApplicationContext()
.startActivity(
(new Intent(getContext(),
MainActivity.class))
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
Если использовать такой код, я не могу получил двойной щелчок. Если удалить thread.run() thread.join(). Он начнет MainActivity перед ChangePlacecActivity.
Есть ли решение проблемы? Спасибо заранее!
Извините за мой плохой английский.
Почему бы вам не запустить таймер после первого нажатия. Если вы уже отслеживаете краны и получаете еще до того, как срабатывает таймер, запустите код двойного нажатия. Если таймер срабатывает первым, запустите свой X-код. Именно так работает пользовательский интерфейс, управляемый событиями. Никогда не призывайте спать, особенно в потоке пользовательского интерфейса. –
@Jason Coco: Я знаю, что не следует блокировать поток пользовательского интерфейса. Таймер - это то, что мне нужно, но не знаю, как это сделать. Пожалуйста, дайте ответ. Благодаря! – HVNSweeting
Я не знаю, как писать таймер в Android. Предлагаю вам изменить свой вопрос и назовите его «Как написать простой таймер для событий пользовательского интерфейса?». Вы можете оставить остальную часть вопроса как есть и оставить эти комментарии. Я уверен, что вы получите ответ. –