Сначала вам нужно следовать учебнику Webview , чтобы позволить WebViewClient вместо браузера по умолчанию работать. Без этого после загрузки веб-страницы вы вообще не получите никаких событий.
Если вы хотите обработать события в вашей деятельности, вы можете добавить метод dispatchTouchEvent :
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
Log.v("FROM_DISPATCH_TOUCH_EVENT", "Action = " + ev.getAction());
return false;
}
Вы увидите и другие сенсорные события. Вы должны обрабатывать их в этом методе.
Альтернативный способ - зарегистрировать EventListener. Ваш класс станет:
public class Brand extends Activity implements OnTouchListener {
in onCreate () сделать это:
webview.setOnTouchListener(this);
добавить это в активность:
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
float x = event.getX();
float y = event.getY();
Log.v("ON_TOUCH", "Action = " + action + " View:" + v.toString());
Log.v("ON_TOUCH", "X = " + x + "Y = " + y);
return false;
}
Из моих логов я получаю следующее:
- dispatchTouchEvent () вызывается первым
- Тогда onTouch () называется
- Затем представление получает событие для обработки
- Тогда onTouchEvent () может получать события (см. Ниже)
Кроме того, onTouch () сообщает о просмотре, dispatchTouchEvent () сообщает о значениях, относящихся к отображению.
Почему onTouchEvent не сообщает об этих событиях? Как и многие из этих методов, есть два воплощения onTouchEvent () .
Если вы переопределяете onTouchEvent () в своей активности, это служит «ловить все» - оно обрабатывает только те события, которые не были использованы представлениями, например, если вы нажмете за пределами любого представления или события, переданные этими представлениями. Если вы переопределяете onTouchEvent () в своем View, он должен обрабатывать события в этом View. Иногда их легко спутать.