2013-01-23 30 views
6

Android uygulamasında kullanıcı bazı HTML sayfalarını ViewPager kullanarak tarayabilir ve kullanıcı vurgulamak için bir öğeye dokunabilir.Android - JavaScript: touchstart olayı yakınlaştırılıncaya kadar ateşlenmiyor ya da sayfayı kaydır

sorun aşağıdaki kodu kullanarak javascript kullanarak dokunmatik olay almaya çalışırken sayfa yakınlaştırma ya da üzerinde kaydırmak yeni sayfaya, ancak kullanıcı sonra gezinmek, doğru işler yaparken, elementFromPoint null döndürür olduğunu.

Dokunma başlangıç ​​etkinliğinin kaydının, yakınlaştırmanın ardından gerçekleştiğini veya sayfayı kaydırdığını buldum. böylece çalıştığını doğru o $ üzerinde kayıtlı olduğu halde (document) .ready()

 $(document).ready(function(){ 
      document.addEventListener("touchstart", touchstart, false);  
     });  

     function touchstart(e) {        
      var x = e.targetTouches[0].clientX; 
      var y = e.targetTouches[0].clientY;        
      el = document.elementFromPoint(x, y); 
      } 

javascript çağırarak sonra java kodunda size

cevap

7

yazma sonraki kod ederiz sonra:

myWebview.scrollTo(1, 0); 
    myWebview.scrollTo(0, 0); 

veya yakınlaştır'ı kullanın ve ardından Mohamed Abdel Latif'in çözümünü kullanarak

+0

Teşekkür ederim, Bu kod iyi çalışıyor, Ama neden? –

+0

Güzel hissettiriyor, ama işe yarıyor. Bu arada, WebView'unuzu ekran dışından canlandırıyorsanız, animasyon tamamlandıktan sonra bu kod satırlarını çalıştırmanız gerekir. Animator.AnimatorListener() 'ın onAnimationEnd yönteminde kurdum ve harika çalışıyor. Sayfanın içeriği kaydırma gerektirecek kadar büyük değilse bile çalıştığını da doğruladım. –

+0

Brian - Animasyonun tamamlanmasını ve zoomin/uzaklaştırma yöntemlerini çağırmasını beklemediyseniz web görüntüsünün beyaz olup olmadığını hatırlıyor musunuz? –

0

'u uzaklaştırın. er lame WebView hata) aşağıda Android 4.1.2 için benim için ne sabittir. Not: Bunu Android 4.4.2'de test ettim ve bu hatayı düzeltmek için gerekli değildir.

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 

    final WebView myWebView = (WebView) findViewById(R.id.mywebview); 
    myWebView.setHorizontalScrollBarEnabled(false); 
    myWebView.getSettings().setJavaScriptEnabled(true); 
    myWebView.loadDataWithBaseURL("file:///android_asset/", YOUR_HTML_GOES_HERE, "text/html", "utf-8", null); 

    myWebView.setWebViewClient(new WebViewClient() 
    { 
     // overcome the ontouchstart registration bug ! 
     @Override 
     public void onPageFinished(WebView view, String url) 
     { 
      super.onPageFinished(view, url); 
      final WebView myWebView = (WebView) findViewById(R.id.mywebview); 
      myWebview.scrollTo(1, 0); 
      myWebview.scrollTo(0, 0); 
     } 
    }); 
}