course on Kotlin Android App Development, Resource Condition Setting

Android app development requires managing and utilizing various resources. In particular, it is essential to adjust resources conditionally based on different screen sizes, densities, languages, etc. This article will explain in detail how to set resource conditions in Android using Kotlin and provide opportunities for practical exercises with sample code.

1. What are Android Resources?

Android resources encompass all elements used in an app, including UI, strings, images, and other files. Resource management defines the appearance and behavior of the app, and efficiently managing these resources significantly impacts the app’s quality and user experience.

Types of Resources

  • Drawable: Resources that include images. They can be stored in multiple folders to support various resolutions.
  • Layout: XML format layout files that define the UI.
  • Strings: Files that contain string resources used in the application. Useful for multilingual support.
  • Colors: Resources for color definitions.

2. Importance of Setting Resource Conditions

Setting resource conditions is essential for providing an optimal user experience across various devices and situations. Android automatically selects resources based on specific conditions (e.g., screen size, dpi, language). This allows a single code base to cater to different environments.

Main Conditions

  • Screen Size: Divided into small, normal, large, xlarge, etc.
  • Screen Density: Categorized as ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi, etc.
  • Language: Resources can be adjusted to accommodate various languages for localization support.

3. How to Set Resource Conditions

In Android Studio, the method to define resources conditionally is as follows:

3.1. Resource Directory Structure

Resources generally follow this directory structure:

res/
├── drawable-hdpi/
│   └── image.png
├── drawable-mdpi/
│   └── image.png
├── values/
│   └── strings.xml
├── values-en/
│   └── strings.xml

With this directory structure, Android automatically selects the appropriate resources.

3.2. Resource Directory Example

Below is an example of setting image resources based on screen density. You just need to place the corresponding resolution image in each drawable directory.

res/
├── drawable-hdpi/
│   └── image.png // High-resolution image
├── drawable-mdpi/
│   └── image.png // Medium-resolution image
├── drawable-ldpi/
│   └── image.png // Low-resolution image

With this setup, the Android system will automatically select the appropriate image based on the device’s screen density.

3.3. String Resources

You can set up the strings.xml file for multilingual support as follows.



    App Name
    Welcome!

Save this file in the values-en folder, and the English resources should be saved in the values folder. In this case, the system will automatically select the appropriate resources based on language settings.

4. Multiple Qualification Conditions for Resource Selection

Android allows combining various qualification conditions to select resources. For instance, you can combine screen size, orientation, and language.

4.1. Example: Resource Settings Based on Screen Orientation

Different layouts can be set for portrait and landscape orientations. Define the basic layout in res/layout and define the landscape layout in res/layout-land.

res/
├── layout/
│   └── activity_main.xml // Portrait layout
├── layout-land/
│   └── activity_main.xml // Landscape layout

5. Utilizing Resources in Kotlin

There are various ways to access and utilize resources in Android apps. Below is a simple example using Kotlin.

5.1. Example of Using String Resources

Here is an example of using string resources.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val welcomeMessage = getString(R.string.welcome_message)
        Toast.makeText(this, welcomeMessage, Toast.LENGTH_LONG).show()
    }
}

5.2. Example of Using Drawable Resources

Below is an example of using drawable resources.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val imageView: ImageView = findViewById(R.id.imageView)
        imageView.setImageResource(R.drawable.image)
    }
}

6. Conclusion

Properly managing resources in Android apps is a crucial task. Using Kotlin makes this implementation easy, allowing you to set resources according to various conditions. I hope the explanations and sample code above provide a foundation for resource condition settings in Android using Kotlin. In the future, we will cover more in-depth topics and advanced techniques.

Continue to follow this series to gain more information about Android app development and make your apps great!