Android Open Source - YOGOSec Progress Bar






From Project

Back to project page YOGOSec.

License

The source code is released under:

GNU Lesser General Public License

If you think the Android project YOGOSec listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package YOGOSec.core.gui;
/*  w  ww  .jav  a 2 s . c  o  m*/
import YOGOSec.core.render.Render;
import YOGOSec.core.util.Rectanglef;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Texture;

/**
 * @author Aritz Lopez
 * @license Lesser GNU Public License v3 (http://www.gnu.org/licenses/lgpl.html)
 */
public class ProgressBar extends GUIComponent {

    private static final Color border = Color.BLUE, fill = Color.DARK_GRAY, progressColor = Color.LIGHT_GRAY;
    private static final int MARGIN = 2;
    private final float min, max;
    private Pixmap pixmap;
    private double progress;
    private Texture texture;

    public ProgressBar(Rectanglef bounds, float progress) {
        this(bounds, 0f, 1f, progress);
    }

    public ProgressBar(Rectanglef bounds, float min, float max, float progress) {
        super(bounds);
        if (this.getWidth() < 10) this.setWidth(10f);
        if (this.getHeight() < 10) this.setHeight(10f);
        this.updateBounds();
        this.min = min;
        this.max = max;
        this.progress = (progress + Math.abs(min)) / (max - min);
        this.pixmap = new Pixmap((int) this.getWidth(), (int) this.getHeight(), Pixmap.Format.RGBA8888);
        this.update();
    }

    private void update() {

        this.pixmap.setColor(fill);
        this.pixmap.fillRectangle(MARGIN, MARGIN, (int) (this.getWidth() - MARGIN * 2), (int) (this.getHeight() - MARGIN * 2));

        if (progress != 0) {
            this.pixmap.setColor(progressColor);
            this.pixmap.fillRectangle(MARGIN, MARGIN, (int) ((this.getWidth() - MARGIN * 2) * this.progress), (int) (this.getHeight() - MARGIN * 2));
        }

        this.pixmap.setColor(border);
        this.pixmap.fillRectangle(MARGIN, 0, (int) (this.getWidth() - MARGIN * 2), MARGIN); // Top
        this.pixmap.fillRectangle(0, MARGIN, MARGIN, (int) (this.getHeight() - MARGIN * 2)); // Left

        this.pixmap.fillRectangle(2, (int) (this.getHeight() - 2), (int) (this.getWidth() - MARGIN * 2), MARGIN); // Bottom
        this.pixmap.fillRectangle((int) (this.getWidth() - MARGIN), MARGIN, MARGIN, (int) (this.getHeight() - MARGIN * 2)); // Right

        this.pixmap.drawPixel(1, 1);
        this.pixmap.drawPixel((int) (this.getWidth() - 2), 1);
        this.pixmap.drawPixel(1, (int) (this.getHeight() - 2));
        this.pixmap.drawPixel((int) (this.getWidth() - 2), (int) (this.getHeight() - 2));

        this.pixmap.drawPixel(2, 2);
        this.pixmap.drawPixel((int) (this.getWidth() - 3), 2);
        this.pixmap.drawPixel(2, (int) (this.getHeight() - 3));
        this.pixmap.drawPixel((int) (this.getWidth() - 3), (int) (this.getHeight() - 3));

        this.texture = new Texture(this.pixmap);
    }

    public void setProgress(double progress) {
        this.progress = (progress + Math.abs(this.min)) / (this.max - this.min);
        this.progress = (this.progress < 0 ? 0 : this.progress > 1 ? 1 : this.progress);
        this.update();
    }

    @Override
    public void render(Render render) {
        render.draw(texture, this.bounds.getX(), this.bounds.getY());
    }

    @Override
    public void onGUIResized(int width, int height) {
        super.onGUIResized(width, height);
        this.pixmap = new Pixmap((int) (this.getWidth()), (int) this.getHeight(), Pixmap.Format.RGBA8888);
        this.update();
    }
}




Java Source Code List

YOGOSec.android.GameActivity.java
YOGOSec.core.Game.java
YOGOSec.core.gui.Button.java
YOGOSec.core.gui.GUIComponent.java
YOGOSec.core.gui.GUI.java
YOGOSec.core.gui.IActionListener.java
YOGOSec.core.gui.InputListener.java
YOGOSec.core.gui.ProgressBar.java
YOGOSec.core.input.Input.java
YOGOSec.core.render.Render.java
YOGOSec.core.render.YUpPixmap.java
YOGOSec.core.screens.MainMenuScreen.java
YOGOSec.core.screens.MyScreen.java
YOGOSec.core.util.Point2f.java
YOGOSec.core.util.Point2i.java
YOGOSec.core.util.Point.java
YOGOSec.core.util.Rectangle.java
YOGOSec.core.util.Rectanglef.java
YOGOSec.core.util.Rectanglei.java
YOGOSec.java.GameDesktop.java