Pertemuan 6 PPB (B)

 

 TUGAS 5
Membuat Aplikasi Kalkulator Sederhana


Nama : Tarisha Falah Basuki
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
}

- Setelah ditambahkan, klik sync now. 

Lakukan run app dan berikut adalah hasilnya.








Comments