Button color: GradientDrawable swap (teal/green), no tint magic

This commit is contained in:
eddy 2026-07-29 20:34:58 +02:00
commit 5a1f1da329

View file

@ -3,8 +3,7 @@ package com.eddy.atomrelay
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.content.res.ColorStateList import android.graphics.drawable.GradientDrawable
import android.graphics.drawable.Drawable
import android.os.Bundle import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
@ -31,8 +30,6 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
private lateinit var relay1Button: Button private lateinit var relay1Button: Button
private lateinit var relay2Button: Button private lateinit var relay2Button: Button
private var lastTheme: String? = null private var lastTheme: String? = null
private var originalBg1: Drawable? = null
private var originalBg2: Drawable? = null
override fun onStatusChanged(status: BleStatus) { override fun onStatusChanged(status: BleStatus) {
when (status) { when (status) {
@ -150,20 +147,25 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
private fun setupRelayButton() { private fun setupRelayButton() {
relay1Button.setOnClickListener(null) relay1Button.setOnClickListener(null)
loadButtonLabel(relay1Button, PrefsHelper.PREF_LABEL1, R.string.button_hold) 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 -> relay1Button.setOnTouchListener { _, event ->
when (event.action) { when (event.action) {
MotionEvent.ACTION_DOWN -> { MotionEvent.ACTION_DOWN -> {
manager.sendRelayCommand(0x01.toByte()) manager.sendRelayCommand(0x01.toByte())
relay1Button.backgroundTintList = accentColor relay1Button.background = pressedBg
true true
} }
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
manager.sendRelayCommand(0x00.toByte()) manager.sendRelayCommand(0x00.toByte())
relay1Button.backgroundTintList = null relay1Button.background = defaultBg
originalBg1?.let { relay1Button.background = it }
true true
} }
else -> false else -> false
@ -174,20 +176,25 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
private fun setupRelay2Button() { private fun setupRelay2Button() {
relay2Button.setOnClickListener(null) relay2Button.setOnClickListener(null)
loadButtonLabel(relay2Button, PrefsHelper.PREF_LABEL2, R.string.button_hold) 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 -> relay2Button.setOnTouchListener { _, event ->
when (event.action) { when (event.action) {
MotionEvent.ACTION_DOWN -> { MotionEvent.ACTION_DOWN -> {
manager.sendRelayCommand(0x02.toByte()) manager.sendRelayCommand(0x02.toByte())
relay2Button.backgroundTintList = accentColor relay2Button.background = pressedBg
true true
} }
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
manager.sendRelayCommand(0x03.toByte()) manager.sendRelayCommand(0x03.toByte())
relay2Button.backgroundTintList = null relay2Button.background = defaultBg
originalBg2?.let { relay2Button.background = it }
true true
} }
else -> false else -> false