Вставьте палец в кнопки Android - PullRequest
2 голосов
/ 22 февраля 2011

Как я могу сделать так, чтобы, когда кто-то скользил пальцем по кнопке или над ней, кнопка действовала так, как будто ее нажимали?

Примером того, что я ищу, была бы клавиатураприложение.Где вы проводите пальцами по всем клавишам, чтобы играть звуки.

1 Ответ

0 голосов
/ 22 февраля 2011

Вы можете использовать OnTouchListener следующим образом:

    boolean firstTime = true;
    OnTouchListener testTouchListener = new OnTouchListener(){
        public boolean onTouch(View v, MotionEvent me){
            Rect r = new Rect();
            secondButton.getDrawingRect(r);
            if(r.contains((int)me.getX(),(int)me.getY())){
                //Log.i(myTag, "Moved to button 2");
                if(firstTime == true){
                    firstTime = false;
                    secondButton.performClick();
                }
            }
            if(me.getAction() == MotionEvent.ACTION_UP){
                //When we lift finger reset the firstTime flag
                firstTime = true;
            }
            return false;

        }
    };
    firstButton.setOnTouchListener(testTouchListener);

При таком подходе вы получите поток сенсорных событий, потому что onTouch () часто вызывается с MotionEvent.ACTION_MOVE. Таким образом, вам нужно сохранить логическое значение, которое сообщит вам, если вы первый раз получили вызов onTouch (). Затем вы можете сбросить этот логический тип в onTouch () для MotionEvent.ACTION_UP, чтобы он снова работал в следующий раз. Однако это может быть довольно сложно, если вы пытаетесь сделать больше, чем просто две кнопки. Я думаю, вы должны будете хранить логическое значение для каждого из них отдельно (или, возможно, массив логических значений для хранения их всех). и вам понадобятся дополнительные операторы if (r.contains (x, y) для каждой кнопки. Это должно привести вас к правильному пути.

...