Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/65: Рейтинг темы: голосов - 65, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 21.10.2012
Сообщений: 13

Долгое нажатие кнопки

23.12.2012, 10:53. Показов 12875. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно выполнять действие по зажатию клавиши: есть кнопка увеличения громкости, при её зажатии звук увеличивается. Пробовал longClick - выполняется один раз (не подходит).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.12.2012, 10:53
Ответы с готовыми решениями:

Заблокировать долгое нажатие на кнопку HOME
Здравствуйте! Как заблокировать долгое нажатие на кнопку HOME в своем приложении? P.S. Android 4.2.2 На версиях 5.0+ меню недавних...

Определить нажатие кнопки Home и кнопки сворачивания приложения
По аналогии с backPressed: @Override public void onBackPressed() { }

Не обрабатывается нажатие кнопки
ImageView btn1 = new ImageView(this); btn1.setImageResource(R.drawable.gorod_cveta_button1); btn1.setLayoutParams(new...

8
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
23.12.2012, 18:02
почему не подходит?
0
0 / 0 / 0
Регистрация: 21.10.2012
Сообщений: 13
23.12.2012, 19:09  [ТС]
Цитата Сообщение от V0v1k Посмотреть сообщение
почему не подходит?
Нужно чтоб действие происходило на протяжении всего нажатия.
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
23.12.2012, 20:33
и в чем проблема?
0
0 / 0 / 0
Регистрация: 21.10.2012
Сообщений: 13
24.12.2012, 02:39  [ТС]
Цитата Сообщение от V0v1k Посмотреть сообщение
и в чем проблема?
Может я не что-то не так делаю. Ход моих действий:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class ManagerActivity extends Activity implements OnLongClickListener{
    
    Button but;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.manager);   
        
        but=(Button)findViewById(R.id.button1);
 
        but.setOnLongClickListener(this);
 
 
    public boolean onLongClick(View v) {
        Log.d("TAG","действие");
        return false;
    }
    
}
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.12.2012, 04:54
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class ManagerActivity extends Activity implements OnLongClickListener, OnTouchListener{
    
    Button but;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.manager);   
        
        but=(Button)findViewById(R.id.button1);
 
        but.setOnLongClickListener(this);
        but.setOnTouchListener(this);
 
    public boolean onLongClick(View v) {
        Log.d("TAG","начать действие");
        return false;
    }
 
    @Override
        public boolean onTouch(View v, MotionEvent event) {
               int action = event.getAction();
               if (action == MotionEvent.ACTION_UP) {
                       Log.d("TAG","прекратить действие");
               }
               return false;
        }
}
ну что-то в этом духе....
1
0 / 0 / 0
Регистрация: 21.10.2012
Сообщений: 13
24.12.2012, 14:37  [ТС]
Спасибо, но я наверное, не так объяснил. Я предпологал, что есть какой-либо метод помимо LongClick, осуществляющий выполнение действия на протяжении нажатия (т.е. лог " Log.d("TAG","начать действие")" отображался бы не один раз, показывая тем самым начало действия после нажатия, а столько раз пока я не отпущу кнопку), но наверно немного "лажанулся )". Поэтому задам немного другой вопрос. Для организации выполнения действия во время нажатия, я выполняю цикл в onLongClick или реккурсию на самого себя (т.е. onLongClick в onLongClick-е) с определённым интервалом. Вопрос как выйти из цикла (реккурсии) (во время выполнения поограмма не реагирует на действия, а выполняет лишь цикл (реккурсию)). Переделаю ваш код (для цикла):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class ManagerActivity extends Activity implements OnLongClickListener, OnTouchListener{
    
    Button but;
    boolean action=false;
    int val=0;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.manager);   
        
        but=(Button)findViewById(R.id.button1);
 
        but.setOnLongClickListener(this);
        but.setOnTouchListener(this);
 
    public boolean onLongClick(View v) {
        Log.d("TAG","начать действие");
        while(action)
        {
             Thread.sleep(500);
             val++;
         }
        return false;
    }
 
    @Override
        public boolean onTouch(View v, MotionEvent event) {
               switch(event.getAction()){
               case MotionEvent.ACTION_DOWN:
                       action=true;
                       break;
               case MotionEvent.ACTION_UP:
                       action=false;
                       break;
               default: break;
               }
               return false;
        }
}
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.12.2012, 00:45
цикл в другом потоке. никаких рекурсий.
1
0 / 0 / 0
Регистрация: 21.10.2012
Сообщений: 13
25.12.2012, 15:37  [ТС]
Ok, так и сделаю, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.12.2012, 15:37
Помогаю со студенческими работами здесь

Реакция кнопки на нажатие
Стандартная кнопка визуально реагирует на нажатие. А когда изменяешь фон кнопки, то всякая визуальная реакция исчезает. Как-то можно это...

Отловить нажатие кнопки Done
Activity имеет элемент EditText ( android:inputType="number") подскажите как отловить нажатие DONE?

AsyncTask, отловить нажатие кнопки
Здравствуйте! Есть такой код class RequestTaskT extends AsyncTask<String, Void, String> { protected void onPreExecute() { ...

Обработать нажатие на кнопки в уведомлении
Еще раз здравствуйте. Дело такое. Есть уведомление, в нем две кнопки. Они должны выполнять различные действия (вызов методов)....

Не срабатывает нажатие кнопки в Dialog
Необходимо при запуске окна, запрашивать от пользователя логин. Если логин введен - приложение продолжает свою работу. Если нет, то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru