¿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é).

  • Cómo inyectar un script javascript en una vista web antes de la carga html en android 7
  • Método WebView + WebChromeClient onCreateWindow no se llama a target = "_ blank"
  • Webview dentro de RecyclerView está mostrando pantalla en blanco a veces en los dispositivos de turrón solamente
  • Añadir indicador de carga / barra de progreso a Phonegap Pantalla de bienvenida de Android
  • Html de Webview Hacer clic en el botón de detección en la actividad (código java)
  • ¿Es posible obtener datos de formularios HTML en android mientras se usa webView?
  • Inicio de sesión de Twitter utilizando WebView
  • Necesita ayuda con el botón de retroactiva para volver a la vista web
  • ¿Cómo se muestran 2 vistas en 1 actividad (android)?
  • El zoom de la vista de la Web no se enfoca y el niño ve los botones
  • Presentación de texto de Android TextView vs WebView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.