Android Practical.docx
Android Practical.docx
Practical : 1
Step 1: Download and Install Android Studio
1. Download Android Studio
👉 https://developer.android.com/studio
● Go to the official Android Studio website:
● When Android Studio opens, it will ask for setup preferences. Select:
o Standard Installation (Recommended for beginners).
o Click Finish to download additional SDK components.
✅
● Check that the following essential components are installed:
Practical : 2
<TextView
android:id="@+id/tv_hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World"
android:textSize="24sp"
android:textColor="#FF0000" />
</LinearLayout>
Explanation:
package com.example.helloworld;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
Explanation:
● onCreate() method sets the XML layout file (activity_main.xml) as the UI.
Expected Output:
A white screen with "Hello World" displayed in red color at the center.
Practical : 3
Step 1: Create a New Android Project
<TextView
android:id="@+id/tv_lifecycle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Activity Lifecycle Demo"
android:textSize="20sp"
android:textColor="#000000"
android:textStyle="bold"/>
</LinearLayout>
Explanation:
package com.example.activitylifecycle;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "onCreate() called");
Toast.makeText(this, "onCreate()", Toast.LENGTH_SHORT).show();
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "onStart() called");
Toast.makeText(this, "onStart()", Toast.LENGTH_SHORT).show();
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume() called");
Toast.makeText(this, "onResume()", Toast.LENGTH_SHORT).show();
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "onPause() called");
Toast.makeText(this, "onPause()", Toast.LENGTH_SHORT).show();
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "onStop() called");
Toast.makeText(this, "onStop()", Toast.LENGTH_SHORT).show();
}
@Override
protected void onRestart() {
super.onRestart();
Log.d(TAG, "onRestart() called");
Toast.makeText(this, "onRestart()", Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy() called");
Toast.makeText(this, "onDestroy()", Toast.LENGTH_SHORT).show();
}
}
Explanation:
Expected Output:
1. When the app starts:
Practical : 4
Step 1: Modify activity_main.xml (User Interface)
<EditText
android:id="@+id/et_num1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter First Number"
android:inputType="numberDecimal"
android:padding="10dp"/>
<EditText
android:id="@+id/et_num2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Second Number"
android:inputType="numberDecimal"
android:padding="10dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:paddingTop="10dp">
<Button
android:id="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:padding="10dp"
android:layout_margin="5dp"/>
<Button
android:id="@+id/btn_subtract"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-"
android:padding="10dp"
android:layout_margin="5dp"/>
<Button
android:id="@+id/btn_multiply"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="×"
android:padding="10dp"
android:layout_margin="5dp"/>
<Button
android:id="@+id/btn_divide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="÷"
android:padding="10dp"
android:layout_margin="5dp"/>
</LinearLayout>
<TextView
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Result: "
android:textSize="20sp"
android:textStyle="bold"
android:paddingTop="20dp"
android:gravity="center"/>
</LinearLayout>
Explanation:
package com.example.calculator;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize UI elements
etNum1 = findViewById(R.id.et_num1);
etNum2 = findViewById(R.id.et_num2);
tvResult = findViewById(R.id.tv_result);
btnAdd = findViewById(R.id.btn_add);
btnSubtract = findViewById(R.id.btn_subtract);
btnMultiply = findViewById(R.id.btn_multiply);
btnDivide = findViewById(R.id.btn_divide);
if (num1Str.isEmpty() || num2Str.isEmpty()) {
Toast.makeText(this, "Please enter both numbers", Toast.LENGTH_SHORT).show();
return;
}
switch (operator) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (num2 == 0) {
Toast.makeText(this, "Cannot divide by zero", Toast.LENGTH_SHORT).show();
return;
}
result = num1 / num2;
break;
}
Practical : 5
<Button
android:id="@+id/btn_explicit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go to Second Activity"
android:padding="10dp"
android:layout_marginBottom="10dp"/>
<Button
android:id="@+id/btn_implicit_web"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Open Website"
android:padding="10dp"
android:layout_marginBottom="10dp"/>
<Button
android:id="@+id/btn_implicit_call"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Make a Call"
android:padding="10dp"
android:layout_marginBottom="10dp"/>
<Button
android:id="@+id/btn_implicit_email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Send an Email"
android:padding="10dp"/>
</LinearLayout>
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize buttons
btnExplicit = findViewById(R.id.btn_explicit);
btnWeb = findViewById(R.id.btn_implicit_web);
btnCall = findViewById(R.id.btn_implicit_call);
btnEmail = findViewById(R.id.btn_implicit_email);
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Welcome to Second Activity"
android:textSize="20sp"
android:textColor="#000000"
android:textStyle="bold"/>
</LinearLayout>
package com.example.intentdemo;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
Practical : 6
Step 1: Modify AndroidManifest.xml
Make sure the MainActivity is correctly registered as the launcher activity.
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<EditText
android:id="@+id/et_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Username"
android:padding="10dp"/>
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Password"
android:inputType="textPassword"
android:padding="10dp"/>
<CheckBox
android:id="@+id/chk_remember"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Remember Me"/>
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Login"
android:padding="10dp"
android:layout_marginTop="10dp"/>
</LinearLayout>
package com.example.logindemo;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize UI elements
etUsername = findViewById(R.id.et_username);
etPassword = findViewById(R.id.et_password);
chkRemember = findViewById(R.id.chk_remember);
btnLogin = findViewById(R.id.btn_login);
<EditText
android:id="@+id/et_username_rel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Username"
android:padding="10dp"
android:layout_marginBottom="10dp"/>
<EditText
android:id="@+id/et_password_rel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Password"
android:inputType="textPassword"
android:padding="10dp"
android:layout_below="@id/et_username_rel"/>
<CheckBox
android:id="@+id/chk_remember_rel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Remember Me"
android:layout_below="@id/et_password_rel"
android:layout_marginTop="10dp"/>
<Button
android:id="@+id/btn_login_rel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Login"
android:padding="10dp"
android:layout_below="@id/chk_remember_rel"
android:layout_marginTop="10dp"/>
</RelativeLayout>
<TableRow>
<EditText
android:id="@+id/et_username_tab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Username"
android:padding="10dp"/>
</TableRow>
<TableRow>
<EditText
android:id="@+id/et_password_tab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Password"
android:inputType="textPassword"
android:padding="10dp"/>
</TableRow>
<TableRow>
<CheckBox
android:id="@+id/chk_remember_tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Remember Me"/>
</TableRow>
<TableRow>
<Button
android:id="@+id/btn_login_tab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Login"
android:padding="10dp"/>
</TableRow>
</TableLayout>
Practical : 7
Step 1: Modify activity_main.xml (UI Design)
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp">
<RadioGroup
android:id="@+id/rg_gender"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Male"/>
<RadioButton
android:id="@+id/rb_female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Female"/>
</RadioGroup>
<Spinner
android:id="@+id/spinner_country"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"/>
package com.example.registrationform;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize UI elements
etFullName = findViewById(R.id.et_fullname);
etEmail = findViewById(R.id.et_email);
etPassword = findViewById(R.id.et_password);
rgGender = findViewById(R.id.rg_gender);
spinnerCountry = findViewById(R.id.spinner_country);
chkTerms = findViewById(R.id.chk_terms);
btnRegister = findViewById(R.id.btn_register);
// Validation
if (fullName.isEmpty() || email.isEmpty() || password.isEmpty() || selectedGenderId == -1 || "Select
Country".equals(country)) {
Toast.makeText(this, "Please fill all fields correctly!", Toast.LENGTH_SHORT).show();
} else if (!isTermsAccepted) {
Toast.makeText(this, "You must accept the terms & conditions!", Toast.LENGTH_SHORT).show();
} else {
String message = "Registration Successful!\nName: " + fullName + "\nEmail: " + email + "\nGender: " +
gender + "\nCountry: " + country;
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
}
}
Practical : 8
Step 1: Modify activity_main.xml (GridLayout UI Design)
<EditText
android:id="@+id/et_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="Enter Name"
android:layout_columnSpan="2"
android:padding="10dp"/>
<EditText
android:id="@+id/et_email"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="Enter Email"
android:inputType="textEmailAddress"
android:layout_columnSpan="2"
android:padding="10dp"/>
<EditText
android:id="@+id/et_password"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="Enter Password"
android:inputType="textPassword"
android:layout_columnSpan="2"
android:padding="10dp"/>
package com.example.gridlayoutdemo;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize UI elements
etName = findViewById(R.id.et_name);
etEmail = findViewById(R.id.et_email);
etPassword = findViewById(R.id.et_password);
btnSubmit = findViewById(R.id.btn_submit);
Practical : 9
package com.example.menunavigationdemo;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_home:
Toast.makeText(this, "Home Selected", Toast.LENGTH_SHORT).show();
return true;
case R.id.menu_settings:
startActivity(new Intent(this, SettingsActivity.class));
return true;
case R.id.menu_about:
startActivity(new Intent(this, AboutActivity.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
Create Additional Activities (Settings and About)
SettingsActivity.java
package com.example.menunavigationdemo;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
package com.example.menunavigationdemo;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class AboutActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about);
}
}
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Welcome to Menu Navigation"
android:textSize="18sp"
android:gravity="center"
android:padding="20dp"/>
</LinearLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/menu_navigation"/>
</androidx.drawerlayout.widget.DrawerLayout>
Modify res/menu/menu_navigation.xml
1. Right-click on the menu folder → New → Menu Resource File → Name it menu_navigation.xml.
2. Replace the content with:
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.drawerlayout.widget.DrawerLayout;
import com.google.android.material.navigation.NavigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
drawerLayout = findViewById(R.id.drawer_layout);
toggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.open, R.string.close);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (toggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Practical : 10
Step 1: Modify activity_main.xml (Fragment Container & Buttons)
<Button
android:id="@+id/btn_fragment1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Load Fragment 1" />
<Button
android:id="@+id/btn_fragment2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Load Fragment 2" />
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#DDDDDD"/>
</LinearLayout>
Explanation:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is Fragment 1"
android:textSize="20sp"
android:textColor="#000000"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is Fragment 2"
android:textSize="20sp"
android:textColor="#FFFFFF"/>
</LinearLayout>
Explanation:
package com.example.fragmentdemo;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
package com.example.fragmentdemo;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
● Both fragments extend the Fragment class and load their respective layouts inside onCreateView().
package com.example.fragmentdemo;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnFragment1 = findViewById(R.id.btn_fragment1);
btnFragment2 = findViewById(R.id.btn_fragment2);