Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal: Remove Button Tilt #242

Closed
kikisaints opened this issue Jan 29, 2019 · 60 comments
Closed

Proposal: Remove Button Tilt #242

kikisaints opened this issue Jan 29, 2019 · 60 comments
Assignees
Labels
feature proposal New feature proposal team-Controls Issue for the Controls team

Comments

@kikisaints
Copy link

kikisaints commented Jan 29, 2019

Proposal: Remove Button Tilt

Summary

Remove the Button tilt animation in the control's default template.

Rationale

Internal analysis of first party and third party apps have shown that the majority of re-templates for button are made simply to remove the button tilt behavior. In a large study of our internal apps - which consisted of: calculator, alarms, camera, settings, messaging, photos, voice recorder - 65% of them had re-templated buttons and all had removed the tilt - even on buttons that were not altered in any other way besides the animation removal.
The utility apps in many ways are an example of default design system at work, however these apps are opting out of the tilt animation as they don't feel it add anything to their apps' overall experience.

Re-templating can incur a lot of extra overhead for a developer when they have to take ownership of a control that they largely do not wish to maintain outside of this one animation change. Not to mention the fact that re-templated controls add-up in terms of performance on load.

@kikisaints kikisaints added the feature proposal New feature proposal label Jan 29, 2019
@mrlacey
Copy link
Contributor

mrlacey commented Jan 29, 2019

Is there any knowledge of why the tilt is being removed? Is it just a developer preference?
Is there any similarity between the apps that remove it and those that don't? Is it just one designer/team who prefers to see it removed?
Why was the tilt originally added to the default template?

"notable study of internal apps"
???

Has there been any analysis of apps in the store?

Just because 46% of a small sample do something isn't reason on its own to change the default. Is it?

@kikisaints
Copy link
Author

kikisaints commented Jan 29, 2019

Is there any knowledge of why the tilt is being removed? Is it just a developer preference?

As far as the knowledge to why tilt is being removed - it's mostly because of both a developer and a designer preference. In many cases these design choices are made to imitate their web versions. Of which many buttons are more "flat" and don't involve animations.

Is there any similarity between the apps that remove it and those that don't? Is it just one designer/team who prefers to see it removed?

Apps that do not remove tilt tend to have a less branded experience.

Why was the tilt originally added to the default template?

It was originally added as a cosmetic statement for our design system at the time.

Has there been any analysis of apps in the store?

Just because 46% of a small sample do something isn't reason on its own to change the default. Is it?

The analysis was done on apps in the store. I pulled out a small example for the sake of keeping the rational section concise - that one app itself had re-templated buttons for the sole purpose of removing tilt and had done so to 46% of the buttons in their app. This is a pattern we've seen elsewhere, though.

The same study also looked at our "utility" apps - which consist of: calculator, alarms, camera, settings, messaging, photos, voice recorder - of which 65% of them had re-templated buttons and all removed the tilt. Aside from that, the only additional changes made to the template were color alterations. However, this study was done before the introduction of Lightweight styling so availability to more easily customize colors was limited.

I have also personally conducted sit-downs with our internal teams about the reasoning to why they removed tilt and most responded with either it did not fit their brand, or design did not want it.

That being said, it could be that our internal reviews do not reflect what the community and our general developer base wants. Hence the desire to proposal a removal to everyone for debate.

Edit: Added more info from the study mentioned here to the main feature proposal post.

@mdtauk
Copy link
Contributor

mdtauk commented Jan 30, 2019

Tilt first appeared in the Windows Phone UI, and came about because of the IRIS UI they used in that, which was in 3D space, so tilt and tile flipping all worked with a scene camera.

There were tutorials at the time for devs to implement the same tilting in their XAML silverlight apps.

I guess it was some time in Windows 8 or early Windows 10 that they introduced theme animations to WinRT.

Rather than remove the effect, you could always add a property to override the effect on Pressed state

@JustinXinLiu
Copy link

