420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
1 | |
Мягкий лонг-клик по кнопке с таймером10.08.2016, 11:36. Показов 2714. Ответов 13
Метки нет (Все метки)
Гуру, подскажите.
Есть ли ПРОСТОЕ и готовое решение для такого?? Есть: Обычная Button увеличивает параметр/счетчик на +1. Хочу: Чтобы нажав долго на кнопку включится быстрый/ускоренный таймер быстро увеличивающий счетчик. (юзеру 100 раз лень нажимать) При отпускании кнопки таймер должен остановиться. ...понимаю что надо отловить лонгклик, запустить некий таймер, отловить "отпускание татча", остановить таймер... но может готовое решение есть???
0
|
10.08.2016, 11:36 | |
Ответы с готовыми решениями:
13
Клик по кнопке в элементе listView Клик в соответствии с таймером QT клик мышкой в заданное время, в соотношении с таймером Клик по кнопке |
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
|
|||||||||||
10.08.2016, 12:01 | 2 | ||||||||||
писал ровно 10 минут, дарю
2
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
||||||
10.08.2016, 17:20 [ТС] | 3 | |||||
Я свой тоже минут 15-20 писал... Хотелось СИСТЕМНОЕ решение... (типа как с анимацией - натравил класс на кнопку и пользуюсь)
Мой вариант чуть и гибче:
0
|
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
|
|
10.08.2016, 17:28 | 4 |
спасибо, поржал, сферический говнокод в вакуууме
в принципе, я код писал что-бы руку потренировать я давно уже понял что к тебе в темы лучше не заходить - ничего полезного и нового для себя я из них не вынесу за сим сливаюсь
0
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
10.08.2016, 18:30 [ТС] | 5 |
Не нравится - не ешь!
Достал уже!!! У каждого свой стиль кода! Мой не требует лишних процедур, легко подвязывается под несколько кнопок прямо в onCreate. Реально чуствуется ускорение, а не тупое включил/выключил. Сделано КУСКОМ диалога в Preference - в большом классе. Проверено на убитом китайском устройстве и работает даже когда память устройства перегружена и сран... умная ява+андроид позволяют себе не все команды выполнять. Потрачено 20 минут и дальше к этой теме не собирался возвращаться! Просто "было бы удобно для юзера еще и...". За сим... если увидишь тему от меня - просьба игнорировать!
0
|
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
|
|
12.08.2016, 08:15 | 6 |
Это не "стиль кода", это то, что сказали чуть выше, повторять не стану.
От одного только ((Button) view.findViewById(R.id.bt_chg1)).setOnLongClickListener(new View.OnLongClickListener() { ... } волосы на одном месте рвать хочется. Это адъ. Ты не в курсе, как должны выглядеть имена переменных ? Да и англ. подтянуть не мешало бы. "Рунический таймер", лол
0
|
111 / 111 / 43
Регистрация: 24.05.2015
Сообщений: 329
|
|
12.08.2016, 11:32 | 7 |
Раньше тоже так периодически писал, но... как-то вроде мне показалось не совсем правильно. Сам себя даже не могу объяснить почему. Чем плох такой стиль?
1
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,410
|
|
12.08.2016, 12:06 | 8 |
fraley, наверное
1 кнопка имеет непонятное имя 2 все обработчики накапливаются в OnCreate раздувая его до нечитаемых размеров и, возможно, снижая изоляцию кода обработчиков от окружения (тела OnCreate)
1
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
12.08.2016, 13:59 [ТС] | 9 |
в курсе... Но ява это не мой "родной язык". И я на нем не кодил почти пол года. (в других языках живу)
и мне ТАК УДОБНЕЕ! Читабельнее! Получился "компактный набор переменных" начинающийся с "timer_" - лекго устранить конфликты если такое имя уже есть. И после перехода в С++ из Delphi/php я боюсь разбрасываться переменными вида doCalculation - "на форсаже" по привычке не слежу за большими буквами... ну ошибся... торопился и поленился залезть в переводчик. Читаю на английском часто, но пишу редко. Логическая цепочка была run=запустить, run+ed=запущено... (у меня такие вещи почти на рефлексах + слепой набор на клаве = миллисекунды до результата) почему ад??? работает? да! подобные решения часто менять прийдется? нет! 5*1000 осталось со времени "подгонки под дизайн" - глазами быстрее найти 5*, а не считать нолики. Позднее возможно "отполирую" для "коробочного варианта". Писалось "эволюционным методом": <timer_begin+5*1000 - чой-то не заработало... возможно в знаках ошибся... выпишу в одну строку - так понятнее... Да и вообще обзывать "говнокодом" ЛЮБОЙ код который не претендует на роль публичного - обидно для любого автора!!!! Или думаете я не знаю что мой код далек до идеального??? ("только негр может называть другого негром") факт - я по быстрому "нагуглил" как работать с циклическим таймером, обработку отпускания кнопки, вспомнил как работать с текущим временем. Знал что они есть, но не помнил даже названия конструкций. По быстрому (меньше 20 минут) слепил из этого рабочую версию нужного мне кода... Его можно "скопипастить" любому студенту и оно заработает с минимальными изменениями. Код же Паблито фиг поменяешь (попробуй положить туда 3 внешних обработчика без знания интерфейсов)... А Паблито вообще то так не ответил на мой вопрос! Правильный ответ был - "Такого ГОТОВОГО/СИСТЕМНОГО решения нет и я не встречал в опенсорсах - пиши сам"... Видели бы вы с каким чужим кодом мне приходилось работать... Даже goto использовали, но не смотря на "нечитабельность" работало раза в 1.5-2 быстрее чем мой "красивый" код написанный по правилам. Я наоборот был восхищен логикой когда разобрался... в диалоге 2 кнопки = +1/-1, отвечают за change И я максимально "обезличил" код перед выкладыванием. Это редкое, частное решение! Для диалога с кодом в 3 страницы. Это самый мощный код который там вообще есть - остальное уровня "подключи вьюв" и добавь к второй строке prefference строку из переменной. Заблудиться тяжело - иначе бы писал бы сразу внешний класс обработки.
0
|
111 / 111 / 43
Регистрация: 24.05.2015
Сообщений: 329
|
|
12.08.2016, 14:06 | 10 |
Я такое использовал в небольших проектах(больше по учебе) с одной двумя кнопками.
Когда стал писать проекты большего размера, стало неудобно. И собственно наткнувшись сейчас на эту тему, решил для себя уяснить окончательно - что в таком подходе неправильного, кроме удобно-неудобно.
0
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
||||||
12.08.2016, 15:32 [ТС] | 11 | |||||
Судя по тому что я встречал в учебниках (пока учился) ничего "неправильного" в этих конструкциях нет! И вполне годится для небольшого кода (когда мини-активити, или "дизайнерский" диалог), да и в больших можно использовать когда код внутри обработок не большой и отдельная функция засорит код.
Вот кусочек из "коллекции" Кликните здесь для просмотра всего текста
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,410
|
|
12.08.2016, 18:49 | 12 |
Tester64, я так понимаю что следующий цикл напутственных статей как сделать побыстрее раскроет нам глаза на то что хардкодить строки в маленьких проектах тоже можно если ну очень маленький проект и мы ну очень торопимся)
0
|
111 / 111 / 43
Регистрация: 24.05.2015
Сообщений: 329
|
|
12.08.2016, 18:52 | 13 |
Так народ же выше в один голос пишет что это плохой подход.
Я лично для себя хотел бы понять почему.
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,410
|
|
12.08.2016, 19:12 | 14 |
fraley синтаксически подход верен и решает свою задачу, делать так для диалогов - нормально, делать так для обычных сколько-нибудь развитых в плане кода кнопок - потеря читаемости. Вопрос почти религиозный, решайте для себя индивидуально что лучше. По пальцам в таком подходе может ударить только нарушение изоляции (мы можем случайно залезть в "чужую" финал переменную)
1
|
12.08.2016, 19:12 | |
12.08.2016, 19:12 | |
Помогаю со студенческими работами здесь
14
Автоматический клик по кнопке Не работает клик по кнопке Клик по javascript кнопке Клик по кнопке в директиве Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |