AnimatedButton.java
/*
* Copyright © 2012 Nokia Corporation. All rights reserved.
* Nokia and Nokia Connecting People are registered trademarks of Nokia Corporation.
* Oracle and Java are trademarks or registered trademarks of Oracle and/or its
* affiliates. Other product and company names mentioned herein may be trademarks
* or trade names of their respective owners.
* See LICENSE.TXT for license information.
*/
package com.nokia.example.drumkit.components;
import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.Sprite;
public class AnimatedButton
extends Button {
private long interval;
private Timer animator;
private Sprite animation;
public AnimatedButton(String unpressed_image_url, String pressed_image_url,
String disabled_image_url, long interval, Listener listener) {
super(unpressed_image_url, pressed_image_url, disabled_image_url, listener);
this.interval = interval;
this.animation = new Sprite(getPressedImage(), getWidth(), getHeight());
}
/**
* Render the button
* @param g
*/
public void paint(Graphics g) {
if (isPressed() || isSelected()) {
if (animator == null) {
startAnimation(interval);
}
animation.paint(g);
}
else {
stopAnimation();
super.paint(g);
}
}
/**
* Set the position of top left coordinate of the button
* @param x
* @param y
*/
public void setPosition(int x, int y) {
animation.setPosition(x, y);
super.setPosition(x, y);
}
/**
* Start animation
*/
private void startAnimation(long interval) {
if (animator != null) {
stopAnimation();
}
animator = new Timer();
animator.schedule(new TimerTask() {
public void run() {
animation.nextFrame();
}
}, 0, interval);
}
/**
* Stop animation
*/
private void stopAnimation() {
if (animator != null) {
animator.cancel();
animator = null;
animation.setFrame(0);
}
}
}