#android #ontouchlistener #wearables
#Android #ontouchlistener #носимые устройства
Вопрос:
Я использую носимое устройство и создаю для него приложение. У меня есть таймер и некоторые другие вещи, которые начинаются, когда я нажимаю кнопку «Пуск». Дело в том, что кнопка «Пуск» занимает некоторое пространство, из-за чего все выглядит переполненным. Я использовал носимый ящик действий, но он выглядит не очень хорошо, поэтому я прибегнул к использованию onTouchlistner с представлением, в котором размещены мои объекты, такие как таймеры.
Макет представляет собой FrameLayout. Теперь, когда я использую onTouchListner, событие движения, которое я обнаруживаю, — это ACTION_DOWN как мне подсчитать, что это происходит 2 раза, чтобы запустить то, что я хочу запустить, и когда это 4 раза, я вызываю свой AlertDialog?
frameLayout = (FrameLayout)findViewById(R.id.myscreen);
frameLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
clicked = clicked 1;
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
startTimer();
//Check flow rate
if(num == 450)
{
try {
flow.setText(String.valueOf(num));
progressBar.setIndeterminateDrawable(Circle);
progressBar.setVisibility(View.VISIBLE);
} catch (NullPointerException e) {
e.printStackTrace();
}
}
else if(num == 150)
{
try {
flow.setText(String.valueOf(num));
progressBar.setIndeterminateDrawable(Circle);
progressBar.setVisibility(View.VISIBLE);
} catch (NullPointerException e) {
e.printStackTrace();
}
}
}
else if(event.getAction() == MotionEvent.ACTION_DOWN amp;amp; clicked == 4)
{
Handler mHandler = new Handler(Looper.getMainLooper());
mHandler.post(new Runnable() {
@Override
public void run() {
// Your UI updates here
AlertMessage();
}
});
}
return true;
}
});
clicked — это целое число, инициализированное нулем. Я использовал это, когда использовал кнопки для подсчета количества кликов. Теперь я хочу подсчитать количество нажатий на мой экран, поэтому, если 2 нажатия —-> запустить, если 4 нажатия ——> вызвать AlertDialog
Ответ №1:
Переместите логику увеличения счетчика вместе с логикой проверки счетчика внутри if(event.getAction() == MotionEvent.ACTION_DOWN)
предложения if.
frameLayout = (FrameLayout)findViewById(R.id.myscreen);
frameLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
if(clicked == 4)
{
Handler mHandler = new Handler(Looper.getMainLooper());
mHandler.post(new Runnable() {
@Override
public void run() {
// Your UI updates here
AlertMessage();
}
});
return true;
}
clicked = clicked 1;
startTimer();
....
}
return true;
}
});
Комментарии:
1. Я внес небольшое изменение, но почти такое же, как и вы. Ценный друг.