Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 31/03/14, 11:19:10
Avatar de Duqe
Duqe Duqe no está en línea
Usuario veterano
Mensajes: 668
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One
Versión de ROM: SuperFroyo 6.0
Mencionado: 0 comentarios
Tagged: 0 hilos
Rendimiento LiveWallpaper

Buenas.

Estoy trasteando con los LiveWallpapers. Se me había ocurrido crear uno con efecto parallax. Pero en vez de 1 simple imagen de fondo como los que tiene por defecto Android, crearlo con varias imágenes y que unas se desplacen más que otras al cambiar de escritorios, para darle ese efecto de profundidad. En concreto, crear 3 capas (bitmaps), y que la que está más al fondo siempre esté fija, la central se desplace un poco, y la de más "arriba" se desplace un poco más.

He seguido varios tutoriales y ejemplos, y creo que lo que tengo está bien. El problema es que como comento, el rendimiento es bastante bajo. Y eso teniendo en cuenta que lo ejecuto en un Nexus 4, y que de momento solo he creado la imagen de fondo, la cual ni siquiera se desplaza. Por eso me llama la atención que no vaya del todo fluido.

Este es el código del método draw() que se encarga de dibujar el fondo:

Código:
private void draw() {
			SurfaceHolder holder = getSurfaceHolder();
			Canvas canvas = null;
			try {
				canvas = holder.lockCanvas();
				if (canvas != null) {
					canvas.drawBitmap(bitmap1, 0, 0, null);
				}
			} finally {
				if (canvas != null) {
					holder.unlockCanvasAndPost(canvas);
				}
			}
			handler.removeCallbacks(drawRunner);
			if (visible) {
				handler.postDelayed(drawRunner, 30);
			}
		}
Como veis, es todo muy básico. Y el bitmap tiene la misma resolución que el dispositivo y de momento es simplemente un fondo con un solo color, y un círculo de otro. Nada de degradados, ni transparencias, ...

Es normal que no funcione a 60fps? Si es normal, alguna idea sobre cómo debería de plantearme el dibujado?

Gracias por adelantado.
Responder Con Cita


  #2  
Viejo 01/04/14, 10:51:59
Avatar de Duqe
Duqe Duqe no está en línea
Usuario veterano
Mensajes: 668
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One
Versión de ROM: SuperFroyo 6.0
Mencionado: 0 comentarios
Tagged: 0 hilos
Al parecer el problema viene con "lockCanvas":

http://stackoverflow.com/questions/5...as-really-slow

De cualquier modo me llama la atención esto:

HOWEVER, moving these bitmaps storage to other class (in different file, say MY_DATA), and the activity has just a reference to that new class - solves the problem.
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 17:41:12 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007