Resources¶
Resources should be always externalized from your application code.
Externalizing resources allows developers to provide alternative resources that support specific devices such as different languages or screen sizes. In order to provide compatibility with different platforms and configurations, you must organize resources in your project’s res/ directory, using various sub-directories that group resources by type and configuration. This ‘res’ folder should always exist, else an error will be displayed.
Resource folder organization
MyProject/
src/
com/
company/
application/
MyApplication.java
MyScreen.java
assets/
res/
icon/
icon-48.png
image/
graphic.png
layout/
main_layout.xml
string/
strings-en.xml
values/
colors.xml
dimens.xml
fonts.xml
ids.xml
For any type of resource, you can specify default and multiple alternative resources for your application:
Default resources
are those that should be used regardless of the device or when there are no alternative resources that match the current device.Alternative resources
are those that should be used with a specific device. To specify that a group of resources is for a specific device, append an appropriate configuration qualifier to the directory name.
Res.java
NeoMAD also creates a Res.java
file containing constants to identify the application’s resources.
In the source code, the resources will be accessed through methods from the ResManager
interface
(such as ResManager.getString(), ResManager.getImage(), etc.) or constructors of UI element classes
(such as TextArea(int resId), ImageLabel(int resId), etc.). All these methods take their resource
id parameter from Res.java
.
Note
The Res class is automatically generated by NeoMAD at compilation time. This means that the constants used to access resources will only be declared in the project source code once it has been compiled.