Я пытаюсь сделать загрузку ProgressBar с Pixmap.
public static ProgressBar createUpProgressBar() {
Pixmap pixmap = new Pixmap(PROGRESS_BAR_WIDTH, PROGRESS_BAR_HEIGHT, Format.RGBA8888);
pixmap.setColor(Color.RED);
setUpEdges(pixmap);
Texture texture = new Texture(pixmap);
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
TextureRegionDrawable drawable = new TextureRegionDrawable(new TextureRegion(texture));
pixmap.dispose();
ProgressBarStyle progressBarStyle = new ProgressBarStyle();
progressBarStyle.background = drawable;
pixmap = new Pixmap(PROGRESS_BAR_EDGES_RADIUS * 2 + 20, PROGRESS_BAR_HEIGHT, Format.RGBA8888);
pixmap.setColor(Color.GREEN);
setUpEdges(pixmap);
texture = new Texture(pixmap);
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
drawable = new TextureRegionDrawable(new TextureRegion(texture));
pixmap.dispose();
progressBarStyle.knob = drawable;
progressBarStyle.knobBefore = drawable;
ProgressBar progressBar = new ProgressBar(0.0f, 1.0f, 0.01f, false, progressBarStyle);
progressBar.setValue(0.0f);
progressBar.setAnimateDuration(0.25f);
int x = GAME_WIDTH / 2 - PROGRESS_BAR_WIDTH / 2;
progressBar.setBounds(x, PROGRESS_BAR_Y, PROGRESS_BAR_WIDTH, PROGRESS_BAR_HEIGHT);
return progressBar;
}
private static void setUpEdges(Pixmap pixmap) {
//link to solution: https://developerover30.wordpress.com/2014/11/11/libgdx-creating-a-rounded-rectangle-pixmap/
// Pink rectangle
pixmap.fillRectangle(0, PROGRESS_BAR_EDGES_RADIUS, pixmap.getWidth(),
pixmap.getHeight() - 2 * PROGRESS_BAR_EDGES_RADIUS);
// Green rectangle
pixmap.fillRectangle(PROGRESS_BAR_EDGES_RADIUS, 0, pixmap.getWidth() - 2 * PROGRESS_BAR_EDGES_RADIUS,
pixmap.getHeight());
// Bottom-left circle
pixmap.fillCircle(PROGRESS_BAR_EDGES_RADIUS, PROGRESS_BAR_EDGES_RADIUS, PROGRESS_BAR_EDGES_RADIUS);
// Top-left circle
pixmap.fillCircle(PROGRESS_BAR_EDGES_RADIUS, pixmap.getHeight() - PROGRESS_BAR_EDGES_RADIUS,
PROGRESS_BAR_EDGES_RADIUS);
// Bottom-right circle
pixmap.fillCircle(pixmap.getWidth() - PROGRESS_BAR_EDGES_RADIUS, PROGRESS_BAR_EDGES_RADIUS,
PROGRESS_BAR_EDGES_RADIUS);
// Top-right circle
pixmap.fillCircle(pixmap.getWidth() - PROGRESS_BAR_EDGES_RADIUS, pixmap.getHeight() - PROGRESS_BAR_EDGES_RADIUS,
PROGRESS_BAR_EDGES_RADIUS);
}
}
Когда я смотрю на индикатор выполнения с 15% загрузкой, он выглядит хорошо
Но когда я смотрю на индикатор выполнения при почти полной загрузке, он выглядит неправильно
У нас правильно последнее деление вчасть B .Кажется, что часть A растягивается на одно деление на всю ширину.Я ожидаю, что каждое подразделение должно опираться друг на друга, чтобы достичь полного заполнения ProgressBar.
Может ли кто-нибудь объяснить мне, где я ошибаюсь?