#android #touch-event #ontouchlistener
#Android #сенсорное событие #ontouchlistener
Вопрос:
итак, у меня были некоторые проблемы с методом onTouch, он ничего не делал, сначала я подумал, что что-то не так с кодом, но потом я сделал это, и он по-прежнему не работает, когда я касаюсь экрана. Кто-нибудь знает, в чем проблема? Спасибо.
{ частный FartPianoView fpv;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
fpv = new FartPianoView(this);
setContentView(fpv);
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
// TODO Auto-generated method stub
float currentX = event.getX();
float currentY = event.getY();
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
finish();
break;
case MotionEvent.ACTION_UP:
finish();
break;
}
return false;
}
}
Ответ №1:
Вам необходимо переопределить
public boolean onTouchEvent (MotionEvent e)
метод Activity
класса, а не метод, который вы переопределяете ( onTouch(...)
из OnTouchListener
). Тогда это должно сработать. Пример:
@Override
public boolean onTouchEvent(MotionEvent e) {
// do your stuff...
return false;
}
Это означает, что вы распознаете события касания на Activity
, а не на View
. Если вы хотите явно обнаруживать касания на View
via OnTouchListener
, вам необходимо установить OnTouchListener
для вашего View
.
В вашем случае:
fpv = new FartPianoView(this);
fpv.setOnTouchListener(this);
Комментарии:
1. Как насчет вашего FartPianoView? Перехватывает ли он сенсорные жесты?
2. Другой вопрос, по какой-то причине, когда я использую методы из fpv, это не работает. Есть идеи, почему?