Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.97
serg130191
0 / 0 / 0
Регистрация: 21.10.2012
Сообщений: 13
#1

Долгое нажатие кнопки - Программирование Android

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

Нужно выполнять действие по зажатию клавиши: есть кнопка увеличения громкости, при её зажатии звук увеличивается. Пробовал longClick - выполняется один раз (не подходит).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2012, 10:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Долгое нажатие кнопки (Программирование Android):

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

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

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

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

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

Отловить нажатие кнопки Home - Программирование Android
Всем привет! Как отловить нажатие кнопки Home. В onKeyDown не получается.... Какие ещё варианты?

8
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
23.12.2012, 18:02 #2
почему не подходит?
0
serg130191
0 / 0 / 0
Регистрация: 21.10.2012
Сообщений: 13
23.12.2012, 19:09  [ТС] #3
Цитата Сообщение от V0v1k Посмотреть сообщение
почему не подходит?
Нужно чтоб действие происходило на протяжении всего нажатия.
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
23.12.2012, 20:33 #4
и в чем проблема?
0
serg130191
0 / 0 / 0
Регистрация: 21.10.2012
Сообщений: 13
24.12.2012, 02:39  [ТС] #5
Цитата Сообщение от 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
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.12.2012, 04:54 #6
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
serg130191
0 / 0 / 0
Регистрация: 21.10.2012
Сообщений: 13
24.12.2012, 14:37  [ТС] #7
Спасибо, но я наверное, не так объяснил. Я предпологал, что есть какой-либо метод помимо 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
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.12.2012, 00:45 #8
цикл в другом потоке. никаких рекурсий.
1
serg130191
0 / 0 / 0
Регистрация: 21.10.2012
Сообщений: 13
25.12.2012, 15:37  [ТС] #9
Ok, так и сделаю, спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2012, 15:37
Привет! Вот еще темы с ответами:

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

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

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

Изменение языка приложения через нажатие кнопки - Программирование Android
Здравствуйте! Есть приложение, в нём есть кнопка "Язык", и я хочу, чтобы по нажатии на кнопку выскакивала менюшка с выбором языка. Как это...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
25.12.2012, 15:37
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru