Как увеличить + 1 при длинном нажатии кнопки? - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть Button и TextView.Когда я удерживаю Button в течение 1 секунды или около того, TextView должен увеличивать 1 на 1 с интервалом в 0,5 секунды.

Я немного растерялся и не знаю, что мне следует использовать здесь,Любая помощь приветствуется.

РЕДАКТИРОВАТЬ: я забыл сказать, что у меня тоже есть событие onClick.Когда я делаю маленький клик, он добавляет 0,1 (это уже работает).

Это то, что я до сих пор получал ... но безрезультатно.Деятельность просто перестает работать.

btnPlusPastryDosage.setOnTouchListener(new View.OnTouchListener() 
    {           
        public boolean onTouch(View arg0, MotionEvent motion) 
        {
            Handler myHandler = new Handler();                          

            Runnable runnable = new Runnable() 
            {                                               
                public void run() 
                {                       
                    String valueStr = txtPastryDosage.getText().toString();
                    valueStr = valueStr.replace(',', '.');

                    BigDecimal value = new BigDecimal(valueStr);                
                    value = value.subtract(new BigDecimal("1"));

                    if(value.doubleValue() >= 0) txtPastryDosage.setText(String.valueOf(value));                        
                }
            };

            while(motion.getAction() == MotionEvent.ACTION_DOWN)
            {
                myHandler.postDelayed(runnable, 500);
            }                                                                       

            return false;
        }
    });

Ответы [ 3 ]

2 голосов
/ 02 февраля 2012

OnClick, создайте обработчик для публикации Runnable, который устанавливает высоту и ширину кнопки и увеличивает ее. Сохраните высоту / ширину где-нибудь. Каждый метод сообщения обработчика должен проверять, нажата ли кнопка. Если нет, удалите все обратные вызовы.

Обработчик: http://developer.android.com/reference/android/os/Handler.html Runnable: http://developer.android.com/reference/java/lang/Runnable.html

1 голос
/ 02 февраля 2012

Я не очень знаком с библиотеками пользовательского интерфейса Android, но я считаю, что он должен выглядеть примерно так: создайте таймер с интервалом 0,5 секунды и установите его так, чтобы он был отключен при запуске.Добавьте обработчик событий к событию OnTouchListener вашей кнопки, которое срабатывает «когда сенсорное событие отправляется на это представление», то есть когда нажат палец и когда палец отпущен.если это когда палец нажат, включите таймер.если это когда палец отпущен, отключите его.

0 голосов
/ 02 февраля 2012

Что вам нужно сделать, так это установить логический флаг, который включается при нажатии кнопки, а затем выключается при отпускании кнопки.Когда флаг включен, включите (вероятно, свинг здесь легче всего использовать) таймер, начинающий отправлять события с интервалом в полсекунды, когда ваш слушатель получает их, заставьте его увеличить переменную, отображаемую увеличением текста, на единицу.Когда флаг выключен, остановите таймер.

РЕДАКТИРОВАТЬ: мой плохой, не видел тег Android - однако, это будет работать для обычной Java.

...