From 5b12ce29bdf9b91a9946166d4da0413873c61a88 Mon Sep 17 00:00:00 2001 From: Dedeo3 Date: Sat, 12 Apr 2025 04:05:15 +0700 Subject: [PATCH 01/14] improve Ui --- .../view/activity/FaceProcessorActivity.kt | 91 ++++++++++++++----- .../com/mfa/view/activity/LocationActivity.kt | 49 +++++----- .../mfa/view/activity/QRCodeScanActivity.kt | 73 +++++++++------ .../java/com/mfa/view/activity/Simpanwajah.kt | 43 ++++++++- .../app/src/main/res/values/themes.xml | 2 + 5 files changed, 179 insertions(+), 79 deletions(-) diff --git a/AndroidApps/app/src/main/java/com/mfa/view/activity/FaceProcessorActivity.kt b/AndroidApps/app/src/main/java/com/mfa/view/activity/FaceProcessorActivity.kt index 7a294fc..08d3df5 100644 --- a/AndroidApps/app/src/main/java/com/mfa/view/activity/FaceProcessorActivity.kt +++ b/AndroidApps/app/src/main/java/com/mfa/view/activity/FaceProcessorActivity.kt @@ -1,11 +1,15 @@ package com.mfa.view.activity +import android.annotation.SuppressLint import android.app.Activity import android.app.Dialog import android.content.Intent import android.content.pm.PackageManager +import android.content.res.ColorStateList +import android.content.res.Resources import android.graphics.Bitmap import android.graphics.Color +import android.graphics.Typeface import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.util.Log @@ -106,7 +110,8 @@ class FaceProcessorActivity : AppCompatActivity(), CameraManager.OnTakeImageCall showCustomDialog( title = "Pemberitahuan", message = "Mohon selesaikan proses presensi", - buttonText = "Oke" + buttonText = "Oke", + color = R.color.green_primary ) { onResume() } @@ -150,19 +155,46 @@ class FaceProcessorActivity : AppCompatActivity(), CameraManager.OnTakeImageCall } } + @SuppressLint("ResourceAsColor") override fun onTakeImageSuccess(image: Bitmap) { val addFaceBinding = DialogAddFaceBinding.inflate(layoutInflater) addFaceBinding.capturedFace.setImageBitmap(image) val dialog = AlertDialog.Builder(this) .setView(addFaceBinding.root) - .setTitle("Confirm Face") - .setPositiveButton("OK", null) - .setNegativeButton("Cancel") { d, _ -> d.dismiss() } + .setTitle("Konfirmasi wajah") + .setPositiveButton("Verifikasi", null) + .setIcon(R.drawable.logo_png) + .setNegativeButton("Batalkan") { d, _ -> d.dismiss() } .create() + dialog.setOnShowListener { val okButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE) + dialog.window?.setBackgroundDrawableResource(R.color.green_primary) + // 1. Title: Putih & Bold + dialog.findViewById(android.R.id.title)?.apply { + setTextColor(Color.WHITE) + setTypeface(typeface, Typeface.BOLD) + } + + // 2. Tombol Positif (Verifikasi): Teks putih + Background hijau + dialog.getButton(AlertDialog.BUTTON_POSITIVE)?.apply { + setTextColor(Color.WHITE) + setBackgroundColor(ContextCompat.getColor(context, R.color.teal_700)) + } + + // 3. Tombol Negatif (Batalkan): Teks putih + Background merah + dialog.getButton(AlertDialog.BUTTON_NEGATIVE)?.apply { + setTextColor(Color.WHITE) + setBackgroundColor(ContextCompat.getColor(context, R.color.red)) + } + +// // Opsional: Atur padding tombol + listOf(AlertDialog.BUTTON_POSITIVE, AlertDialog.BUTTON_NEGATIVE).forEach { buttonType -> + dialog.getButton(buttonType)?.setPadding(32.toPx(), 16.toPx(), 32.toPx(), 16.toPx()) + } + okButton.setOnClickListener { dialog.dismiss() @@ -191,6 +223,7 @@ class FaceProcessorActivity : AppCompatActivity(), CameraManager.OnTakeImageCall } dialog.show() } + fun Int.toPx(): Int = (this * Resources.getSystem().displayMetrics.density).toInt() private fun antiSpoofDetection(faceBitmap: Bitmap): Boolean { val laplaceScore: Int = fas.laplacian(faceBitmap) @@ -246,7 +279,8 @@ class FaceProcessorActivity : AppCompatActivity(), CameraManager.OnTakeImageCall showCustomDialog( title = "Hasil verifikasi wajah", message = "Selamat! Anda berhasil menyelesaikan verifikasi wajah.", - buttonText = "Lihat status presensi" + buttonText = "Lihat status presensi", + color = R.color.green_primary ) { reqFaceApi() } @@ -255,7 +289,8 @@ class FaceProcessorActivity : AppCompatActivity(), CameraManager.OnTakeImageCall showCustomDialog( title = "Hasil verifikasi wajah", message = "Maaf, kami gagal mengenali Anda. Mohon gunakan wajah Anda sendiri untuk verifikasi.", - buttonText = "Coba lagi" + buttonText = "Coba lagi", + color = R.color.red ) { onResume() } @@ -273,26 +308,32 @@ class FaceProcessorActivity : AppCompatActivity(), CameraManager.OnTakeImageCall } } - private fun showCustomDialog(title: String, message: String, buttonText: String, action: () -> Unit) { - val dialog = Dialog(this) - val dialogView: View = LayoutInflater.from(this).inflate(R.layout.custom_alert_dialog, null) - - dialog.setContentView(dialogView) - dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) - - val tvTitle = dialogView.findViewById(R.id.tvTitle) - val tvMessage = dialogView.findViewById(R.id.tvMessage) - val btnConfirm = dialogView.findViewById