Atendendo a pedidos, segue o código do componente para animação de botões para LWUIT - Ginga-J.
package org.gvlabs.sbtvd.ui;
import com.sun.dtv.lwuit.Button;
import com.sun.dtv.lwuit.Graphics;
import com.sun.dtv.lwuit.Image;
/**
* Animated Button
*
* @author Thiago Galbiatti Vespa
* @version 1.0
*/
public class AnimatedButton extends Button {
private int speed = 50;
private Image[] animaImgs;
private int currentImage = 0;
private long lastInvoke;
private boolean forward = true;
private boolean backAndForth = true;
private boolean loop = true;
private boolean disableLoop = false;
/**
* Default constructor
*/
public AnimatedButton() {
}
/**
* Get array of images
* @return array of images
*/
public Image[] getAnimaImgs() {
return animaImgs;
}
/**
* Set array of images to be animated
* @param animaImgs array of images
*/
public void setAnimaImgs(Image[] animaImgs) {
this.animaImgs = animaImgs;
if (animaImgs != null && animaImgs.length > 0) {
this.setIcon(animaImgs[0]);
}
}
/**
* Get animation speed is ms
* @return animation speed
*/
public int getSpeed() {
return speed;
}
/**
* Set animation speed in ms
* @param speed animation speed
*/
public void setSpeed(int speed) {
this.speed = speed;
}
/**
* Back and Forth animation
* @return true if is a back and forth animation
*/
public boolean isBackAndForth() {
return backAndForth;
}
/**
* Set back and forth animation value
* @param backAndForth
*/
public void setBackAndForth(boolean backAndForth) {
this.backAndForth = backAndForth;
}
/**
* Is loop?
* @return true if is a loop animation
*/
public boolean isLoop() {
return loop;
}
/**
* true = loop, false = one animation
* @param loop
*/
public void setLoop(boolean loop) {
this.loop = loop;
}
public boolean animate() {
if (disableLoop)
return false;
long current = System.currentTimeMillis();
if (current - lastInvoke > speed) {
lastInvoke = current;
if (forward) {
currentImage++;
} else {
currentImage--;
}
if (currentImage >= animaImgs.length) {
if (!loop) {
disableLoop = true;
return false;
} else if (!backAndForth) {
forward = true;
currentImage = 0;
} else {
forward = false;
currentImage = animaImgs.length - 1;
}
} else if (currentImage < 0) {
forward = true;
currentImage = 0;
}
return true;
}
return false;
}
/* (non-Javadoc)
* @see com.sun.dtv.lwuit.Button#paint(com.sun.dtv.lwuit.Graphics)
*/
public void paint(Graphics g) {
g.drawImage(animaImgs[currentImage], getX(), getY());
}
}
Para utilizar é só atribuir o conjunto de imagens para o método setAnimaImgs e registrar a animação no formulário, por exemplo: form.registerAnimation(animatedButton);
Botão Animado em LWUIT – Ginga: Atendendo a pedidos, segue o código do componente para anim... http://t.co/Hab5ZsZKmG (via @thiagovespa)
Show de bola Thiago, mamão com açucar para utilizar! agora consigo aplicar imagens animadas para dar o efeito do gif animado!!!
Olá Thiago, parabéns pelo trabalho!
Estou desenvolvendo, para um TCC, uma aplicação cujo foco é a mineração de dados para tv digital, no entanto, queria fazer uma GUI bem simples usando o xletview, com um formulário. Acho que o xletview não suporta lwuit, vc sabe que bibliotecas poderiam ser usadas para criar botões, textbox e outros componentes de formulários?
Desde já muito grato!
O Xletview não tem quase nada a ver com a implementação do modelo de tv brasileira. Você utilizar ele não vai ser perda de tempo?