Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Las imágenes se pixelan cuando se toca la pantalla

Estoy construyendo un pequeño juego en HTML / JS en Android. Me encuentro con un problema en mi HTC Desire (Android 2.2). Cuando toco la pantalla, todas las imágenes parecen pixeladas y no se pixelan cuando el toque termina.

Aquí hay una captura de pantalla:

Introduzca aquí la descripción de la imagen

A la derecha es cuando se toca la pantalla. ¿Puede alguien ayudarme a averiguar qué está causando este problema?

Notas:

  • No hay problemas durante las animaciones si no se toca la pantalla
  • No tengo este problema en mi LG 540 Android 2.1
  • Parece que las imágenes obtienen un número restringido de colores cuando se está tocando
  • Estoy usando Phonegap

  • ¿Cómo obtengo las Notificaciones Push de Parse.com trabajando en una aplicación para Android de Cordova / Phonegap?
  • Cordova-plugin-whitelist trabajando en Android pero no en iOS (Phonegap Build)
  • Phonegap - Android Cómo ajustar el diseño en modo de pantalla completa cuando el teclado virtual está visible
  • LocalStorage no es persistente con Phonegap
  • Se ha producido un error al enumerar los objetivos de Android
  • Cordova plugin bloqueo de hilo
  • ¿Cómo solucionarlo? El código de la versión de su APK debe ser superior a 2. "en la Consola para desarrolladores de Google Play.
  • Android - ¿Dónde está la base de datos SQLite almacenada
  • 3 Solutions collect form web for “Las imágenes se pixelan cuando se toca la pantalla”

    Por lo que puedo decir, ese comportamiento "pixelado" es una optimización hecha para el desplazamiento (en Froyo y arriba). Si la representación se simplifica, hace que las cosas como la animación de desplazamiento fling requieran menos procesamiento.

    Si necesita la funcionalidad completa del navegador, no estoy seguro de que pueda ayudarlo mucho.

    Dado que has dicho que estás haciendo un juego, sin embargo, podría tener una solución. Estoy esperando que su juego no necesita desplazarse (una pantalla completa), por lo que la optimización de desplazamiento no es necesario.

    He hecho una prueba sencilla con un WebView. En el grifo, como usted mencionó, la prestación se simplifica, y las cosas se ven un poco fuera. Entonces, una vez que se hace clic en algo (el WebView sabe que no se está realizando el desplazamiento), las cosas vuelven a la normalidad.

    Modifiqué mi diseño sustituyendo un WebView por FrameLayout. El FrameLayout contiene el WebView y un botón invisible (en la parte superior). Este botón agarra todos los eventos táctiles. Luego, selecciono selectivamente qué tipos de eventos WebView necesito y los paso a la WebView. Si un toque hacia abajo y retoque ocurren cerca juntos, sin movimiento en betweeen, no hay razón para desplazarse, por lo que no he visto nada de ese comportamiento "pixelado".

    Debido a que fue más sencillo para este ejemplo, he elegido detectar el evento "MotionEvent.ACTION_UP", y cuando está completo, mando un abajo primero, para que simule un clic real. Sin duda podría activar en ACTION_DOWN, pero obtendrá más de uno de esos si el usuario pasa o algo así, y quería mantener la lógica aquí simple. Puede personalizarlo como mejor le parezca, y probablemente con suficiente trabajo, incluso habilitar el desplazamiento en algunos casos. Espero que el código a continuación sea suficiente para transmitir lo que creo funciona.

    WebView wv = new WebView(this); View dummyView = new Button(this); dummyView.setBackgroundColor(0x00000000); dummyView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { MotionEvent down = MotionEvent.obtain(100, 100, MotionEvent.ACTION_DOWN, event.getX(), event.getY(), 0); wv.onTouchEvent(down); wv.onTouchEvent(event); } return false; } }); FrameLayout fl = new FrameLayout(this); fl.addView(wv); fl.addView(dummyView); topLayout.addView(fl); 

    EDIT: Si no desea editar fuente PhoneGap, puede ser capaz de hacer algo como lo siguiente para cambiar el diseño PhoneGap … No se ha probado, pero parece que debería funcionar:

     @Override public void onCreate(Bundle arg0) { super.onCreate(arg0); super.loadUrl("file:///android_asset/www/index.html"); // Get the "root" view from PhoneGap LinearLayout droidGapRoot = super.root; // Create a new "root" that we can use. final LinearLayout newRoot = new LinearLayout(this); for (int i = 0; i < droidGapRoot.getChildCount(); i++) { // Move all views from phoneGap's LinearLayout to ours. View moveMe = droidGapRoot.getChildAt(i); droidGapRoot.removeView(moveMe); newRoot.addView(moveMe); } // Create an invisible button to overlay all other views, and pass // clicks through. View dummyView = new Button(this); dummyView.setBackgroundColor(0x00000000); dummyView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // Only pass "UP" events to the specific view we care about, but // be sure to simulate a valid "DOWN" press first, so that the // click makes sense. if (event.getAction() == MotionEvent.ACTION_UP) { MotionEvent down = MotionEvent.obtain(100, 100, MotionEvent.ACTION_DOWN, event.getX(), event.getY(), 0); newRoot.onTouchEvent(down); newRoot.onTouchEvent(event); } return false; } }); // Layer the views properly FrameLayout frameLayout = new FrameLayout(this); frameLayout.addView(newRoot); frameLayout.addView(dummyView); // Add our new customized layout back to the PhoneGap "root" view. droidGapRoot.addView(frameLayout); } 

    Estoy corriendo en este mismo problema. Una cosa que puedes intentar es añadir android: hardwareAccelerated = "true" al manifiesto de tu aplicación en la etiqueta. Esto detuvo el problema para mí, sin embargo ahora toda la aplicación parece un poco más pixelada en general en mi dispositivo, por lo que esto podría no ser la mejor solución.

    Compruebe dos veces si sus imágenes tienen el mismo tamaño en CSS en píxeles que los propios archivos. Parece estar de alguna manera relacionado. Si tomo una imagen grande y la vuelvo a escalar con un CSS generado por el dispositivo, veo el problema. De lo contrario, no se presenta o no es visible. No estoy seguro de si el problema original se ha solucionado en los últimos Androids, pero todavía apoyo 2.3, así que espero que ayude.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.