Pertemuan 6 PPB (B)
TUGAS 5
Membuat Aplikasi Kalkulator Sederhana
Nama : Tarisha Falah Basuki
NRP : 5025231043
NRP : 5025231043
Kelas : PPB (B)
Berikut langkah-langkah membuat aplikasi Kalkulator Sederhana menggunakan Android Studio:
1. Membuat Project Baru
- Buka Android Studio.
- Klik New Project.
- Pilih template Empty Activity.
2. Mengisi Konfigurasi Project
- Isi data project seperti berikut:
Name : SimpleCalculator
Package name : com.example.simplecalculator
Save location : pilih folder penyimpanan
Language : Java atau Kotlin
Minimum SDK : pilih API 24 (Android 7.0)
- Klik Finish.
- Android Studio akan membuat project dan melakukan Gradle build (tunggu sampai selesai).
3. Tambahkan UI Pada /res/layout/activity_main.xml
- Buat folder baru pada folder res dan beri nama layout.
- Klik New > Android Resource File.
- Beri nama activity_main.xml
- Berikut adalah isi lengkap dari activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:padding="16dp"
android:background="#000000"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- INPUT -->
<TextView
android:id="@+id/tvInput"
android:text=""
android:textSize="28sp"
android:gravity="end"
android:padding="16dp"
android:background="#E0E0E0"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
/>
<!-- RESULT -->
<TextView
android:id="@+id/tvResult"
android:text="0"
android:textSize="36sp"
android:textColor="#4CAF50"
android:gravity="end"
android:padding="16dp"
android:layout_marginTop="8dp"
android:background="#E0E0E0"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<!-- BUTTONS -->
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="4"
android:layout_marginTop="16dp">
<!-- Row 1 -->
<Button android:id="@+id/btnClear" android:text="C"/>
<Button android:id="@+id/btnDelete" android:text="⌫"/>
<Button android:text="%"/>
<Button android:id="@+id/btnDivide" android:text="/"/>
<!-- Row 2 -->
<Button android:id="@+id/btn7" android:text="7"/>
<Button android:id="@+id/btn8" android:text="8"/>
<Button android:id="@+id/btn9" android:text="9"/>
<Button android:id="@+id/btnMultiply" android:text="*"/>
<!-- Row 3 -->
<Button android:id="@+id/btn4" android:text="4"/>
<Button android:id="@+id/btn5" android:text="5"/>
<Button android:id="@+id/btn6" android:text="6"/>
<Button android:id="@+id/btnMinus" android:text="-"/>
<!-- Row 4 -->
<Button android:id="@+id/btn1" android:text="1"/>
<Button android:id="@+id/btn2" android:text="2"/>
<Button android:id="@+id/btn3" android:text="3"/>
<Button android:id="@+id/btnPlus" android:text="+"/>
<!-- Row 5 -->
<Button android:id="@+id/btn0" android:text="0"/>
<Button android:id="@+id/btnDot" android:text="."/>
<Button android:id="@+id/btnEqual" android:text="="/>
</GridLayout>
</LinearLayout>
4. Tambahkan Kalkulator di MainActivity.kt
Berikut adalah isi lengkap dari MainActivity.kt:
package com.example.simplecalculator
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import org.mariuszgromada.math.mxparser.Expression
class MainActivity : AppCompatActivity() {
private lateinit var tvInput: TextView
private lateinit var tvResult: TextView
private var input = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
tvInput = findViewById(R.id.tvInput)
tvResult = findViewById(R.id.tvResult)
val numberIds = listOf(
R.id.btn0, R.id.btn1, R.id.btn2, R.id.btn3,
R.id.btn4, R.id.btn5, R.id.btn6,
R.id.btn7, R.id.btn8, R.id.btn9
)
numberIds.forEach { id ->
findViewById<Button>(id).setOnClickListener {
append((it as Button).text.toString())
}
}
findViewById<Button>(R.id.btnPlus).setOnClickListener { append("+") }
findViewById<Button>(R.id.btnMinus).setOnClickListener { append("-") }
findViewById<Button>(R.id.btnMultiply).setOnClickListener { append("*") }
findViewById<Button>(R.id.btnDivide).setOnClickListener { append("/") }
findViewById<Button>(R.id.btnDot).setOnClickListener { append(".") }
// CLEAR (reset semua)
findViewById<Button>(R.id.btnClear).setOnClickListener {
input = ""
tvInput.text = ""
tvResult.text = "0"
}
// DELETE (hapus 1 karakter)
findViewById<Button>(R.id.btnDelete).setOnClickListener {
if (input.isNotEmpty()) {
input = input.dropLast(1)
tvInput.text = input
}
}
// EQUAL (hitung hasil)
findViewById<Button>(R.id.btnEqual).setOnClickListener {
calculateResult()
}
}
private fun append(value: String) {
input += value
tvInput.text = input
}
private fun calculateResult() {
try {
if (input.isEmpty()) return
val result = Expression(input).calculate()
tvResult.text = result.toString()
} catch (e: Exception) {
tvResult.text = "Error"
}
}
}
5. Tambahkan pada build.gradle.kts (module: app)
- Berikut adalah isi dari Dependencies { }
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.ui.graphics)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.compose.material3)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
debugImplementation(libs.androidx.compose.ui.tooling)
debugImplementation(libs.androidx.compose.ui.test.manifest)
implementation("androidx.core:core-ktx:1.18.0")
implementation("androidx.appcompat:appcompat:1.7.1")
implementation("com.google.android.material:material:1.13.0")
implementation("androidx.constraintlayout:constraintlayout:2.2.1")
implementation("org.mariuszgromada.math:MathParser.org-mXparser:6.1.0")
}
- Tambahkan seperti di bawah pada buildFeatures { }
buildFeatures {
compose = true
viewBinding = true
}
Lakukan run app dan berikut adalah hasilnya.
Comments
Post a Comment