lengthen Now Playing gradient animation + standardize anim durations

This commit is contained in:
Drew Weymouth
2025-04-17 08:49:10 -07:00
parent f3e1aa94f9
commit 8619857425
6 changed files with 17 additions and 12 deletions
+1 -2
View File
@@ -9,7 +9,6 @@ import (
"net/url"
"slices"
"strings"
"time"
"github.com/cenkalti/dominantcolor"
"github.com/dweymouth/supersonic/backend"
@@ -321,7 +320,7 @@ func (a *NowPlayingPage) onImageLoaded(img image.Image, err error) {
// despite not being marked as such
// TODO: if this changes, use fyne.Do
anim := canvas.NewColorRGBAAnimation(
a.background.StartColor, c, 75*time.Millisecond, func(c color.Color) {
a.background.StartColor, c, myTheme.AnimationDurationMedium, func(c color.Color) {
a.background.StartColor = c
a.background.Refresh()
})
+2 -3
View File
@@ -16,7 +16,6 @@ import (
"github.com/dweymouth/supersonic/ui/widgets"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/canvas"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/lang"
"fyne.io/fyne/v2/layout"
@@ -359,7 +358,7 @@ func NewPlaylistPageHeader(page *PlaylistPage) *PlaylistPageHeader {
// dismissal animation
searchEntry.Scroll = container.ScrollNone
searchEntry.SetPlaceHolder("")
fyne.NewAnimation(canvas.DurationShort, func(f float32) {
fyne.NewAnimation(myTheme.AnimationDurationShort, func(f float32) {
f = 1 - f
w := (200-minW)*f + minW
searchEntry.SetMinWidth(w)
@@ -375,7 +374,7 @@ func NewPlaylistPageHeader(page *PlaylistPage) *PlaylistPageHeader {
buttonRow.Objects[3] = searchEntry
searchEntry.SetMinWidth(minW)
fyne.CurrentApp().Driver().CanvasForObject(a).Focus(searchEntry)
fyne.NewAnimation(canvas.DurationShort, func(f float32) {
fyne.NewAnimation(myTheme.AnimationDurationShort, func(f float32) {
w := (200-minW)*f + minW
searchEntry.SetMinWidth(w)
// re-layout container (without unneeded full refresh)
+6
View File
@@ -10,11 +10,13 @@ import (
"path/filepath"
"slices"
"strings"
"time"
"github.com/dweymouth/supersonic/backend"
"github.com/dweymouth/supersonic/res"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/canvas"
"fyne.io/fyne/v2/theme"
)
@@ -30,6 +32,10 @@ const (
SizeNameSubSubHeadingText fyne.ThemeSizeName = "subSubHeadingText" // in between Text and SubHeadingText
SizeNameSubText fyne.ThemeSizeName = "subText" // in between Text and Caption
SizeNameSuffixText fyne.ThemeSizeName = "suffixText" // a tiny bit smaller than subText
AnimationDurationShort = canvas.DurationShort
AnimationDurationMedium = 225 * time.Millisecond
AnimationDurationLong = canvas.DurationStandard
)
var (
+2 -1
View File
@@ -12,13 +12,14 @@ import (
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
myTheme "github.com/dweymouth/supersonic/ui/theme"
"github.com/dweymouth/supersonic/ui/util"
"github.com/dweymouth/supersonic/ui/widgets"
)
const (
toastAutoDismissalTime = 3 * time.Second
toastAnimationDuration = 100 * time.Millisecond
toastAnimationDuration = myTheme.AnimationDurationShort
)
type ToastOverlay struct {
+4 -5
View File
@@ -6,7 +6,6 @@ import (
"image/color"
"image/png"
"slices"
"time"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/canvas"
@@ -200,7 +199,7 @@ func (a *coverImage) MouseIn(*desktop.MouseEvent) {
a.updateFavoriteIcon(false)
firstTick := true
a.mouseInAnim = fyne.NewAnimation(225*time.Millisecond, func(f float32) {
a.mouseInAnim = fyne.NewAnimation(myTheme.AnimationDurationMedium, func(f float32) {
a.playbtn.Hidden = false
a.favoriteButton.Hidden = !a.EnableFavorite
a.bottomPanel.Hidden = false
@@ -235,7 +234,7 @@ func (a *coverImage) MouseOut() {
a.mouseInAnim.Stop()
a.mouseInAnim = nil
}
gridViewMouseOutAnim = fyne.NewAnimation(canvas.DurationShort, func(f float32) {
gridViewMouseOutAnim = fyne.NewAnimation(myTheme.AnimationDurationShort, func(f float32) {
t := 1 - f
setPlayBtnTranslucency(t * float32(playBtnOpacity))
a.moreButton.Translucency = float64(f)
@@ -265,7 +264,7 @@ func (a *coverImage) MouseMoved(e *desktop.MouseEvent) {
return
}
if in {
fyne.NewAnimation(canvas.DurationShort, func(f float32) {
fyne.NewAnimation(myTheme.AnimationDurationShort, func(f float32) {
t := (1-playBtnOpacity)*f + playBtnOpacity
setPlayBtnTranslucency(t)
delta := playBtnHoveredSize.Subtract(playBtnSize)
@@ -273,7 +272,7 @@ func (a *coverImage) MouseMoved(e *desktop.MouseEvent) {
a.playbtn.Refresh()
}).Start()
} else {
fyne.NewAnimation(canvas.DurationShort, func(f float32) {
fyne.NewAnimation(myTheme.AnimationDurationShort, func(f float32) {
t := 1 - (1-playBtnOpacity)*f
setPlayBtnTranslucency(t)
delta := playBtnHoveredSize.Subtract(playBtnSize)
+2 -1
View File
@@ -6,6 +6,7 @@ import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/canvas"
"fyne.io/fyne/v2/widget"
myTheme "github.com/dweymouth/supersonic/ui/theme"
)
const (
@@ -41,7 +42,7 @@ func (i *ImagePopUp) Show() {
canvSize.Width/2,
canvSize.Height/2,
))
anim := fyne.NewAnimation(canvas.DurationShort, func(f float32) {
anim := fyne.NewAnimation(myTheme.AnimationDurationShort, func(f float32) {
if f == 1 {
i.Content.(*canvas.Image).ScaleMode = canvas.ImageScaleSmooth
}