DEV Community

Cover image for Hands-on Android Development: Building Apps with Java & Android Studio
MANOJRATNA DUGGIRALA
MANOJRATNA DUGGIRALA

Posted on

2

Hands-on Android Development: Building Apps with Java & Android Studio

What is Android Studio?
Android Studio is the official Integrated Development Environment (IDE) for Android app development, built by Google. It provides developers with a powerful and flexible environment to design, develop, test, and debug Android applications efficiently.

Key Features of Android Studio:
✅ Intelligent Code Editor: It supports Java, Kotlin, and C++, offering features like code completion, refactoring, and real-time error checking.

✅ Layout Editor: A drag-and-drop UI designer that helps developers design app interfaces visually without writing XML manually.

✅ Gradle Build System: Automates and optimizes app building, making it easier to manage dependencies and configurations.

✅ Emulator for Testing: Provides a virtual Android device to test applications without needing a physical phone.

✅ APK Analyzer: Helps inspect the app’s APK file size and resources to optimize performance.

✅ Version Control Integration: Supports Git and other version control tools for collaborative development.

✅ Real-time Performance Profiler: Monitors CPU, memory, and network usage to optimize app performance.

Why Developers Love Android Studio?
User-friendly UI with a sleek and intuitive interface.
Deep integration with Google Services, including Firebase and Google Play.
Regular updates with the latest Android features and improvements.
Cross-platform support for Wear OS, Android TV, and more.
Android Studio is the ultimate toolkit for any developer looking to create high-performance Android applications!

In this Workshop, I Have Developed 4 Applications, and here is a detailed Overview of Every Application

1.Simple Counter App

This XML layout defines a simple Tap Counter App UI using a LinearLayout, two Button elements, and a TextView. Let’s break it down step by step.

  1. Root Layout - LinearLayout
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_margin="20sp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="10"
    android:orientation="vertical"
    tools:context=".MainActivity">

Enter fullscreen mode Exit fullscreen mode
  1. Count Button
<Button
    android:layout_width="match_parent"
    android:layout_height="4dp"
    android:layout_weight="1"
    android:text="Count"
    android:onClick="count"
    android:textSize="24sp" />

Enter fullscreen mode Exit fullscreen mode
  1. TextView - Display Counter Value
<TextView
    android:id="@+id/text1"
    android:layout_width="match_parent"
    android:layout_height="0sp"
    android:layout_weight="8"
    android:text="0"
    android:gravity="center"
    android:textSize="200sp"/>

Enter fullscreen mode Exit fullscreen mode
  1. Toast Button
<Button
    android:layout_width="match_parent"
    android:layout_height="0sp"
    android:layout_weight="1"
    android:text="Toast"
    android:onClick="toast"
    android:textSize="24sp"/>

Enter fullscreen mode Exit fullscreen mode

MainActivity.java File

  1. Package and Imports
package com.example.android_workshop;

Enter fullscreen mode Exit fullscreen mode

This defines the package name of APP

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

Enter fullscreen mode Exit fullscreen mode
  1. Defining Variables and Extending AppCompatActivity
public class MainActivity extends AppCompatActivity {
    TextView t1;
    int count = 0;

Enter fullscreen mode Exit fullscreen mode
  1. onCreate() Method - Initializing the UI
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    EdgeToEdge.enable(this);
    setContentView(R.layout.activity_main);

Enter fullscreen mode Exit fullscreen mode
  1. Linking TextView from XML to Java
    t1 = this.<TextView>findViewById(R.id.text1);

Enter fullscreen mode Exit fullscreen mode
  1. Handling Window Insets (Edge-to-Edge UI)
    ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
        Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
        v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
        return insets;
    });

Enter fullscreen mode Exit fullscreen mode
  1. count() Method - Increasing the Counter
public void count(View view) {
    count++;
    t1.setText("" + count);
}

Enter fullscreen mode Exit fullscreen mode
  1. toast() Method - Showing a Toast Message
public void toast(View view) {
    Toast.makeText(MainActivity.this, "Hello my dear Connections" + count,
            Toast.LENGTH_LONG).show();
}

Enter fullscreen mode Exit fullscreen mode

How Does the App Works?
1️⃣ Pressing the "Count" button increases the counter and updates the TextView.
2️⃣ Pressing the "Toast" button displays a message showing the current count.

Image description

  1. Simple Calculator App

This XML file defines the UI for a simple calculator app in Android using LinearLayout.

Overview:

  • Dark Theme (android:background="#000") for a stylish look.
  • Title (TextView): Displays "Calculator" in red text.
  • Two Input Fields (EditText): Allow users to enter two numbers.
  • Four Buttons (Button): Perform addition (+), subtraction (-), multiplication (*), and division (/).
  • Result Display (TextView): Shows the output after a calculation.