I have been a big fan of the tilt effect since the Windows Phone days. When done right (e.g. dribbble & Timeline design), it just feels so alive and futuristic.

However, I no longer use it on buttons in any of my new projects. Here's why:

  1. The current tilt animation feels sluggish and disconnected. The text within the button even gets blurry during the animation. The overall experience just isn't great.

  2. Tilt doesn't make much sense on circular icon buttons, and I want all my buttons to have a consistent interaction effect (e.g. I use scale most of the time).

  3. Given that controls are more compact than ever, tilt simply doesn't give me the 2.5D feel when the button is small.

Having said this, I think it's probably much safer to disable it by default, but offer an option to enable it. After all, just like the ripple effect in Material Design, it does remind people that this design comes from Windows, which to me is a good thing.

@jevansaks
Copy link
Member

Is the proposal to just remove tilt?

I was under the impression design wanted to refresh the animation -- do away with tilt but still have some kind of press effect? We've talked about removing tilt for a while but we never did it because there wasn't a proposal to replace it with and it feels worse to remove it and have nothing (even though it feels dated as other commenters mentioned).

@mdtauk
Copy link
Contributor

mdtauk commented Jan 30, 2019

If Buttons are going to be given depth and a shadow - the tilt effect would ruin that illusion. I guess Microsoft Design internally have plans which are not discussed publically.

@kikisaints
Copy link
Author

kikisaints commented Jan 30, 2019

Is the proposal to just remove tilt?

I was under the impression design wanted to refresh the animation -- do away with tilt but still have >some kind of press effect? We've talked about removing tilt for a while but we never did it because >there wasn't a proposal to replace it with and it feels worse to remove it and have nothing (even >though it feels dated as other commenters mentioned).

Yes the proposal is to simply remove it. Last we spoke to design they had some plans around a different animation, but nothing concrete. They did agree that it needed to be removed altogether because of the outdated-ness of it's appearance. However, there was no better solution proposed since, so we've let the animation sit.

Another way/alternate solution we could do, is to allow disabling it without completely getting rid of it. We could template bind that animation so an app-developer can toggle it outside of the template:

<VisualState x:Name="Normal">
     <Storyboard>
        <PointerUpThemeAnimation Storyboard.TargetName="RootGrid" IsEnabled="{TemplateBinding TiltOnPress}" />
     </Storyboard>
</VisualState>

A result to the effect of what @mdtauk was referring to.

@mrlacey
Copy link
Contributor

mrlacey commented Jan 30, 2019

Ha, reminds me of early WP7 days when I spent ages adding the tilt effect to controls because it didn't get added by default.

@microsoft microsoft deleted a comment from chigy Jan 30, 2019
@chigy
Copy link
Member

chigy commented Jan 30, 2019

@kikisaints - I have not received official request to remove the tilt from the design team. As far as I understand, some button retemplate was due to the lack of flexibility to turn off tilt without retemplate and some buttons like title bar buttons did not make sense to have tilt. Today, tilt is used as a press state equivalent on Xbox where the button depresses so we cannot just remove it without considering what the removal means to the press and hover state on all the platforms we support.

@bschoepke
Copy link

bschoepke commented Jan 31, 2019

I'd suggest making it easy to opt-out of tilt via "lightweight styling" on a global, per-control-type, or per-control-instance basis:

https://docs.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/xaml-styles#lightweight-styling

the more we can do to prevent the need for re-templating the better. I'd also maybe take the opportunity to allow devs to use lightweight styling to supply custom theme animations.

@stmoy
Copy link
Contributor

stmoy commented Jan 31, 2019

@kikisaints - the tilt animation is provided as a visual affordance that is specified by PointerDownThemeAnimation. I agree with @chigy that we'll need some sort of press feedback by default, so we could consider modifying the animation provided by PointerDownThemeAnimation.

@kikisaints
Copy link
Author

@stmoy and @chigy - I'm somewhere in the middle. I don't believe we should replace the animation with another, unchangeable/un-customizable animation. That feels odd.

