diff --git a/android/app/src/main/java/com/eddy/atomrelay/MainActivity.kt b/android/app/src/main/java/com/eddy/atomrelay/MainActivity.kt index 158fd3b..5e308aa 100644 --- a/android/app/src/main/java/com/eddy/atomrelay/MainActivity.kt +++ b/android/app/src/main/java/com/eddy/atomrelay/MainActivity.kt @@ -3,8 +3,7 @@ package com.eddy.atomrelay import android.content.Intent import android.content.pm.PackageManager -import android.content.res.ColorStateList -import android.graphics.drawable.Drawable +import android.graphics.drawable.GradientDrawable import android.os.Bundle import android.os.Handler import android.os.Looper @@ -31,8 +30,6 @@ class MainActivity : AppCompatActivity(), BleCallbacks { private lateinit var relay1Button: Button private lateinit var relay2Button: Button private var lastTheme: String? = null - private var originalBg1: Drawable? = null - private var originalBg2: Drawable? = null override fun onStatusChanged(status: BleStatus) { when (status) { @@ -150,20 +147,25 @@ class MainActivity : AppCompatActivity(), BleCallbacks { private fun setupRelayButton() { relay1Button.setOnClickListener(null) loadButtonLabel(relay1Button, PrefsHelper.PREF_LABEL1, R.string.button_hold) - originalBg1 = relay1Button.background.constantState?.newDrawable() - val accentColor = ColorStateList.valueOf(ContextCompat.getColor(this, R.color.colorAccent)) + val defaultBg = GradientDrawable().apply { + setColor(ContextCompat.getColor(this@MainActivity, R.color.colorPrimary)) + cornerRadius = 8f * resources.displayMetrics.density + } + val pressedBg = GradientDrawable().apply { + setColor(ContextCompat.getColor(this@MainActivity, R.color.colorAccent)) + cornerRadius = 8f * resources.displayMetrics.density + } relay1Button.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> { manager.sendRelayCommand(0x01.toByte()) - relay1Button.backgroundTintList = accentColor + relay1Button.background = pressedBg true } MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { manager.sendRelayCommand(0x00.toByte()) - relay1Button.backgroundTintList = null - originalBg1?.let { relay1Button.background = it } + relay1Button.background = defaultBg true } else -> false @@ -174,20 +176,25 @@ class MainActivity : AppCompatActivity(), BleCallbacks { private fun setupRelay2Button() { relay2Button.setOnClickListener(null) loadButtonLabel(relay2Button, PrefsHelper.PREF_LABEL2, R.string.button_hold) - originalBg2 = relay2Button.background.constantState?.newDrawable() - val accentColor = ColorStateList.valueOf(ContextCompat.getColor(this, R.color.colorAccent)) + val defaultBg = GradientDrawable().apply { + setColor(ContextCompat.getColor(this@MainActivity, R.color.colorPrimary)) + cornerRadius = 8f * resources.displayMetrics.density + } + val pressedBg = GradientDrawable().apply { + setColor(ContextCompat.getColor(this@MainActivity, R.color.colorAccent)) + cornerRadius = 8f * resources.displayMetrics.density + } relay2Button.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> { manager.sendRelayCommand(0x02.toByte()) - relay2Button.backgroundTintList = accentColor + relay2Button.background = pressedBg true } MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { manager.sendRelayCommand(0x03.toByte()) - relay2Button.backgroundTintList = null - originalBg2?.let { relay2Button.background = it } + relay2Button.background = defaultBg true } else -> false