Создание интерфейса в Android - PullRequest
1 голос
/ 29 июля 2011

Может ли кто-нибудь провести меня через лучший способ сделать это?Я хочу сделать интерфейс, который расширяет OnTouchListener.Вместо одного входа с именем onTouch(View view, MotionEvent e) я хочу 3 выхода;onPress() onMove() и onRelease().Мясной onPress вызывается при нажатии на экран, а onMove вызывается при перемещении пальца по экрану.onRelease вызывается, когда вы отпускаете палец.Все соответствующие ответы приветствуются.

Ответы [ 3 ]

3 голосов
/ 29 июля 2011

Вы бы использовали YourTouchListener, предоставленный duffymo, расширив свой класс View и добавив метод setYourTouchListener(YourTouchListener listener) в этот класс.

Затем вы переопределяете onTouchEvent(MotionEvent event) и вызываете соответствующие методы вашего слушателя. Вот так:

public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            listener.onPress(this, event);
            break;
        case MotionEvent.ACTION_MOVE:
            listener.onMove(this, event);
            break;
        case MotionEvent.ACTION_UP:
            listener.onRelease(this, event);
            break;
    }
    //this means that you have "used" this event. The ViewGroup will direct all further associated events straight here.
    return true;
}
1 голос
/ 29 июля 2011

Я бы, по сути, сделал то, что опубликовал CaspNZ, с той лишь разницей, что в этом случае вы не должны расширять OnTouchListener.Реализация интерфейса означает, что вы должны предоставить реализацию для всех его методов, поэтому в этом случае onTouch в дополнение к трем, которые вы создаете, что является избыточным.И, конечно, если вам все-таки понадобится onTouch для чего-то, вы всегда можете реализовать OnTouchListener в дополнение к YourTouchListener.

1 голос
/ 29 июля 2011

Вы можете использовать GestureListener и метод onFling(...), который дает вам возможность (MotionEvent e1 и MotionEvent e2) измерять начальное касание (при нажатии) и окончательное касание (отпускание), и на основании этого вы делаете своиработа.Также обеспечивает velocity из MotionEvent вдоль x и y осей, измерение давления, приложенного к экрану, и т. Д. Это сократит ваше время на написание всего интерфейса, который вы собираетесьделаем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...