Open In App

Event Handling in Android

Events are the actions performed by the user in order to interact with the application, for e.g. pressing a button or touching the screen. The events are managed by the android framework in the FIFO manner i.e. First In – First Out. Handling such actions or events by performing the desired task is called Event Handling.

Overview of the input event management

For e.g. if a button is pressed then this action or event gets registered by the event listener and then the task to be performed by that button press is handled by the event handler, it can be anything like changing the color of the text on a button press or changing the text itself, etc.



Event Listeners and their respective event handlers

There are various other event listeners available which can be used for different requirements and can be found in the official documentation.

Implementation

Let us understand these concepts by an actual example. Here we will create an app with two Image Buttons where the red button turns the bottom text into red and the green button turns the text into green. A sample video is given below to get an idea about what we are going to do in this article.



Steps:

  1. Go to Android Studio IDE and create an empty application, and select the language as Java.
  2. Write the codes as given below for the given files i.e., MainActivity.java, src/main/AndroidManifest.xml, src/main/res/values/colors.xml, src/main/res/values/strings.xml, src/main/res/values/themes.xml
  3. Run the application to see the results on the emulator.

Code for MainActivity.java:




package com.example.eventhandler;
  
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
  
public class MainActivity extends AppCompatActivity {
    // defining variables of type ImageButton
    ImageButton ib1, ib2;       
      
      @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // associating the variables with respective views
        ib1 = (ImageButton)findViewById(R.id.imageButton6);  
        ib2 = (ImageButton)findViewById(R.id.imageButton7);
  
          // Event listener for red button
        ib1.setOnClickListener(new View.OnClickListener() {  
            // Event handler gets called for red button
            // as soon listener registers the click
            @Override public void onClick(View view) 
            {
                TextView tv = (TextView)findViewById(
                    R.id.textView5);
                tv.setTextColor(
                    // Changing the color of the text
                    getResources().getColor(R.color.red));   
            }
        });
        // Event listener for green button
        ib2.setOnClickListener(new View.OnClickListener() {   
            // Event handler gets called for green button 
            // as soon listener registers the click
            @Override public void onClick(View view)  
            {
                TextView tv = (TextView)findViewById(
                    R.id.textView5);
                tv.setTextColor(
                    // Changing the color of the text
                    getResources().getColor(R.color.green));  
            }
        });
    }
}

Code for src/main/AndroidManifest.xml:




<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
  
    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.EventHandler"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
  
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
  
            <meta-data
                android:name="android.app.lib_name"
                android:value="" />
        </activity>
    </application>
  
</manifest>

Code for src/main/res/values/colors.xml:




<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="purple_200">#FFBB86FC</color>
    <color name="green">#0F9D58</color>
    <color name="purple_700">#FF3700B3</color>
    <color name="teal_200">#FF03DAC5</color>
    <color name="teal_700">#FF018786</color>
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>
    <color name="red">#FF0000</color>
</resources>

Code for src/main/res/values/strings.xml:




<resources>
    <string name="app_name">GFG | First App</string>
</resources>

Code for src/main/res/values/themes.xml:




<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Theme.EventHandler" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/green</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>
</resources>

Now Simply run the application and click the red and green buttons and observe the output. 

Output:


Article Tags :