@bschoepke - I like this line of thinking, my only worry is that lightweight styling relies heavily on your knowledge of resource keys and names. Which can become cumbersome and explodes generic.xaml considerably.

My reason for complete removal is that if the majority do not use tilt, maybe it's causing more issues than it's solving.

That being said, perhaps the crux of the issue here isn't the tilt itself, but how we've structured our styling system all-up...

@JustinXinLiu
Copy link

JustinXinLiu commented Feb 1, 2019

I think we still need a signature visual feedback on pressed state for most our interactive controls (e.g. Button, AppBarToggleButton, ComboBoxItem, ListViewItem, etc.) that could instantly differentiate themselves from other design languages.

It's like whenever I click a button and see the ripple, I know it's from Material.

Currently, we have reveal and tilt. But the former is not turned on by default and only works well with dark background. The tilt just doesn't look good anymore.

However, I am just concerned that if we removed it completely without a replacement, the controls could lose their Fluent design identity. I did some experiment in the past and would love to see if our design team can come up with something that embraces Fluent features like light, depth, material and motion. ;)

@mrlacey
Copy link
Contributor

mrlacey commented Feb 1, 2019

Most importantly, if I'm "pressing down" on a button, how do I know it's recognizing that touch or identifying that the thing I think I'm touching is the one that's actually going to respond, if there is no visual indication?

@JustinXinLiu
Copy link

@mrlacey there will still be some color changes on the background, foreground and border, but I don't think they are enough...

@JohnnyWestlake
Copy link

I'm going to chip in and say I don't see a need for removing it, but an easy TemplateBinding or even global toggle for it for those who want it wouldn't go amiss. One thing I will say when I've done client projects is they generally preferred it if the animation only affected the content of the button and not the border / background, so I usually ended up retemplating for it to affect the ContentPresenter instead. Still obvious depression, but a little nice.

Depression is also quite nice when using physical keys (like keyboard, media remotes, gamepads).

Or, even if it is removed, as long as PointerDownThemeAnimation still exists at least I can still put it back in easily - so in that case I'd like to chuck in a vote for not changing the default PointerDown/UpThemeAnimation but replacing it with a new one?

@mdtauk
Copy link
Contributor

mdtauk commented Feb 5, 2019

Whether you keep the tilt or remove it/replace it

I think there is something to be said for adding a ThemeAnimation property, which is changable in XAML or codebehind - without a need for re-templating - would suffice until the Fluent Team know exactly what they want to do for button pressed animations across all MUX controls.

@kikisaints
Copy link
Author

@JohnnyWestlake interesting that there is a desire to have tilt on the presenter but not the border, it would seem that even if we had a toggle for the animation (either through lightweight styling or a property) it wouldn't really solve your scenario where you need to alter what the animation affects, not whether or not it's there... thanks for the insight!

@lukasf
Copy link

lukasf commented Feb 13, 2019

@kikisaints This could be solved by having an enum TiltMode: { Disabled, Control, Content } ;) Not sure if it is a relevant scenario though.

Personally, I'd prefer a clean "move down/shrink, move up/grow" animation instead of tilt. Having a ThemeAnimation property would make it easy to change that animation.

@jaigak
Copy link
Contributor

jaigak commented Jan 7, 2021

Asking for the last time, please don't remove this. Although it's not nice plainly with reveal effect it is really good and would like to see it more on the web and mobile. Don't remove this from Windows.

@ghost
Copy link

ghost commented Jan 7, 2021

They are not removing this feature

@mdtauk
Copy link
Contributor

mdtauk commented Jan 7, 2021

The intent is to remove the tilt effect when pressing these controls, because it was a Windows Phone and Windows 8 metro effect, and they are moving to a new Fluent Design across Web, Windows, and Mobile Cross-Platform.

@mdtauk
Copy link
Contributor

mdtauk commented Jan 7, 2021

I assume the Tilt effect will remain in the WinUI repo, but you would have to retemplate to re-add it to the controls. Maybe @chingucoding, @chigy, or @anawishnoff will be able to clarify that.

