From 190348bf835e17ba8a31e6bff439647932c6de0a Mon Sep 17 00:00:00 2001 From: Manash396 Date: Fri, 18 Jul 2025 10:23:22 +0530 Subject: [PATCH 1/2] Improved vibration feedback on both ACTION_DOWN and ACTION_UP --- .../opencalculator/activities/MainActivity.kt | 64 ++++++++++++++++++- 1 file changed, 62 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/darkempire78/opencalculator/activities/MainActivity.kt b/app/src/main/java/com/darkempire78/opencalculator/activities/MainActivity.kt index afe9b2ab..9125223d 100644 --- a/app/src/main/java/com/darkempire78/opencalculator/activities/MainActivity.kt +++ b/app/src/main/java/com/darkempire78/opencalculator/activities/MainActivity.kt @@ -14,6 +14,7 @@ import android.text.TextWatcher import android.util.Log import android.view.HapticFeedbackConstants import android.view.MenuItem +import android.view.MotionEvent import android.view.View import android.view.WindowManager import android.view.accessibility.AccessibilityEvent @@ -98,6 +99,7 @@ class MainActivity : AppCompatActivity() { WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON ) + // Themes val themes = Themes(this) themes.applyDayNightOverride() @@ -112,6 +114,9 @@ class MainActivity : AppCompatActivity() { view = binding.root setContentView(view) + // set buttons on touch listener to get feedback vibration on touch + setOnBottontouchlistener() + // Disable the keyboard on display EditText binding.input.showSoftInputOnFocus = false @@ -320,6 +325,61 @@ class MainActivity : AppCompatActivity() { } + private fun setOnBottontouchlistener() { + applyVibrationToKey(binding.squareButton) + applyVibrationToKey(binding.piButton) + applyVibrationToKey(binding.exponentButton) + applyVibrationToKey(binding.factorialButton) + applyVibrationToKey(binding.squareButton) + applyVibrationToKey(binding.piButton) + applyVibrationToKey(binding.exponentButton) + applyVibrationToKey(binding.factorialButton) + applyVibrationToKey(binding.degreeButton) + applyVibrationToKey(binding.sineButton) + applyVibrationToKey(binding.cosineButton) + applyVibrationToKey(binding.tangentButton) + applyVibrationToKey(binding.invButton) + applyVibrationToKey(binding.eButton) + applyVibrationToKey(binding.naturalLogarithmButton) + applyVibrationToKey(binding.logarithmButton) + binding.log2Button?.let { applyVibrationToKey(it) } + applyVibrationToKey(binding.clearButton) + applyVibrationToKey(binding.leftParenthesisButton) + applyVibrationToKey(binding.rightParenthesisButton) + applyVibrationToKey(binding.parenthesesButton) + applyVibrationToKey(binding.divideBy100Button) + applyVibrationToKey(binding.divideButton) + applyVibrationToKey(binding.sevenButton) + applyVibrationToKey(binding.eightButton) + applyVibrationToKey(binding.nineButton) + applyVibrationToKey(binding.multiplyButton) + applyVibrationToKey(binding.fourButton) + applyVibrationToKey(binding.fiveButton) + applyVibrationToKey(binding.sixButton) + applyVibrationToKey(binding.subtractButton) + applyVibrationToKey(binding.oneButton) + applyVibrationToKey(binding.twoButton) + applyVibrationToKey(binding.threeButton) + applyVibrationToKey(binding.addButton) + applyVibrationToKey(binding.zeroButton) + applyVibrationToKey(binding.pointButton) + applyVibrationToKey(binding.backspaceButton) + applyVibrationToKey(binding.equalsButton) + + + + } + + private fun applyVibrationToKey(button: View) { + button.setOnTouchListener { v, event -> + if (event.action == MotionEvent.ACTION_DOWN) { + keyVibration(v) + } + false // return false to allow normal click to continue + } + } + + // Displays a popup menu with options to insert double zeros ("00") or triple zeros ("000") into the specified EditText when the zero button is long-pressed. private fun showPopupMenu(zeroButton: Button) { val popupMenu = PopupMenu(this, zeroButton) @@ -842,8 +902,8 @@ class MainActivity : AppCompatActivity() { && (binding.input.text[endPosition].isDigit() || binding.input.text[endPosition].toString() == decimalSeparatorSymbol || binding.input.text[endPosition].toString() == groupingSeparatorSymbol)) { - endPosition += 1 - } + endPosition += 1 + } } currentNumber = binding.input.text.substring(startPosition, endPosition) } From d62fbb650bddebd8e7732a6a1698a99035249239 Mon Sep 17 00:00:00 2001 From: Manash396 Date: Mon, 22 Sep 2025 07:39:35 +0530 Subject: [PATCH 2/2] fix the issues mentioned pr comment --- .../opencalculator/activities/MainActivity.kt | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/darkempire78/opencalculator/activities/MainActivity.kt b/app/src/main/java/com/darkempire78/opencalculator/activities/MainActivity.kt index 24a8270d..d1010684 100644 --- a/app/src/main/java/com/darkempire78/opencalculator/activities/MainActivity.kt +++ b/app/src/main/java/com/darkempire78/opencalculator/activities/MainActivity.kt @@ -114,7 +114,7 @@ class MainActivity : AppCompatActivity() { setContentView(view) // set buttons on touch listener to get feedback vibration on touch - setOnBottontouchlistener() + setupButtonTouchListeners() // Disable the keyboard on display EditText binding.input.showSoftInputOnFocus = false @@ -341,11 +341,7 @@ class MainActivity : AppCompatActivity() { } } - private fun setOnBottontouchlistener() { - applyVibrationToKey(binding.squareButton) - applyVibrationToKey(binding.piButton) - applyVibrationToKey(binding.exponentButton) - applyVibrationToKey(binding.factorialButton) + private fun setupButtonTouchListeners() { applyVibrationToKey(binding.squareButton) applyVibrationToKey(binding.piButton) applyVibrationToKey(binding.exponentButton) @@ -382,8 +378,6 @@ class MainActivity : AppCompatActivity() { applyVibrationToKey(binding.backspaceButton) applyVibrationToKey(binding.equalsButton) - - } private fun applyVibrationToKey(button: View) {