This is so cute

This commit is contained in:
partisan 2025-05-14 19:00:25 +02:00
parent fafe7e2cd5
commit 64efa8c15e
2 changed files with 28 additions and 5 deletions

View file

@ -1,16 +1,22 @@
package partisan.weforge.xyz.pulse package partisan.weforge.xyz.pulse
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.os.SystemClock
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.google.android.material.button.MaterialButton import com.google.android.material.button.MaterialButton
import nl.dionsegijn.konfetti.core.Party
import nl.dionsegijn.konfetti.core.Position
import nl.dionsegijn.konfetti.core.emitter.Emitter
import nl.dionsegijn.konfetti.xml.KonfettiView
import java.util.concurrent.TimeUnit
class MainFragment : Fragment() { class MainFragment : Fragment() {
private lateinit var prefs: Preferences private lateinit var prefs: Preferences
private var lastConfettiTime = 0L
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, inflater: LayoutInflater,
@ -21,6 +27,8 @@ class MainFragment : Fragment() {
prefs = Preferences(requireContext()) prefs = Preferences(requireContext())
val toggle = view.findViewById<MaterialButton>(R.id.toggle) val toggle = view.findViewById<MaterialButton>(R.id.toggle)
val konfetti = view.findViewById<KonfettiView>(R.id.confettiView)
toggle.isCheckable = true toggle.isCheckable = true
toggle.isChecked = prefs.isServiceEnabledByUser toggle.isChecked = prefs.isServiceEnabledByUser
@ -29,10 +37,19 @@ class MainFragment : Fragment() {
val isNowChecked = toggle.isChecked val isNowChecked = toggle.isChecked
prefs.isServiceEnabledByUser = isNowChecked prefs.isServiceEnabledByUser = isNowChecked
// Log.d("ButtonState", """ if (isNowChecked && SystemClock.elapsedRealtime() - lastConfettiTime > 500) {
// User toggle: $isNowChecked konfetti.start(
// Prefs effective state (hasPerms): ${prefs.isEnabled} Party(
// """.trimIndent()) emitter = Emitter(duration = 100, TimeUnit.MILLISECONDS).perSecond(100),
speed = 30f,
maxSpeed = 40f,
damping = 0.85f,
spread = 360,
position = Position.Relative(0.5, 0.5)
)
)
lastConfettiTime = SystemClock.elapsedRealtime()
}
toggle.post { toggle.post {
toggle.jumpDrawablesToCurrentState() toggle.jumpDrawablesToCurrentState()

View file

@ -4,6 +4,12 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:gravity="center"> android:gravity="center">
<nl.dionsegijn.konfetti.xml.KonfettiView
android:id="@+id/confettiView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" />
<View <View
android:layout_width="104dp" android:layout_width="104dp"
android:layout_height="104dp" android:layout_height="104dp"