Canvas.drawBitmap () tarda más tiempo en dibujar el mapa de bits por primera vez mientras que el mosaico del mapa de bits
Estoy utilizando canvas.drawBitmap (Bitmap, src, dst, null) para la animación. Estoy utilizando 1 imágenes de mosaico para la animación, cada imagen de mosaico que contiene más de 100 imágenes para hacer la animación. He puesto onclickListner para iniciar la animación. ¿Cómo puedo tener una respuesta instantánea para animaciones en onClick?
He utilizado la lógica para la animación según el siguiente enlace. Http://warriormill.com/2009/10/adroid-game-development-part-1-gameloop-sprites/
- Error de OutOfMemory aunque la memoria libre está disponible
- Convertir Bitmap en la memoria a Bitmap con Bitmap.Config.RGB_565
- Cómo convertir un LinearLayout en imagen?
- Convertir texto de cadena en mapa de bits
- Cómo convertir un mapa de bits en Drawable en android?
@Override public void draw(Canvas canvas) { try { FrameInfo frameinfo= animations.get(currentAnimation).sequence.get(currentFrame); Rect rclip = frameinfo.rect; Rect dest = new Rect(this.getXpos(), getYpos(), getXpos() + (rclip.right - rclip.left), getYpos() + (rclip.bottom - rclip.top)); if(cf!=null) { //color filter code here } canvas.drawBitmap(tileSheet, rclip, dest, null); update(); //after drawing update the frame counter } catch (Exception e) { Log.e("ERROR", "ERROR IN SPRITE TILE CODE:"+e.toString()+e.getStackTrace().toString()); } }
- Bitmap.Config.HARDWARE vs Bitmap.Config.RGB_565
- View.getDrawingCache () sólo funciona una vez
- Cambiar la profundidad de bits de Bitmap
- BitmapFactory.decodeFile devuelve null
- Almacenar imagen de mapa de bits en tarjeta SD en Android
- Cómo convertir Bitmap Object a Image Object y viceversa en android 'java'
- Android cambia el color de ImageView / Bitmap
- Java.lang.OutOfMemoryError - BitmapFactory.decode (strPath)
La carga de recursos requiere mucho tiempo (se comprimen dentro de su APK ), tanto que debe cargarlos previamente y no cargarlos justo a tiempo. El método draw()
es el último lugar en el que se está realizando cualquier manejo de recursos just-in-time. También debería estar haciendo eso en segundo plano, para evitar problemas de ANR. ¡Una implementación AsyncTask
funciona muy bien! También necesitará ser muy cuidadoso al igualar DPI, o drawBitmap()
escalará sus mapas de bits, lo que degradará notablemente su velocidad de fotogramas. Si tiene la habilidad, utilice OpenGL con mapeo de textura 2D.