# Resource manager for android resources placed in the `res` folder of your app
class ResourcesManager
# Native resources
private var android_resources: NativeResources
# The name of the app_package
private var app_package: String
private init native(res: NativeResources, app_package: String)
do
init(res.new_global_ref, app_package)
end
# Get a color from resources
fun color(name: String): Int do
sys.jni_env.push_local_frame(3)
var return_value = android_resources.get_color(android_resources.get_identifier(name.to_java_string, "color".to_java_string, app_package.to_java_string))
sys.jni_env.pop_local_frame
return return_value
end
# Get a `Bool` from resources
fun boolean(name: String): Bool do
sys.jni_env.push_local_frame(3)
var return_value = android_resources.get_boolean(android_resources.get_identifier(name.to_java_string, "bool".to_java_string, app_package.to_java_string))
sys.jni_env.pop_local_frame
return return_value
end
# Get a dimension from resources
# A dimension is specified with a number followed by a unit of measure
fun dimension(name: String): Int do
sys.jni_env.push_local_frame(3)
var return_value = android_resources.get_dimension(android_resources.get_identifier(name.to_java_string, "dimen".to_java_string, app_package.to_java_string))
sys.jni_env.pop_local_frame
return return_value
end
# Get an `Integer` from resources
fun integer(name: String): Int do
sys.jni_env.push_local_frame(3)
var return_value = android_resources.get_integer(android_resources.get_identifier(name.to_java_string, "integer".to_java_string, app_package.to_java_string))
sys.jni_env.pop_local_frame
return return_value
end
# Get a `String` from resources
fun string(name: String): String do
sys.jni_env.push_local_frame(3)
var return_value = android_resources.get_string(android_resources.get_identifier(name.to_java_string, "string".to_java_string, app_package.to_java_string)).to_s
sys.jni_env.pop_local_frame
return return_value
end
# Get a resource ID from one resource in `res/raw`folder
# you may use this to retrieve the id of a sound for example
fun raw_id(name: String): Int do
sys.jni_env.push_local_frame(3)
var return_value = android_resources.get_identifier(name.to_java_string, "raw".to_java_string, app_package.to_java_string)
sys.jni_env.pop_local_frame
return return_value
end
# Get a drawable from `res/drawable` folder
private fun drawable(name: String): NativeDrawable do
sys.jni_env.push_local_frame(3)
var return_value = android_resources.get_drawable(android_resources.get_identifier(name.to_java_string, "drawable".to_java_string, app_package.to_java_string))
sys.jni_env.pop_local_frame
return return_value
end
# Get and ID from a specific resource in `res/res_type` folder
fun other_id(name, res_type: String): Int do
sys.jni_env.push_local_frame(3)
var return_value = android_resources.get_identifier(name.to_java_string, res_type.to_java_string, app_package.to_java_string)
sys.jni_env.pop_local_frame
return return_value
end
# Deallocate global reference allocated by ResourcesManager
fun destroy do self.android_resources.delete_global_ref
end
lib/android/assets_and_resources.nit:210,1--292,3