Categories: Java ME | Code Examples | UI
A simple loading bar to be used on Canvas when doing long operations. You can see a live preview here: Canvas Loading bar emulator
We'll start defining some instance variables, that we'll use within our code:
public long stepInterval = 250L; public int width = 0; public int height = 0; int padding = 0; int color = 0x000000; int squares = 0; int squareWidth = 0; int currentSquares = 0; Timer stepTimer = null;
Now the bar constructor, with its arguments:
public LoadingBar(int width, int height, int padding, int squares, int color) { this.width = width; this.height = height; this.squares = squares; this.color = color; this.padding = padding; this.squareWidth = (width - padding) / (squares) - padding; }
Paint method is quite straightforward:
public void paint(Graphics g) { g.setColor(color); for(int i = 0; i < currentSquares; i++) { g.fillRect(i * (squareWidth + padding), 0, squareWidth, height); } }
Finally, the animation logic, where we'll use a Timer, and expose start() and stop() methods to control Bar animation:
public void start() { stepTimer = new Timer(); stepTimer.schedule(new TimerTask() { public void run() { step(); } }, stepInterval, stepInterval ); } public void stop() { stepTimer.cancel(); } void step() { currentSquares = (currentSquares + 1) % (squares + 1); }