Android Studio Practical
Android Studio Practical
2
Programming Resources : Android Resources: (Color, Theme,
String, Drawable, Dimension, Image).
3
Programming Activities and Fragments :Activity Life Cycle,
Activity methods, Multiple Activities, Life Cycle of fragments
and multiple fragments.
4
Programs related to different Layouts: Coordinate, Linear,
Relative, Table, Absolute, Frame, List View, Grid View.
5
Programming UI elements : Design App With UI
6
Programming menus, dialog, dialog fragments
7
Programs on Intents, Events Listeners and Adapters
9
Database Programming with SQLite
10
Programming Security and permissions
CODE:
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<[Link]
xmlns:android="[Link]
xmlns:app="[Link]
xmlns:tools="[Link]
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</[Link]>
[Link]
package [Link].practical1
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
[Link](savedInstanceState)
enableEdgeToEdge()
setContentView([Link].activity_main)
[Link](findViewById([Link])) {
v, insets ->
val systemBars =
[Link]([Link]())
insets
}
OUTPUT:
PRACTICAL 2
CODE:
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<[Link]
xmlns:android="[Link]
xmlns:app="[Link]
xmlns:tools="[Link]
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="1000px"
android:layout_height="40000px"
android:src="@drawable/img"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/ic_launcher" />
</[Link]>
[Link]
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
<resources>
<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>
</resources>
[Link]
<resources>
<item>1</item>
<item>2</item>
<item>3</item>
</string>
</resources>
[Link]
package [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
[Link](savedInstanceState)
enableEdgeToEdge()
setContentView([Link].activity_main)
[Link](findViewById([Link])) {
v, insets ->
val systemBars =
[Link]([Link]())
insets
}
OUTPUT:
PRACTICAL 3
CODE:
[Link]
package [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
Log.d(TAG, "onCreate")
✅
val btnThird = findViewById<Button>([Link])
val btnLifecycle = findViewById<Button>([Link]) //
Added
[Link] {
startActivity(Intent(this, SecondActivity::[Link]))
}
[Link] {
startActivity(Intent(this, ThirdActivity::[Link]))
}
[Link] { // ✅ Added
startActivity(Intent(this, LifecycleActivity::[Link]))
}
}
[Link]
package [Link]
import [Link]
import [Link]
[Link]
package [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link].*
import [Link]
[Link]
package [Link]
import [Link]
import [Link]
import [Link]
Activity_main.xml
<Button
android:id="@+id/btnSecond"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="Open Second Activity"/>
<Button
android:id="@+id/btnThird"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="Open Third Activity"
android:layout_marginTop="20dp"/>
</LinearLayout>
Activity_second.xml
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Second Activity is Working"
android:textSize="20sp"/>
</LinearLayout>
Activity_third.xml
<TextView
android:text="Third Activity is Working"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
Fragment_activity.xml
<LinearLayout xmlns:android="[Link]
android:gravity="center"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="First Fragment"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
Lifecycle_activity.xml
<TextView
android:text="Check Logcat for Lifecycle"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
OUTPUT:
PRACTICAL 4
CODE:
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<[Link]
xmlns:android="[Link]
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="LinearLayout"
android:textSize="20sp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="One"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Two"/>
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="RelativeLayout"
android:textSize="20sp"
android:paddingTop="16dp"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="120dp">
<Button
android:id="@+id/topBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Top"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Below"
android:layout_below="@id/topBtn"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="FrameLayout"
android:textSize="20sp"
android:paddingTop="16dp"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="120dp"
android:background="#dddddd">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bottom Text"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="On Top"
android:textSize="22sp"/>
</FrameLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TableLayout"
android:textSize="20sp"
android:paddingTop="16dp"/>
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Age"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Ravi"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="21"/>
</TableRow>
</TableLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="AbsoluteLayout (Deprecated)"
android:textSize="20sp"
android:paddingTop="16dp"/>
<AbsoluteLayout
android:layout_width="match_parent"
android:layout_height="120dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fixed Position"
android:layout_x="100dp"
android:layout_y="40dp"/>
</AbsoluteLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ListView"
android:textSize="20sp"
android:paddingTop="16dp"/>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="200dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="GridView"
android:textSize="20sp"
android:paddingTop="16dp"/>
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="200dp"
android:numColumns="3"/>
</LinearLayout>
</ScrollView>
</[Link]>
[Link]
OUTPUT:
PRACTICAL 5
CODE:
Activity_main.xml
[Link]
OUTPUT:
PRACTICAL 6
CODE:
[Link]
package [Link].prac7
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
[Link] {
showNormalDialog()
}
[Link] {
val dialog = MyDialogFragment()
[Link](supportFragmentManager, "MyDialog")
}
}
[Link].menu_dialog -> {
showNormalDialog()
true
}
[Link].menu_fragment -> {
val dialog = MyDialogFragment()
[Link](supportFragmentManager, "MyDialog")
true
}
[Link]()
}
}
[Link]
package [Link].prac7
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
return [Link](requireContext())
.setTitle("Brightness")
.setView(view)
.setPositiveButton("OK") { dialog, _ ->
[Link]()
}
.setNegativeButton("Cancel") { dialog, _ ->
[Link]()
}
.create()
}
}
Activity_main.xml
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Prac 7 - Programming Menu, Dialog & DialogFragment"
android:textSize="19sp"
android:textStyle="bold"
android:layout_marginBottom="30dp"/>
<Button
android:id="@+id/btnDialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Open Normal Dialog"
android:layout_marginBottom="20dp"/>
<Button
android:id="@+id/btnFragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Open Dialog Fragment"/>
</LinearLayout>
Dialog_brightness.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="[Link]
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp">
<CheckBox
android:id="@+id/checkAuto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Automatic brightness" />
<SeekBar
android:id="@+id/seekBrightness"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:layout_marginTop="20dp"/>
</LinearLayout>
[Link]
<resources>
<string name="app_name">prac7</string>
<string name="open_normal_dialog">Open Normal Dialog</string>
<string name="open_dialog_fragment">Open Dialog Fragment</string>
<string name="normal_dialog_title">Normal Dialog</string>
<string name="normal_dialog_message">This is a normal
AlertDialog.</string>
<string name="dialog_fragment_title">Dialog Fragment</string>
<string name="dialog_fragment_message">This dialog is from
DialogFragment.</string>
</resources>
OUTPUT:
PRACTICAL 7
CODE:
[Link]
package [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
[Link](findViewById([Link])) {
v, insets ->
val systemBars =
[Link]([Link]())
[Link]([Link], [Link], [Link],
[Link])
insets
}
[Link] {
val name = [Link]()
// 🔹 Intent Example
val intent = Intent(this, SecondActivity::[Link])
[Link]("username", name)
startActivity(intent)
}
// 🔹 Adapter Example
val listView = findViewById<ListView>([Link])
[Link] = adapter
}
}
Activity_main.xml
<TableRow>
<EditText
android:id="@+id/editTextName"
android:hint="Enter Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</TableRow>
<TableRow>
<Button
android:id="@+id/buttonClick"
android:text="Send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</TableRow>
<TableRow>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="200dp"/>
</TableRow>
</TableLayout>
[Link]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:id="@+id/textViewResult"
android:textSize="22sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
OUTPUT:
Practical 8
CODE:
[Link]
package [Link].prac8
import [Link]
import [Link]
activity_main.xml
</[Link]>
[Link]
<resources>
<style name="Theme.Prac8" parent="[Link]">
<item name="colorPrimary">#1976D2</item>
<item name="colorPrimaryDark">#1565C0</item>
<item name="colorAccent">#1976D2</item>
</style>
</resources>
OUTPUT:
PRACTICAL 9
CODE:
[Link]
?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textStyle="bold"
android:layout_marginBottom="20dp"/>
<EditText
android:id="@+id/etId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="User ID"
android:inputType="number"/>
<EditText
android:id="@+id/etName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="User Name"/>
<EditText
android:id="@+id/etAge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="User Age"
android:inputType="number"
android:layout_marginBottom="10dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btnAdd"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="ADD"/>
<Button
android:id="@+id/btnDelete"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="DELETE"/>
<Button
android:id="@+id/btnShow"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="SHOW ALL"/>
</LinearLayout>
<TextView
android:id="@+id/tvCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fetched 0 users"
android:layout_marginTop="10dp"/>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
[Link]
package [Link].prac9
import [Link]
import [Link].*
import [Link]
[Link](savedInstanceState)
setContentView([Link].activity_main)
db = DatabaseHelper(this)
[Link] {
val id = [Link]().toInt()
else
[Link] {
val id = [Link]().toInt()
if ([Link](id))
else
[Link] {
[Link] = adapter
}
[Link]
package [Link].prac9
import [Link]
import [Link]
import [Link]
import [Link]
name TEXT,
age INTEGER
"""
db?.execSQL(createTable)
onCreate(db)
val db = writableDatabase
val values = ContentValues()
[Link]("id", id)
[Link]("name", name)
[Link]("age", age)
val db = writableDatabase
val db = readableDatabase
if ([Link]()) {
do {
val id = [Link](0)
} while ([Link]())
[Link]()
return list } }
OUTPUT:
PRACTICAL 10
CODE:
[Link]
package [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
[Link] {
if ([Link].SDK_INT >= Build.VERSION_CODES.M) {
[Link]()
}
}
}
if (isPermissionsGranted) {
toast("Permissions granted.")
} else {
toast("Permissions denied.")
}
}
}
}
// Toast extension
fun [Link](message: String) {
[Link](this, message, Toast.LENGTH_SHORT).show()
}
[Link]
package [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
class ManagePermissions(
private val activity: Activity,
private val list: List<String>,
private val code: Int
) {
fun checkPermissions() {
if (!arePermissionsGranted()) {
showAlert()
} else {
[Link]("Permissions already granted.")
}
}
fun processPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
): Boolean {
[Link]
<application
android:allowBackup="true"
android:label="@string/app_name"
android:theme="@style/[Link]">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="[Link]"/>
<category android:name="[Link]"/>
</intent-filter>
</activity>
</application>
</manifest>
[Link](:app)
plugins {
alias([Link])
alias([Link])
}
android {
namespace = "[Link]"
compileSdk = 36
defaultConfig {
applicationId = "[Link]"
minSdk = 24
targetSdk = 36
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "[Link]"
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("[Link]"),
"[Link]"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}
}
dependencies {
implementation([Link])
implementation([Link])
implementation([Link])
implementation([Link])
implementation([Link])
testImplementation([Link])
androidTestImplementation([Link])
androidTestImplementation([Link])
}
OUTPUT:
PRACTICAL 11
AIM: Programming Network Communications and Services (JSON)
CODE:
[Link]
package [Link].prac11
import [Link]
import [Link]
interface ApiService {
@GET(".")
fun getFeeds(): Call<String>
}
[Link]
package [Link].prac11
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
class RecyclerAdapter : [Link]<[Link]>() {
private var list = ArrayList<String>()
fun setItems(newList: ArrayList<String>) {
list = newList
notifyDataSetChanged()
}
override fun getItemCount() = [Link]
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int):
ViewHolder {
val view = [Link]([Link])
.inflate([Link].simple_list_item_1, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
[Link] = list[position]
}
class ViewHolder(itemView: View) : [Link](itemView) {
val textView: TextView = [Link]([Link].text1)
}
}
[Link]
package [Link].prac11
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import [Link]
import retrofit2.*
import [Link]
import [Link]
import [Link]
class MainActivity : AppCompatActivity() {
private lateinit var recyclerView: RecyclerView
private lateinit var imageView: ImageView
private val list = ArrayList<String>()
private val adapter = RecyclerAdapter()
private val retrofit = [Link]()
.baseUrl("[Link]
.addConverterFactory([Link]())
.client(OkHttpClient())
.build()
private val broadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val noConnection = [Link](
ConnectivityManager.EXTRA_NO_CONNECTIVITY, false
)
if (noConnection) disconnected()
else connected()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
[Link](savedInstanceState)
setContentView([Link].activity_main)
recyclerView = findViewById([Link])
imageView = findViewById([Link])
[Link] = LinearLayoutManager(this)
[Link] = adapter
}
override fun onStart() {
[Link]()
registerReceiver(
broadcastReceiver,
IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)
)
}
override fun onStop() {
[Link]()
unregisterReceiver(broadcastReceiver)
}
private fun disconnected() {
[Link] = [Link]
[Link] = [Link]
}
private fun connected() {
[Link] = [Link]
[Link] = [Link]
fetchFeeds()
}
private fun fetchFeeds() {
[Link](ApiService::[Link])
.getFeeds()
.enqueue(object : Callback<String> {
override fun onFailure(call: Call<String>, t: Throwable) {
Log.e("API_ERROR", [Link] ?: "Unknown error")
}
override fun onResponse(call: Call<String>, response:
Response<String>) {
[Link]()?.let { parseTitles(it) }
}
})
}
private fun parseTitles(json: String) {
val jsonObject = JSONObject(json).getJSONObject("data")
val children = [Link]("children")
[Link]()
for (i in 0 until [Link]()) {
val title = [Link](i)
.getJSONObject("data")
.getString("title")
[Link](title)
}
[Link](list)
}
}
[Link]
<manifest xmlns:android="[Link]
<uses-permission android:name="[Link]"/>
<uses-permission android:name="[Link].ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:theme="@style/[Link]">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="[Link]"/>
<category android:name="[Link]"/>
</intent-filter>
</activity>
</application>
</manifest>
<?xml version="1.0" encoding="utf-8"?>
<[Link]
xmlns:android="[Link]
xmlns:app="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent">
<[Link]
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/no_internet_connection"
android:visibility="gone"/>
</[Link]>
OUTPUT:
When Internet is on: