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

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

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

OnTouch и onLongClick - Программирование Android

20.03.2014, 21:22. Просмотров 1517. Ответов 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.... вот думаю о потоках... Вообщем подскажите как сделать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2014, 21:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос OnTouch и onLongClick (Программирование Android):

OnLongClick на toolbar menu - Программирование Android
Как сделать чтобы toolbar menu открывался не только на onClick, но еще и на onLongClick?

onClick и onLongClick у WebView - Программирование Android
Собственно как научить WebView обрабатывать эти 2 события?

registerForContextMenu и ontouch - Программирование Android
Здравствуйте! Столкнулся с проблемой: при единичном нажатии на экран, срабатывает OnTouch public boolean onTouch(View v,...

Программный вызов onTouch - Программирование Android
В игре после завершения уровня для перехода в следующий нужно сделать один клик (событие Down) Хочу сделать автоматический клик. В...

OnTouch на элементе меню - Программирование Android
как присвоить setOnTouchListener элементу меню?

Вылет onTouch(), перетаскивание - Программирование Android
Хочу сделать так, что при перемещении картинки видел ее координаты. В чем ошибка? Спасибо. protected void onCreate(Bundle...

7
name?
198 / 169 / 18
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
20.03.2014, 21:58 #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;
как вариант
1
kirawa
34 / 34 / 1
Регистрация: 12.11.2013
Сообщений: 338
20.03.2014, 22:48  [ТС] #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); вот на эту строчку ругается после внедрения того что вы мне написали.
0
name?
198 / 169 / 18
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
20.03.2014, 22:56 #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;
}
    }
});
0
kirawa
34 / 34 / 1
Регистрация: 12.11.2013
Сообщений: 338
20.03.2014, 23:03  [ТС] #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 секунд
но первый раз срабатывает как положено
0
name?
198 / 169 / 18
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
20.03.2014, 23:05 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
ну так таймер один раз запускать нужно, а у вы запущенный таймер второй раз пытаетесь запустить
0
kirawa
34 / 34 / 1
Регистрация: 12.11.2013
Сообщений: 338
20.03.2014, 23:09  [ТС] #7
Огромное вам спасибо,я понел.
0
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
21.03.2014, 13:24 #8
луше использовать geusterDetector
0
21.03.2014, 13:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2014, 13:24
Привет! Вот еще темы с ответами:

OnTouch узнать цвет пикселя - Программирование Android
Добрый день, форумчане! Начал как хобби изучать андройд программирование. Работаю в Android studio. Сейчас создал проект с Draw2D с...

Одновременное срабатывание onTouch и onItemLongClick - Программирование Android
Добрый день, коллеги, Есть два обработчика: OnTouchListener и onItemLongClickListener. Первый нужен для определения свайпа элемента...

OnTouch из активити для View - Программирование Android
В активити прописан метод onTouch. Что нужно написать чтобы добавленные View так же вызывали выполнение кода при прикосновении

OnTouch траблы с viewflipper и viewpager - Программирование Android
Доброго всем времени суток! Помогите разобраться, в чем беда. Пытаюсь использовать для свайпинга viewflipper или viewpager. в обоих...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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