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.
- Root Layout – LinearLayout
<LinearLayoutxmlns: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"><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"><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
- Count Button
<Buttonandroid:layout_width="match_parent"android:layout_height="4dp"android:layout_weight="1"android:text="Count"android:onClick="count"android:textSize="24sp" /><Button android:layout_width="match_parent" android:layout_height="4dp" android:layout_weight="1" android:text="Count" android:onClick="count" android:textSize="24sp" /><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
- TextView – Display Counter Value
<TextViewandroid: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"/><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"/><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
- Toast Button
<Buttonandroid:layout_width="match_parent"android:layout_height="0sp"android:layout_weight="1"android:text="Toast"android:onClick="toast"android:textSize="24sp"/><Button android:layout_width="match_parent" android:layout_height="0sp" android:layout_weight="1" android:text="Toast" android:onClick="toast" android:textSize="24sp"/><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
- Package and Imports
package com.example.android_workshop;package com.example.android_workshop;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;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;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
- Defining Variables and Extending AppCompatActivity
public class MainActivity extends AppCompatActivity {TextView t1;int count = 0;public class MainActivity extends AppCompatActivity { TextView t1; int count = 0;public class MainActivity extends AppCompatActivity { TextView t1; int count = 0;
Enter fullscreen mode Exit fullscreen mode
- onCreate() Method – Initializing the UI
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_main);@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_main);@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_main);
Enter fullscreen mode Exit fullscreen mode
- Linking TextView from XML to Java
t1 = this.<TextView>findViewById(R.id.text1);t1 = this.<TextView>findViewById(R.id.text1);t1 = this.<TextView>findViewById(R.id.text1);
Enter fullscreen mode Exit fullscreen mode
- 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;});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; });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
- count() Method – Increasing the Counter
public void count(View view) {count++;t1.setText("" + count);}public void count(View view) { count++; t1.setText("" + count); }public void count(View view) { count++; t1.setText("" + count); }
Enter fullscreen mode Exit fullscreen mode
- toast() Method – Showing a Toast Message
public void toast(View view) {Toast.makeText(MainActivity.this, "Hello my dear Connections" + count,Toast.LENGTH_LONG).show();}public void toast(View view) { Toast.makeText(MainActivity.this, "Hello my dear Connections" + count, Toast.LENGTH_LONG).show(); }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.
- 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"><TextViewandroid: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"/><EditTextandroid: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"/><EditTextandroid: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"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:gravity="center"android:layout_margin="10dp"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="+"android:onClick="Pluse"android:textSize="24sp"android:gravity="center" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="-"android:onClick="Minus"android:textSize="24sp"android:gravity="center" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="*"android:onClick="Multiplication"android:textSize="24sp"android:gravity="center" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="/"android:onClick="Division"android:textSize="24sp"android:gravity="center" /></LinearLayout><TextViewandroid: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><?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><?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;@Overrideprotected 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);}}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); } }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;
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
原文链接:Hands-on Android Development: Building Apps with Java & Android Studio
暂无评论内容