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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
#1

OnTouch и onLongClick - Android

20.03.2014, 21:22. Просмотров 1368. Ответов 7
Метки нет (Все метки)

вот есть ImageButon btnAdd
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
  @Override
    public boolean onTouch(final View view, MotionEvent motionEvent) {
        switch (view.getId()){
            case R.id.imgBntAdd:
                switch (motionEvent.getAction()){
                    case MotionEvent.ACTION_DOWN:
 
                        btnAdd.setBackgroundColor(color1);
                        //time 1 == время зажатия кнопки
                        this.time1 = System.currentTimeMillis() / 1000;
                        
                       // gravityToast(btnAdd,view.getContext()); мне надо чтоб этот метод заработал после секунды 
                        break;
 
                    case MotionEvent.ACTION_UP:
                        btnAdd.setBackgroundColor(color2);
                        //time 2 == время отпускания кнопки
                        this.time2 = System.currentTimeMillis() / 1000;
                        if (time1 + 1 - time2 > 0){
                        startActivityNote();
                        }
                    default:
                        break;
                }
                break;
Ну пробывал sleep тупо сделать не канает, пробывал onLongClick вешать но тогда onTouch не работает, а у onLongClick нету в параметрах MotionEvent.... вот думаю о потоках... Вообщем подскажите как сделать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
name?
198 / 169 / 18
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
20.03.2014, 21:58     OnTouch и onLongClick #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
41
42
43
44
45
46
47
 boolean isDown;
 private Timer timer = new Timer(); 
public void start(){
timer.schedule(task, 1, 10);
}
int count = 0;
TimerTask task = new TimerTask() {
public void run() {
if(isDown){
count++;
}
 
if(count >=100){
gravityToast(btnAdd,view.getContext()); мне надо чтоб этот метод заработал после секунды 
count = 0;
isDown = false;
}
 
}
};
 @Override
    public boolean onTouch(final View view, MotionEvent motionEvent) {
        switch (view.getId()){
            case R.id.imgBntAdd:
                switch (motionEvent.getAction()){
                    case MotionEvent.ACTION_DOWN:
 
                        btnAdd.setBackgroundColor(color1);
                        //time 1 == время зажатия кнопки
                        this.time1 = System.currentTimeMillis() / 1000;
                        isDown = true;
                      
                        break;
 
                    case MotionEvent.ACTION_UP:
                        btnAdd.setBackgroundColor(color2);
                        isDown = false;
                        count = 0;
                        //time 2 == время отпускания кнопки
                        this.time2 = System.currentTimeMillis() / 1000;
                        if (time1 + 1 - time2 > 0){
                        startActivityNote();
                        }
                    default:
                        break;
                }
                break;
как вариант
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
20.03.2014, 22:48  [ТС]     OnTouch и onLongClick #3
Цитата Сообщение от name? Посмотреть сообщение
gravityToast(btnAdd,view.getContext()); мне надо чтоб этот метод заработал после секунды
Это вот что за метод
Java
1
2
3
4
5
btnAdd.getLocationInWindow(pos);
                    String s = btnAdd.getContentDescription().toString();
                    Toast t = Toast.makeText(context, s, Toast.LENGTH_SHORT);
                    t.setGravity(Gravity.TOP | Gravity.LEFT, btnAdd.getRight() + 5 ,pos[1] + 20 );
                    t.show();
вылетает щас java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:121)
at android.widget.Toast$TN.<init>(Toast.java:317)
at android.widget.Toast.<init>(Toast.java:91)
at android.widget.Toast.makeText(Toast.java:233)
at com.greendield.note.MainActivity$1.run(MainActivity.java:105)
at java.util.Timer$TimerImpl.run(Timer.java:284)

Toast t = Toast.makeText(context, s, Toast.LENGTH_SHORT); вот на эту строчку ругается после внедрения того что вы мне написали.
name?
198 / 169 / 18
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
20.03.2014, 22:56     OnTouch и onLongClick #4
тогда
Java
1
2
3
4
5
6
7
8
9
runOnUiThread(new Runnable() {
    public void run() {
     if(count >=100){
gravityToast(btnAdd,view.getContext()); мне надо чтоб этот метод заработал после секунды 
count = 0;
isDown = false;
}
    }
});
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
20.03.2014, 23:03  [ТС]     OnTouch и onLongClick #5
java.lang.IllegalStateException: TimerTask is scheduled already
at java.util.Timer.scheduleImpl(Timer.java:572)
at java.util.Timer.schedule(Timer.java:481)
at com.greendield.note.MainActivity.start(MainActivity.java:114)
at com.greendield.note.MainActivity.onTouch(MainActivity.java:255)


public void start(){
timer.schedule(task, 1, 10);
} на этот метод

Добавлено через 25 секунд
но первый раз срабатывает как положено
name?
198 / 169 / 18
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
20.03.2014, 23:05     OnTouch и onLongClick #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
ну так таймер один раз запускать нужно, а у вы запущенный таймер второй раз пытаетесь запустить
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
20.03.2014, 23:09  [ТС]     OnTouch и onLongClick #7
Огромное вам спасибо,я понел.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2014, 13:24     OnTouch и onLongClick
Еще ссылки по теме:

Android Вылет onTouch(), перетаскивание
OnTouch узнать цвет пикселя Android
OnTouch из активити для View Android
Android OnTouch на элементе меню
Android OnLongClick на toolbar menu

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

Или воспользуйтесь поиском по форуму:
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
21.03.2014, 13:24     OnTouch и onLongClick #8
луше использовать geusterDetector
Yandex
Объявления
21.03.2014, 13:24     OnTouch и onLongClick
Ответ Создать тему
Опции темы

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