@marcelwgn
Copy link
Collaborator

Yes you would need to retemplate controls to add the tilt effect to controls as you need to have the PointerUpThemeAnimation and PointerDownThemeAnimation. The steps necessary to remove the effect are outlined here and also requires retemplating so adding the effect back will need retemplating too.

@sylveon
Copy link
Contributor

sylveon commented Jan 7, 2021

Retemplating to add/remove this effect is way too much code.

@marcelwgn
Copy link
Collaborator

Unfortunately, because how XAML works, beside adding a new API on the button itself to toggle this, there is no other option. With styling concepts like CSS this would be a lot easier, but the animations are part of the VSM and can't be changed without retemplating unfortunately.

@mdtauk
Copy link
Contributor

mdtauk commented Jan 7, 2021

@chingucoding You may want to keep a mental note of that. It should not be that hard to alter any of the default Theme Transitions for controls - it may be worth trying to add these as lightweight overridable values.

ButtonPointerDownThemeAnimation
ButtonPointerUpThemeAnimation

Both of these can be set to a blank Animation by default, but you can assign a bundled Fluent Animation, or a custom animation to these states.

@marcelwgn
Copy link
Collaborator

The issue is that there doesn't seem to be a way to make this a lightweight styling resource. StoryBoard doesn't expose anything that we could bind to a resource, you have to set it's children in XAML. Either you set the children or you don't, however you can'T have an animation resource and use that in there from what I can tell. I'm afraid VSM needs to expose more properties for this to work.

@mdtauk
Copy link
Contributor

mdtauk commented Jan 7, 2021

The issue is that there doesn't seem to be a way to make this a lightweight styling resource. StoryBoard doesn't expose anything that we could bind to a resource, you have to set it's children in XAML. Either you set the children or you don't, however you can'T have an animation resource and use that in there from what I can tell. I'm afraid VSM needs to expose more properties for this to work.

So, it looks like WinUI 3.X will need to create a new API to allow for re-usable Animation or Storyboards - which can be applied to a control's VisualStates

@marcelwgn
Copy link
Collaborator

Yes, this needs changes in VSM and Storyboards so will need to wait until WinUI 3.X.

@mrlacey
Copy link
Contributor

mrlacey commented Jan 7, 2021

If this is removed but lots of people want it, it should be simple enough to add a TiltButton to the community toolkit to make this behavior available to those who want it.

@mdtauk
Copy link
Contributor

mdtauk commented Jan 7, 2021

If this is removed but lots of people want it, it should be simple enough to add a TiltButton to the community toolkit to make this behavior available to those who want it.

Very nostalgic, as there was a Windows Phone custom control/behaviour released to simulate the 3D camera perspective tilts that the DirectUI internal APIs supported in the Windows Phone UX - And later the concept of Theme Animations added to the Windows 8 controls by default. TiltEffect from the Windows Phone Toolkit

https://social.technet.microsoft.com/wiki/contents/articles/27599.windows-phone-tilt-effect-for-windows-phone.aspx

@marcelwgn
Copy link
Collaborator

If this is removed but lots of people want it, it should be simple enough to add a TiltButton to the community toolkit to make this behavior available to those who want it.

Agreed, though you would need a TiltButton, TiltAccentButton and TiltRevealButton to have a consistent experience.

@mdtauk
Copy link
Contributor

mdtauk commented Jan 7, 2021

If this is removed but lots of people want it, it should be simple enough to add a TiltButton to the community toolkit to make this behavior available to those who want it.

Agreed, though you would need a TiltButton, TiltAccentButton and TiltRevealButton to have a consistent experience.

The tilt effect is also used for the List and Grid Views, which I believe is also going to be removed when they update.

@sylveon
Copy link
Contributor

sylveon commented Jan 8, 2021

If this is removed but lots of people want it, it should be simple enough to add a TiltButton to the community toolkit to make this behavior available to those who want it.

@mrlacey The community toolkit is in C# and therefore I can't use it (my program is in C++). I feel like this might be better suited as a built-in WinUI style

