Spanish novato con widget

dfsantos

Member
Licensed User
Longtime User
Buenas, a ver si me podeis echar una mano
Estoy intentando hacer un widget de un reloj analogico, pero no se como pintar las agujas
¿sabeis como hacerlo?
es que no encuentro nada en la documentacion para dibujar dos lineas y luego moverlas en el widget

gracias
 

jota

Active Member
Licensed User
Longtime User
tienes que dibujar el reloj en un bitmap y luego cargar el bitmap con un timer cada segundo o cada minuto. Aunque por lo que tengo entendido la actualizacion del widgets consume mucha bateria asi que no te recomiendo actualizar cada segundo. :)
 

iliberis

Member
Licensed User
Longtime User
Un poco bestia lo de tener mil bitmaps e irlos actualizando, la verdad. Además del consumo de batería, está el consumo de espacio (no olvidemos que el widget debe instalarse en la memoria interna).

Lo normal es usar un bitmap con el reloj y luego pintar las agujas encima. Para eso, que no es muy facil, se debe tener en cuenta el angulo que ocupa cada fraccion de tiempo (segundo, minuto, hora), para poder calcular las coordenadas de fin de la aguja, ya que el inicio sera siempre el centro del bitmap. Asi que habrá que echar mano de trigonometría, para usar seno, coseno, etc. No es que sea facil, pero tampoco es para matarse. Además, es muy eficiente.
 

jota

Active Member
Licensed User
Longtime User
yo nunca he dicho que tengas que cargar mil bitmaps e irlos actualizando, yo lo que digo es que tienes que dibujar el reloj en un bitmap, si como fondo del bitmap quieres carga otro bitmap con la esfera y dibujar las agujas vale. pero cargar tantas imagenes como tenga minutos un dia es absurdo, en ese caso espero que el reloj no lleve calendario XD

lo que es impepinable es que el widget se actualiza cambiando la imagen que pogas por un nuevo bitmap y que el widget se puede actualizar por si mismo cada media hora, si necesitas hacer un reloj tienes que poner un timer cada minuto que te dibuje el nuevo bitmap.

aqui hay un ejemplo de como rotar la aguja:

http://www.b4x.com/forum/basic4android-updates-questions/6733-rotating-bitmap.html
 
Last edited:

iliberis

Member
Licensed User
Longtime User
Pues entonces lo entendí mal... y me pareció absurdo por eso. El calendario se pone con un label y listo... pero si le metes segundos al reloj imaginate los bitmaps!!! Menuda barbaridad.

Pero bueno, en tal caso se podria poner, como dices, cada media hora. Y, aun así, no veo que eso vaya a consumir muchos recursos. Más consumen los widgets que, además de reloj, ponen la información del tiempo. Actualizan cada poco tiempo, y eso se come un buen pellizco de recursos... y al final no se nota tanto.

No creo que haya muchas más formas rápidas de hacerlo... salvo usar NDK y andar dibujandolo todo. Pero creo que si no "gasta" memoria, va a consumir procesador. Quizás mucho más dibujandolo todo que cargando un bitmap. Ya esas librerias vienen bien optimizadas.
 

magarcan

Active Member
Licensed User
Longtime User
Yo he utilizado algunos widgets de hora. Que sólo se actualizan cuando lo visualizas más de un tiempo determinado.

Creo que es una forma bastante inteligente de gestionar el consumo de recursos.
 
Top