Я хотел бы добавить класс GestureDetector в свой веб-просмотр, чтобы я мог управлять обычными жестами, такими как doubletap.Android - Добавление GestureDetector в webview
Вот что я пытаюсь выполнить:
- SingleTap будет нормально функционировать
- DoubleTap откроет пункты (подробнее об этом ниже)
Что касается в DoubleTap - сайт о котором идет речь имеет исходный код, определяющий, как отдельные и двойные клики обрабатываются для определенных элементов. В нем указано, что одним щелчком мыши выбирается элемент, и двойной элемент открывает этот элемент. Я должен быть расплывчатым относительно предметов, поскольку это не общедоступный сайт.
Мне не нужно настраивать всплывающие окна. Я просто пытаюсь воссоздать одиночные клики мыши и двойные щелчки мыши.
EDIT: Я добавил в предложения ниже из патента. Я поменял несколько вещей по своему вкусу и добавил некоторые из других источников.
Я использовал this question, чтобы помочь построить свою деятельность вместе с помощью Пата. Используя код «Первый способ», он загружает мое приложение правильно и успешно перезагружает страницу, как было разработано. Теперь мне просто нужно добавить другие обработчики событий и правильно их настроить. Будет опубликован окончательный код, когда я его заработаю, и я позабочусь о том, чтобы ответить Пэт правильно.
Этот пользователь задает тот же вопрос без ответа: How to make double clicks work.
Он говорит, что это амортизируется GestureDetector (новый MyGestureDetector()); - Должен ли я это исправить?
РЕДАКТИРОВАТЬ 2: Поскольку на вопрос был задан вопрос о том, как добавить gesturedetecor в webview, и я был в состоянии сделать это, я отвечу на ответ Пэт правильно. Несмотря на то, что я хотел сделать doubleTap = двойной щелчок, я не просил этого в моем названии, поэтому я создам для него новый вопрос.
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.SslErrorHandler;
import android.net.http.SslError;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
public class MainActivity extends Activity{
WebView webview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview = (WebView) findViewById(R.id.webview);
//Do we want/need to enable Java?
webview.getSettings().setJavaScriptEnabled(true);
//Here we allow for zoom controls - pinch
webview.getSettings().setBuiltInZoomControls(true);
//Here we remove the zoom control buttons - requires API 11
webview.getSettings().setDisplayZoomControls(false);
//Here we clear the Cache and SSL Preferences
webview.clearCache(true);
webview.clearSslPreferences();
//Do we need to enable scroll bars to allow people to scroll left and right?
webview.setHorizontalScrollBarEnabled(true);
webview.setVerticalScrollBarEnabled(true);
webview.setWebViewClient(new WebViewClient());
webview.loadUrl("website");
final GestureDetector gd = new GestureDetector(new MyGestureDetector());
View.OnTouchListener gl = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
return gd.onTouchEvent(event);
}
};
webview.setOnTouchListener(gl);
}
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
Log.i("", "DoubleTapEvent");
return true;
}
}
// Ignore SSL certificate errors
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
//Would like to have a Menu Button to refresh the page - or really just bring you to the login page - for use when the session times out
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(1, 1, 0, "Refresh");
//removed below to have only buttons show
//getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.refresh:
webview.loadUrl("website");
return true;
}
return super.onOptionsItemSelected(item);
}
}
~ Dan
Это может быть то, что я ищу - я ищу примеров того, как реализовать сенсорную слушателя в мой код прямо сейчас. – Dan
см. Мое редактирование выше, инстанцируйте детектор жестов, установите ontouchlistener, затем вызовите gesturedetector.ontouchevent. Пожалуйста, отметьте ответ как принятый, если это то, что вы ищете. – pat
У меня возникли проблемы с пониманием того, где эти дополнения принадлежат коду для моего основного вида деятельности. – Dan