2013-02-13 6 views
10

Ich experimentierte mit JavaScript-Gestenbibliotheken. Sie alle funktionieren gut mit dem iPad mini, aber wenn ich sie auf meinem Samsung Galaxy Tab (GT-P7510, Android 4.04) versuche, sind die Ergebnisse bestenfalls intermittierend.Gibt es eine Javascript-Gestenbibliothek, die mit dem Samsung Galaxy Tab funktioniert?

Die besten Ergebnisse sind im Hochformat. Im Querformat funktioniert praktisch nichts.

ich versucht habe, unter anderem die folgenden Bibliotheken, die ich alle von diesem Posten gefunden: http://www.queness.com/post/11755/11-multi-touch-and-touch-events-javascript-libraries

  • hammer.js
  • quo.js
  • heikles
  • doubletap
  • jgestures
  • touchswipe

Touchswipe funktioniert am besten, aber alle anderen haben einfach nicht richtig Ball gespielt.

Der Hammer Seite hat eine Demo, die auf dem iPad funktioniert gut, aber nicht das android:

http://eightmedia.github.com/hammer.js/

Also, hat jemand von irgendeiner Weise weiß, dass ich Swipe-Gesten auf meine Galaxie zu spielen schön zu bekommen ?

Ich habe die quirksmode-Seite angesehen, auf die eine vorherige stackoverflow-Frage hinwies, aber das war veraltet und nicht länger gepflegt, von dem was ich sehen konnte. Es hat auch keine Bibliotheken erwähnt.

+0

Arbeiten Sie bereits mit einer Javascript-Bibliothek? Momentan arbeite ich an einem jQuery UI Projekt und um die Gestenfunktionen hinzuzufügen, benutze ich «jQuery UI Touch Punch» welches sehr gut mit iPad & Android spielt. http://touchpunch.furf.com/ – Cholesterol

+0

Ich bin ziemlich betäubt von der neuen Sencha-Framework http://www.sencha.com/products/touch Es ist Kern ist immer noch Ext JS ich denke ... – Preexo

+0

Ich denke diese Frage ist wahrscheinlich geschlossen: siehe [Warum sind "Einkaufslisten" -Fragen schlecht?] (http://meta.stackexchange.com/questions/158809/why-are-shopping-list-questions-bad/158810#158810) – Cholesterol

Antwort

2

Ich hatte viel Glück mit diesem:

https://github.com/HotStudio/touchy

Es lang drücken, gekniffen hat, drehen und Gesten Swipe, und der Code ist ziemlich einfach anzupassen.

Beachten Sie, dass die Kombinationen von Gesten behandelt werden müssen - zum Beispiel wird ein Swipe fast immer eine lange Berührung auslösen, also müssen Sie Flags setzen oder anderweitig damit umgehen.

+0

Auch, wenn Sie es nicht bereits versucht haben, schauen Sie sich die Entwicklung Zweig im Repo there-- es hat Updates, die mir geholfen – NoelHunter

+0

+1 für eine tatsächliche Antwort! Ich werde heute Abend experimentieren und Sie wissen lassen, wie ich komme. – Puzbie

+0

Ja! Endlich! Das funktioniert tatsächlich. Danke, dass du mich in die richtige Richtung gelenkt hast. Es funktioniert sogar, wenn ich die Orientierung ändere. – Puzbie

1

Hier ist ein CodePen-Gestenvergleichstool. http://jsfiddle.net/icoxfog417/uQBvP/

Wir lassen Hammer.JS nach umfangreichen Arbeiten und zog nach Quo, die wir in Ordnung finden. Die Dinge könnten sich geändert haben und jetzt anders sein.

document.head.insertAdjacentHTML('beforeEnd', '<meta name="viewport" content="target-densitydpi=device-dpi,width=device-width,initial-scale=1.0" />'); 

$(function(){ 
    //initialization 
    $(".detector").bind("click touchstart",function(e){ 
    $(".detector").removeClass("selected"); 
    $(this).addClass("selected"); 

    unbindLibrary(); 
    bindLibrary($(this).prop("id")); 
    }); 

    //bind library to gesture pad 
    bindLibrary = function(id){ 
    var $pad = $("#gesture-pad"); 
    var events = []; 
    var eventStr = ""; 
    $("#" + id + "List li").each(function(){ 
     events.push($(this).text()); 
    }) 
    //make target event list from each library's gestureList 
    eventStr = events.join(" "); 

    switch(id){ 
     case "hammer": 
     hammer = Hammer($pad.get(0), { 
      prevent_default: true 
     }) 
     .on(eventStr, logEvent); 
     break; 
     case "quojs": 
     for(var i = 0;i<events.length;i++){ 
      $$("#gesture-pad").on(events[i], logEvent); 
     } 
     $$("#gesture-pad").on("touchstart",function(e){ 
      e.preventDefault(); 
     }); 
     break; 
     case "touchSwipe": 
     var options = {}; 
     var touchSwipeHandler = function(name){ 
      if(name.indexOf("pinch") < 0){ 
      return function(event, distance, duration, fingerCount){ 
        var e = {}; e["type"] = name; logEvent(e);   
        }; 
      }else{ 
      return function(e, direction, distance, d, f, pinchZoom){ 
        var e = {}; e["type"] = name; logEvent(e);   
        }; 
      } 
     }; 

     for(var i = 0;i<events.length;i++){ 
      options[events[i]] = new touchSwipeHandler(events[i]); 
     } 
     $pad.swipe(options); 
     break; 
     case "touchy" : 
     var handler = function(name){ 
      return function(event, phase, $target, data){ 
        var e = {}; e["type"] = name; logEvent(e); 
        } 
     } 
     for(var i = 0;i<events.length;i++){ 
      $pad.bind(events[i],new handler(events[i])); 
     } 
     break;  
    } 
    } 

    //unbind library from gesture pad 
    unbindLibrary = function(){ 
    var element = $("#gesture-pad").clone(); 
    $("#gesture-pad").replaceWith(element); 
    $(".gesturelist .selected").removeClass("selected"); 
    } 

    //log detected gesture 
    logEvent = function(e){ 
    $("#detected").text(e.type); 
    var selected = $(".detector.selected").prop("id"); 
    $("#" + selected + "List li").each(function(){ 
     if($(this).text() == e.type){ 
      $(this).addClass("selected"); 
`enter code here`  }; 
    })   
    return false; 
    } 

    $(".detector").first().addClass("selected"); 
    bindLibrary($(".detector.selected").prop("id")); 

}) 
1

Ich weiß, dass dies eine alte Frage, aber ich versuchte mehrere Bibliotheken und war mit einem von ihnen nicht glücklich, rollte so meine eigenen. Es MIT lizenziert und verfügbar bei

https://github.com/aerik/GestureListener.js

mit einer Test/Demo-Seite bei

http://aerik.github.io/GestureListener/example.htm

ich es verwende routinemäßig auf meinem Galaxy S4 Telefon, ein paar Ipads und mehr Windows 8 Touchscreen-Geräte. Wir verwenden es für Produktionssoftware bei der Arbeit.

Fehlerberichte (mit Beispielen) willkommen.