0
# Application Setup
1
2
The libGDX GWT backend provides core application initialization and lifecycle management for web deployment. The main entry point is `GwtApplication`, which must be extended to create a web-deployable libGDX application.
3
4
## Core Application Classes
5
6
### GwtApplication { .api }
7
8
```java
9
public abstract class GwtApplication implements EntryPoint, Application {
10
// Abstract methods that must be implemented
11
public abstract GwtApplicationConfiguration getConfig();
12
public abstract ApplicationListener createApplicationListener();
13
14
// Lifecycle methods
15
public void onModuleLoad();
16
17
// Core subsystem access
18
public Graphics getGraphics();
19
public Audio getAudio();
20
public Input getInput();
21
public Files getFiles();
22
public Net getNet();
23
24
// Logging
25
public void log(String tag, String message);
26
public void error(String tag, String message);
27
public void debug(String tag, String message);
28
public void setLogLevel(int logLevel);
29
public int getLogLevel();
30
31
// Preferences and storage
32
public Preferences getPreferences(String name);
33
public Clipboard getClipboard();
34
35
// Application control
36
public void postRunnable(Runnable runnable);
37
public void exit();
38
public ApplicationType getType(); // Returns ApplicationType.WebGL
39
public int getVersion();
40
41
// Memory information
42
public long getJavaHeap();
43
public long getNativeHeap();
44
public native double usedJSHeapSize();
45
46
// Browser detection
47
public static boolean isMobileDevice();
48
public static AgentInfo agentInfo();
49
50
// Canvas and preloader access
51
public String getBaseUrl();
52
public Preloader getPreloader();
53
public CanvasElement getCanvasElement();
54
55
// Loading and lifecycle listeners
56
public LoadingListener getLoadingListener();
57
public void setLoadingListener(LoadingListener loadingListener);
58
public void addLifecycleListener(LifecycleListener listener);
59
public void removeLifecycleListener(LifecycleListener listener);
60
}
61
```
62
63
### GwtApplicationConfiguration { .api }
64
65
```java
66
public class GwtApplicationConfiguration {
67
// Canvas dimensions
68
public final int width;
69
public final int height;
70
public final boolean usePhysicalPixels;
71
72
// Layout and spacing
73
public int padHorizontal = 10;
74
public int padVertical = 10;
75
76
// Audio configuration
77
public boolean disableAudio;
78
79
// Graphics settings
80
public boolean antialiasing = false;
81
public boolean stencil = false;
82
public boolean alpha = false;
83
public boolean premultipliedAlpha = false;
84
public boolean preserveDrawingBuffer = false;
85
public boolean useDebugGL = false;
86
public boolean useGL30 = false;
87
public boolean xrCompatible = false;
88
89
// Display settings
90
public OrientationLockType fullscreenOrientation;
91
public String canvasId;
92
public Panel rootPanel;
93
public TextArea log;
94
95
// Input settings
96
public boolean useAccelerometer = true;
97
public boolean useGyroscope = false;
98
99
// Browser settings
100
public boolean openURLInNewWindow = true;
101
public boolean fetchAvailableOutputDevices = false;
102
103
// Constructors
104
public GwtApplicationConfiguration();
105
public GwtApplicationConfiguration(boolean usePhysicalPixels);
106
public GwtApplicationConfiguration(int width, int height);
107
public GwtApplicationConfiguration(int width, int height, boolean usePhysicalPixels);
108
109
// Methods
110
public boolean isFixedSizeApplication();
111
}
112
```
113
114
### OrientationLockType { .api }
115
116
```java
117
public enum OrientationLockType {
118
LANDSCAPE("landscape"),
119
PORTRAIT("portrait"),
120
PORTRAIT_PRIMARY("portrait-primary"),
121
PORTRAIT_SECONDARY("portrait-secondary"),
122
LANDSCAPE_PRIMARY("landscape-primary"),
123
LANDSCAPE_SECONDARY("landscape-secondary");
124
125
private final String name;
126
127
private OrientationLockType(String name) {
128
this.name = name;
129
}
130
131
public String getName() {
132
return name;
133
}
134
}
135
```
136
137
## Inner Classes and Interfaces
138
139
### AgentInfo { .api }
140
141
```java
142
public static class AgentInfo extends JavaScriptObject {
143
public final native boolean isFirefox();
144
public final native boolean isChrome();
145
public final native boolean isSafari();
146
public final native boolean isOpera();
147
public final native boolean isIE();
148
public final native String getUserAgent();
149
}
150
```
151
152
### LoadingListener { .api }
153
154
```java
155
public interface LoadingListener {
156
void beforeSetup();
157
void afterSetup();
158
}
159
```
160
161
## Usage Examples
162
163
### Basic Application Setup
164
165
```java
166
public class MyGameGwt extends GwtApplication {
167
@Override
168
public GwtApplicationConfiguration getConfig() {
169
GwtApplicationConfiguration config = new GwtApplicationConfiguration(1024, 768);
170
config.antialiasing = true;
171
config.stencil = true;
172
return config;
173
}
174
175
@Override
176
public ApplicationListener createApplicationListener() {
177
return new MyGame();
178
}
179
}
180
```
181
182
### Full-Screen Application
183
184
```java
185
public class FullScreenGameGwt extends GwtApplication {
186
@Override
187
public GwtApplicationConfiguration getConfig() {
188
GwtApplicationConfiguration config = new GwtApplicationConfiguration(0, 0); // Use available space
189
config.fullscreenOrientation = OrientationLockType.LANDSCAPE;
190
config.antialiasing = true;
191
return config;
192
}
193
194
@Override
195
public ApplicationListener createApplicationListener() {
196
return new MyGame();
197
}
198
}
199
```
200
201
### Application with Custom Loading
202
203
```java
204
public class CustomLoadingGameGwt extends GwtApplication {
205
@Override
206
public GwtApplicationConfiguration getConfig() {
207
return new GwtApplicationConfiguration(800, 600);
208
}
209
210
@Override
211
public ApplicationListener createApplicationListener() {
212
return new MyGame();
213
}
214
215
@Override
216
public Preloader createPreloader() {
217
return new Preloader("assets.txt");
218
}
219
220
@Override
221
public LoadingListener getLoadingListener() {
222
return new LoadingListener() {
223
@Override
224
public void beforeSetup() {
225
// Custom pre-loading setup
226
}
227
228
@Override
229
public void afterSetup() {
230
// Custom post-loading setup
231
}
232
};
233
}
234
}
235
```
236
237
### Browser Detection and Device-Specific Logic
238
239
```java
240
public class AdaptiveGameGwt extends GwtApplication {
241
@Override
242
public GwtApplicationConfiguration getConfig() {
243
GwtApplicationConfiguration config;
244
245
if (GwtApplication.isMobileDevice()) {
246
config = new GwtApplicationConfiguration(0, 0); // Full screen on mobile
247
config.fullscreenOrientation = OrientationLockType.LANDSCAPE;
248
} else {
249
config = new GwtApplicationConfiguration(1024, 768);
250
}
251
252
AgentInfo info = GwtApplication.agentInfo();
253
if (info.isIE()) {
254
config.antialiasing = false; // Disable for IE compatibility
255
}
256
257
return config;
258
}
259
260
@Override
261
public ApplicationListener createApplicationListener() {
262
return new MyGame();
263
}
264
}
265
```