Next step? Implement logic in MainActivity.java to perform calculations when buttons are clicked!

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:orientation="vertical"
    android:background="#000"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Calculator"
        android:textSize="24sp"
        android:textColor="@color/design_default_color_error"
        android:layout_margin="20sp"
        android:gravity="center"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/edit1"
        android:hint="Enter First Value "
        android:textSize="24sp"
        android:layout_margin="10sp"
        android:textColor="@color/design_default_color_error"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/edit2"
        android:hint="Enter Second Value "
        android:textSize="24sp"
        android:layout_margin="10sp"
        android:textColor="@color/design_default_color_error"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center"
        android:layout_margin="10dp">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="+"
        android:onClick="Pluse"
        android:textSize="24sp"
        android:gravity="center" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="-"
        android:onClick="Minus"
        android:textSize="24sp"
        android:gravity="center" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="*"
        android:onClick="Multiplication"
        android:textSize="24sp"
        android:gravity="center" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="/"
        android:onClick="Division"
        android:textSize="24sp"
        android:gravity="center" />


</LinearLayout>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/text1"
        android:text="Result"
        android:textSize="24sp"
        android:layout_margin="30sp"
        android:gravity="center"/>
</LinearLayout>

Enter fullscreen mode Exit fullscreen mode

This Java class defines the logic for a simple calculator app in Android. It handles basic arithmetic operations (+, -, *, /) based on user input.

Key Highlights:
UI Elements:
EditText e1, e2; → Input fields for user-entered numbers.
TextView t1; → Displays the result.
Arithmetic Operations:
Addition (Pluse) – Adds two numbers.
Subtraction (Minus) – Subtracts second number from the first.
Multiplication (Multiplication) – Multiplies two numbers.
Division (Division) – Divides first number by second.
EdgeToEdge & Insets Handling: Ensures UI adapts to system bars.
Event Handling: Click events trigger calculations when users press buttons.
💡 Possible Improvements:
✔️ Handle division by zero to prevent app crashes.
✔️ Use try-catch to prevent errors when fields are empty.

Next step? Improve UI and add more features like clear/reset buttons!

package com.example.simplecaluclator;

import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity {
    EditText e1,e2;
    TextView t1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        e1=this.<EditText>findViewById(R.id.edit1);
        e2=this.<EditText>findViewById(R.id.edit2);
        t1=this.<TextView>findViewById(R.id.text1);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }

    public void Pluse(View view) {
        int a,b,c;
        a=Integer.parseInt(e1.getText().toString());
        b=Integer.parseInt(e2.getText().toString());
        c=a+b;
        t1.setText(""+c);
    }

    public void Minus(View view) {
        int a,b,c;
        a=Integer.parseInt(e1.getText().toString());
        b=Integer.parseInt(e2.getText().toString());
        c=a-b;
        t1.setText(""+c);
    }

    public void Multiplication(View view) {
        int a,b,c;
        a=Integer.parseInt(e1.getText().toString());
        b=Integer.parseInt(e2.getText().toString());
        c=a*b;
        t1.setText(""+c);
    }

    public void Division(View view) {
        int a,b,c;
        a=Integer.parseInt(e1.getText().toString());
        b=Integer.parseInt(e2.getText().toString());
        c=a/b;
        t1.setText(""+c);
    }
}
Enter fullscreen mode Exit fullscreen mode

And This is How it Works;

Image description

During my Android Development Workshop, I explored and built some amazing applications that truly enhanced my skills. Here are my top projects:

✅ 📱 Simple Calculator App – A clean, functional UI with basic arithmetic operations.
✅ 🗣️ Text-to-Speech App – Convert text into speech with a simple click!
✅ 🔀 Intent Application – Seamlessly navigate between activities in Android apps.

These projects gave me hands-on experience with Java & Android Studio, and I loved the process of bringing ideas to life.

👀 More details? I’ll be sharing an in-depth blog soon. Stay tuned!

🔗 Let's connect on LinkedIn! Feel free to DM me to discuss Android development and more.

AndroidDevelopment #AndroidStudio #Java #DevCommunity

Neon image

Build better on Postgres with AI-Assisted Development Practices

Compare top AI coding tools like Cursor and Windsurf with Neon's database integration. Generate synthetic data and manage databases with natural language.

Read more →

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Explore a trove of insights in this engaging article, celebrated within our welcoming DEV Community. Developers from every background are invited to join and enhance our shared wisdom.

A genuine "thank you" can truly uplift someone’s day. Feel free to express your gratitude in the comments below!

On DEV, our collective exchange of knowledge lightens the road ahead and strengthens our community bonds. Found something valuable here? A small thank you to the author can make a big difference.

Okay