Y a-t-il un moyen pour qu'un contrôle WebView détecte un balayage tout en étant capable de faire un zoom multitouch et d'avoir des commandes de zoom intégrées?Comment faire un balayage de balayage de WebView avec le zoom multitouch activé avec un flipper
Répondre
OUI! Il y a une façon de le faire en mettant en œuvre WebView et la création d'un Webview personnalisé De cette façon WebView personnalisée a construit en détection de swipe ayant en même temps multi-touch et de construire dans les contrôles pour le zoom.
//Declaring the custom Webview and put into a viewflipper
MyWebView[] webview =new MyWebView[2];
flipper = (ViewFlipper) findViewById(R.id.ViewFlipper);
webview[i] = new MyWebView(this);
webview[i].setWebViewClient(new HelloWebViewClient());
webview[i].getSettings().setJavaScriptEnabled(false);
webview[i].setInitialScale(60);
webview[i].getSettings().setBuiltInZoomControls(true);
flipper.addView(webview[0]);
flipper.addView(webview[1]);
et voici le WebView personnalisé
public class MyWebView extends WebView {
public MyWebView(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent evt) {
boolean consumed = super.onTouchEvent(evt);
if (isClickable()) {
switch (evt.getAction()) {
case MotionEvent.ACTION_DOWN:
lastTouchX = evt.getX();
lastTouchY = evt.getY();
downXValue = evt.getX();
downTime = evt.getEventTime();
hasMoved = false;
break;
case MotionEvent.ACTION_MOVE:
hasMoved = moved(evt);
break;
case MotionEvent.ACTION_UP:
float currentX = evt.getX();
long currentTime = evt.getEventTime();
float difference = Math.abs(downXValue - currentX);
long time = currentTime - downTime;
Log.i("Touch Event:", "Distance: " + difference + "px Time: " + time + "ms");
if ((downXValue < currentX) && (time < 220) && (difference > 100)) {
go_back();
}
if ((downXValue > currentX) && (time < 220) && (difference > 100)) {
go_forward();
}
//if (!moved(evt)) performClick();
break;
}
}
return consumed || isClickable();
}
float downXValue;
long downTime;
private float lastTouchX, lastTouchY;
private boolean hasMoved = false;
private boolean moved(MotionEvent evt) {
return hasMoved ||
Math.abs(evt.getX() - lastTouchX) > 10.0 ||
Math.abs(evt.getY() - lastTouchY) > 10.0;
}
}
Et c'est It.You ont construit en swipe detection.Code est un peu « pseudo-code » et ne l'ont pas nettoyé mais Outrepasser la onTouchEvent dans MotionEvent.ACTION_MOVE et le cas MotionEvent.ACTION_UP devrait faire l'affaire. Vous pouvez également jouer avec les limites de temps et de différence.
J'ai essayé cela mais cela me pose un problème avec le zoom avant/arrière. Il réinitialise la taille du WebView lorsque vous rapprochez le zoom à sa taille d'origine. – MegaNairda
- 1. TableView avec défilement et balayage
- 2. Comment activer le mouvement de balayage pour un UITextView
- 3. identifiant le balayage dans UIScrollview?
- 4. UISwipeGestureRecognizer Distance de balayage
- 5. Java: chaîne de balayage pour un motif
- 6. UITableViewCell Balayage pour Tiroir
- 7. iPad: Comment faire un seul balayage agir comme un rouleau de la molette de la souris
- 8. Faire une sélection rectangulaire dans un RichTextBox avec le balayage Alt-Left-Mouse?
- 9. iPhone traiter un balayage par l'utilisateur
- 10. ANTLR: Balayage de caractères Unicode
- 11. balayage ligne OpenCV
- 12. Comment reconnaître le mouvement de balayage dans UIScrollView
- 13. Effet de balayage pour les vues d'image
- 14. arêtes de commande pour l'algorithme de balayage
- 15. android multitouch zoom d'image?
- 16. Changer l'opacité de UIView par balayage
- 17. mettre en œuvre une méthode de balayage
- 18. Regex Balayage des balises HTML
- 19. Comment mesurer la vélocité d'un balayage?
- 20. Quels sont les codes de balayage pour:
- 21. Le moteur de balayage du site web de Backlink-reporting?
- 22. Navigation de page sur le balayage gauche/droite
- 23. linux lecteur de carte de balayage de fond
- 24. Comment envoyer les codes de balayage du clavier manuellement?
- 25. Confondu avec l'algorithme de diagramme de Voronoi (ligne de balayage de Fortune)
- 26. Génération d'un balayage sinusoïdal en C#
- 27. Puis-je remplacer les haricots de printemps instanciés avec le balayage des composants?
- 28. Définir le zoom pour Webview
- 29. Comment faire pivoter un dessin avec l'anti-alias activé
- 30. avoir des problèmes avec le zoom dans android webview
Rien de mal à répondre à votre propre question, mais ce serait mieux si vous pouviez poser une question et entrer une réponse plutôt que de simplement tout mettre dans la question. Cela permet aux utilisateurs de répondre plus facilement à votre solution et d'offrir des solutions alternatives à votre problème. –
typique ce n'est pas une question .. mais je le ferai.Il pourrait être plus évident de cette façon. – weakwire