package org.test; import loon.Screen; import loon.component.LClickButton; import loon.component.layout.HorizontalLayout; import loon.component.layout.LayoutManager; import loon.component.layout.VerticalLayout; import loon.event.GameTouch; import loon.event.LTouchArea; import loon.opengl.GLEx; import loon.utils.timer.LTimerContext; public class LayoutTest extends Screen { private LayoutManager layout; @Override public void draw(GLEx g) { } @Override public void onLoad() { // 产生四个按钮(按钮大小和位置会根据布局改变,所以此处无需设置按钮大小) final LClickButton test1 = LClickButton.make("test1"); final LClickButton test2 = LClickButton.make("test2"); final LClickButton test3 = LClickButton.make("test3"); final LClickButton test4 = LClickButton.make("test4"); // 添加按钮 add(test1, test2, test3, test4); // 设定留空大小 getRootConstraints().setPadding(50); // 单独设置下方间隔 getRootConstraints().setPaddingBottom(100); //如果不需要自动改变对象大小,可以设置禁止改变布局大小(不过,那样就请自行设定组件大小比率) //layout.setChangeSize(false); // 执行布局,布局器为水平方式 packLayout(HorizontalLayout.at()); // 构建一个触屏监听 registerTouchArea(new LTouchArea() { @Override public void onAreaTouched(Event e, float touchX, float touchY) { // 当触发屏幕点击时 if (e == Event.DOWN) { // 每次点击转换一次布局方式 if (layout instanceof HorizontalLayout) { layout = new VerticalLayout(); } else { layout = new HorizontalLayout(); } //layout.setChangeSize(false); // 执行布局(若直接packLayout,则会执行全部组件,那么back按钮也会被自动布局) layoutElements(layout, test1, test2, test3, test4); } } // 让所有区域点击都有效 @Override public boolean contains(float x, float y) { return true; } }); add(MultiScreenTest.getBackButton(this,0)); } @Override public void alter(LTimerContext timer) { } @Override public void resize(int width, int height) { } @Override public void touchDown(GameTouch e) { } @Override public void touchUp(GameTouch e) { } @Override public void touchMove(GameTouch e) { } @Override public void touchDrag(GameTouch e) { } @Override public void resume() { } @Override public void pause() { } @Override public void close() { } }