¿Hay alguna manera de hacer que una vista web que ejecuta android 4.0 se realice a un nivel aceptable?

Tanto en el emulador como en mi dispositivo galaxia nexus, esta sencilla aplicación de demostración tarda un total de 1000 milisegundos o más en seleccionar o deseleccionar una casilla de verificación. Quería escribir la mayoría de mi aplicación en javascript para poder reutilizar el código a través de ios / android / web, pero este es un disyuntor de acuerdo.

Aquí está mi código:

(La actividad)

package com.mycompanyname; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import android.app.Activity; import android.app.AlertDialog; import android.os.Bundle; import android.webkit.ConsoleMessage; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebSettings.RenderPriority; import android.webkit.WebView; import android.webkit.WebViewClient; import com.mycompanyname.R; public class JavascriptListViewTestActivity extends Activity { private JavascriptListViewTestActivity parent = this; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); WebChromeClient chrome = new WebChromeClient() { @Override public boolean onConsoleMessage(ConsoleMessage consoleMessage) { parent.showDialog(consoleMessage.message() + "\n" + consoleMessage.lineNumber()); return true; } }; WebViewClient client = new WebViewClient() { }; WebView webView = (WebView)findViewById(R.id.webView1); webView.setWebChromeClient(chrome); webView.setWebViewClient(client); webView.getSettings().setJavaScriptEnabled(false); webView.getSettings().setAllowFileAccess(false); webView.getSettings().setAppCacheEnabled(false); webView.getSettings().setBuiltInZoomControls(false); webView.getSettings().setDatabaseEnabled(false); webView.getSettings().setDomStorageEnabled(false); webView.getSettings().setGeolocationEnabled(false); webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false); webView.getSettings().setLightTouchEnabled(false); webView.getSettings().setLoadWithOverviewMode(false); webView.getSettings().setNavDump(false); webView.getSettings().setNeedInitialFocus(false); webView.getSettings().setPluginsEnabled(false); webView.getSettings().setRenderPriority(RenderPriority.HIGH); webView.getSettings().setSaveFormData(false); webView.getSettings().setSavePassword(false); webView.getSettings().setSupportMultipleWindows(false); webView.getSettings().setSupportZoom(false); webView.getSettings().setUseDoubleTree(false); webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); String html = readText(R.raw.listview); webView.loadData(html, "text/html", "UTF-8"); } private void showDialog(String message) { AlertDialog alert = new AlertDialog.Builder(parent).create(); alert.setMessage(message); alert.show(); } private String readText(int resourceId) { InputStream is = this.getResources().openRawResource(resourceId); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String readLine = null; StringBuffer outputBuffer = new StringBuffer(); try { while ((readLine = br.readLine()) != null) { outputBuffer.append(readLine); } return outputBuffer.toString(); } catch (Exception e) { e.printStackTrace(); return ""; } finally { // TODO: might throw - use IOUtils.close() try { is.close(); br.close(); } catch (IOException ex) { showDialog(ex.toString()); } } } } 

(El diseño xml)

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <WebView android:id="@+id/webView1" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> 

(El html cargado en la webview)

 <html> <body> <input type="checkbox" /> </body> </html> 

Me doy cuenta de que esto tiene más de un año, pero puedes intentar implementar fastclick.js: https://github.com/ftlabs/fastclick

Lo he utilizado con éxito en bastantes proyectos. Como explica la página:

… los navegadores móviles esperarán aproximadamente 300 ms desde el momento en que pulse el botón para disparar el evento de clic. La razón de esto es que el navegador está esperando para ver si realmente está realizando un doble toque.

Lo mismo ocurre con las interacciones dentro de una webview (por lo que sé).

  • ¿Existe una alternativa a NestedScrollView para su uso con un WebView?
  • Android WebView impide la recarga de la página
  • ERROR / Web Console: Uncaught Error: Demasiado tiempo pasado en el controlador de descarga
  • Los identificadores de selección no aparecen en WebView (Android 4.0-4.3)
  • ¿Cómo acceder a los activos locales desde una URL remota en Android WebView?
  • Cómo pasar un objeto Blob de javascript a Android?
  • Flash en un WebView de Android - problema de capas
  • Phonegap uso de la aplicación android cpu en el fondo
  • Presentación de texto de Android TextView vs WebView
  • ¿Cómo abrir la página HTML local en el navegador androide nativo (no en la vista web)?
  • Mostrar mensaje para conocer la ubicación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.