@jaigak
Copy link
Contributor

jaigak commented Jan 8, 2021

Please don't remove this

@jaigak
Copy link
Contributor

jaigak commented Jan 8, 2021

The intent is to remove the tilt effect when pressing these controls, because it was a Windows Phone and Windows 8 metro effect, and they are moving to a new Fluent Design across Web, Windows, and Mobile Cross-Platform.

Why can't they make it part of Fluent? I checked Windows 8 and tilt was present only on the tiles and Windows 10 did add tilt to other controls like buttons while Windows Phone already had it. This is an excuse not a real reason. And if you add reveal to tilt it does look good

@jaigak
Copy link
Contributor

jaigak commented Jan 8, 2021

Why can't they change or improve this? If not tilt at least provide a replacement Z index-based effect for visual feedback

@mdtauk
Copy link
Contributor

mdtauk commented Jan 8, 2021

The intent is to remove the tilt effect when pressing these controls, because it was a Windows Phone and Windows 8 metro effect, and they are moving to a new Fluent Design across Web, Windows, and Mobile Cross-Platform.

Why can't they make it part of Fluent? I checked Windows 8 and tilt was present only on the tiles and Windows 10 did add tilt to other controls like buttons while Windows Phone already had it. This is an excuse not a real reason. And if you add reveal to tilt it does look good

There are some concerns about how the text rendering gets distorted as the control tilts. It is an effect that would mess up the ThemeShadow if it was based on the Z-index. Like the indeterminate Progress Bar and Ring, moving away from the dots to a different animation - it is a Metro and MDL2 (Microsoft Design Language 2) feature, and it is not a feature they wish to continue using, or bring over to their FluentUI and Fast frameworks.

The ThemeAnimations will still be there if individual developers wish to continue using them.

Why can't they change or improve this? If not tilt at least provide a replacement Z index-based effect for visual feedback

If you wish to "improve" or change the Pressed state for Buttons, you could make a clear proposal - but the Tilt effect does seem to be going, so just asking for it to remain will not be very persuasive.

You also have to remember, there has been vocal complaint about this effect, and developers have been asking for ways to remove it. Making it an option for devs, rather than "forcing" it on them, may be a welcome change.

@jaigak
Copy link
Contributor

jaigak commented Jan 8, 2021

@mdtauk What's the point of open source if MS doesn't listen to feedback? I'm not telling I don't like design refreshes but this is something unnecessary to remove

@jaigak
Copy link
Contributor

jaigak commented Jan 8, 2021

Tilt can go away but there needs a click effect for touch feedback. Google has ripple for this but doesn't feel that well on a mouse. I'm not an expert but a plain color change on the pressed state but does not do much

@mdtauk
Copy link
Contributor

mdtauk commented Jan 8, 2021

@mdtauk What's the point of open source if MS doesn't listen to feedback? I'm not telling I don't like design refreshes but this is something unnecessary to remove

I'm suggesting that there may be more feedback asking for it to be removed, than there is asking for it to stay

@mdtauk
Copy link
Contributor

mdtauk commented Jan 8, 2021

Tilt can go away but there needs a click effect for touch feedback. Google has ripple for this but doesn't feel that well on a mouse. I'm not an expert but a plain color change on the pressed state but does not do much

There is a pressed state, s change in colour. You are suggesting it may not be enough or strong enough a change. I think I may agree, but that would need to be a new proposal.

@Tropix126
Copy link

I really view tilt as part of what makes fluent unique and would hate it if went.

@robloo
Copy link
Contributor

robloo commented Aug 17, 2021

This can likely be closed. Fluent v2 Removes the Tilt effect.

@kmgallahan
Copy link
Contributor

@bpulliam This can be closed, yes?

@bpulliam bpulliam closed this as not planned Won't fix, can't repro, duplicate, stale Aug 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature proposal New feature proposal team-Controls Issue for the Controls team
Projects
None yet
Development

No branches or pull requests