Fix button background restore: save/restore original Drawable instead of tint list null -> gray -> teal → grijs blijft grijs na loslaten

This commit is contained in:
eddy 2026-07-29 20:29:30 +02:00
commit 817f9a0602
6 changed files with 872 additions and 6 deletions

View file

@ -4,6 +4,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.os.Bundle
import android.os.Handler
import android.os.Looper
@ -30,8 +31,8 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
private lateinit var relay1Button: Button
private lateinit var relay2Button: Button
private var lastTheme: String? = null
private var originalTint1: ColorStateList? = null
private var originalTint2: ColorStateList? = null
private var originalBg1: Drawable? = null
private var originalBg2: Drawable? = null
override fun onStatusChanged(status: BleStatus) {
when (status) {
@ -149,7 +150,7 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
private fun setupRelayButton() {
relay1Button.setOnClickListener(null)
loadButtonLabel(relay1Button, PrefsHelper.PREF_LABEL1, R.string.button_hold)
originalTint1 = relay1Button.backgroundTintList
originalBg1 = relay1Button.background.constantState?.newDrawable()
val accentColor = ColorStateList.valueOf(ContextCompat.getColor(this, R.color.colorAccent))
relay1Button.setOnTouchListener { _, event ->
@ -161,7 +162,8 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
}
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
manager.sendRelayCommand(0x00.toByte())
relay1Button.backgroundTintList = originalTint1
relay1Button.backgroundTintList = null
originalBg1?.let { relay1Button.background = it }
true
}
else -> false
@ -172,7 +174,7 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
private fun setupRelay2Button() {
relay2Button.setOnClickListener(null)
loadButtonLabel(relay2Button, PrefsHelper.PREF_LABEL2, R.string.button_hold)
originalTint2 = relay2Button.backgroundTintList
originalBg2 = relay2Button.background.constantState?.newDrawable()
val accentColor = ColorStateList.valueOf(ContextCompat.getColor(this, R.color.colorAccent))
relay2Button.setOnTouchListener { _, event ->
@ -184,7 +186,8 @@ class MainActivity : AppCompatActivity(), BleCallbacks {
}
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
manager.sendRelayCommand(0x03.toByte())
relay2Button.backgroundTintList = originalTint2
relay2Button.backgroundTintList = null
originalBg2?.let { relay2Button.background = it }
true
}
else -> false