OnTouch,OnClick. не должен после Action_move сраб. onclick

Ответить
Turalllb
Сообщения: 40
Зарегистрирован: 08 окт 2015, 17:48

OnTouch,OnClick. не должен после Action_move сраб. onclick

Сообщение Turalllb » 17 апр 2016, 14:39

Код: Выделить всё

 button.setOnTouchListener(new View.OnTouchListener() {
            private int initialX;
            private int initialY;
            private float initialTouchX;
            private float initialTouchY;


            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:

                        initialX = params.x;
                        initialY = params.y;
                        initialTouchX = event.getRawX();
                        initialTouchY = event.getRawY();
                        return false;
                    case MotionEvent.ACTION_UP:
                        return false;
                    case MotionEvent.ACTION_MOVE:
                        params.x = initialX + (int) (event.getRawX() - initialTouchX);
                        params.y = initialY + (int) (event.getRawY() - initialTouchY);
                        mWindowManager.updateViewLayout(button, params);
                        return true;
                }
                return false;
            }
        });

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                two();
            }
        });
   }
есть кнопка которую можно перемещать. В моем случае требуется , чтобы по нажатию на кнопку срабатывал онклик, а если я нажму и перемещу кнопку , онклик не должен сработать.
на stackoverflow писали что , если ACTION_MOVE возвратит true , то до онклил дело не дойдет. Но доходит..Заметил , что если поставить false и кнопку после перемещения отпустить очень быстро без простоя на месте , то онклик не сработает. чем это вызвано не знаю.
Ведь есть кнопки которые не срабатывают после того как отпустил кнопку ,если произведено перемещение кнопки. Как это реализуется?
понимаю , что надо поставить условие : "если координаты кнопки изменились онклик не срабатывает" но как это сделать не пойму.

Turalllb
Сообщения: 40
Зарегистрирован: 08 окт 2015, 17:48

Re: OnTouch,OnClick. не должен после Action_move сраб. oncli

Сообщение Turalllb » 17 апр 2016, 16:42

сделал таким образом , добавив boolean Move;

Код: Выделить всё

button.setOnTouchListener(new View.OnTouchListener() { 
            private int initialX; 
            private int initialY; 
            private float initialTouchX; 
            private float initialTouchY; 
 
 
            @Override 
            public boolean onTouch(View v, MotionEvent event) { 
                switch (event.getAction()) { 
                    case MotionEvent.ACTION_DOWN: 
 
                        initialX = params.x; 
                        initialY = params.y; 
                        initialTouchX = event.getRawX(); 
                        initialTouchY = event.getRawY(); 
                        return false; 
                    case MotionEvent.ACTION_UP: 
                        return false; 
                    case MotionEvent.ACTION_MOVE: 
                        params.x = initialX + (int) (event.getRawX() - initialTouchX); 
                        params.y = initialY + (int) (event.getRawY() - initialTouchY); 
                        mWindowManager.updateViewLayout(button, params); 
                        Move = false;
                        return true; 
                } 
                return false; 
            } 
        }); 
 
        button.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View arg0) { 
               [u]if(Move){
                    two();
                }
                Move = true; [/u]
            } 
        }); 
   } 
Работает как надо, но минус в том , что есть звук щелчка на кнопку даже , даже если выполнился пустой метод, что логично. Есть ли способ вообще убрать звук щелчка именно на эту кнопку ? или это уже операционная система решает , что при клике будет звук щелчка?

Ответить