1. 前言

微软在Build
2017遭到披露了新的计划性语言Fluent
Design
System(以下简称FDS),不过官网只是堆砌了各种华丽的辞藻和同堆放动画。至于在UWP中如做成什么,怎么开,可以参考这视频:
Build Amazing Apps with Fluent Design – Build
2017

视频被以BuildCast以此示例应用详细展示了Fall
Creators Update(16299)中如何实现FDS以及其他FCU的新API,极富有参考价值。
2018正版葡京赌侠诗 1

或参考开发人员官网,这里详细介绍了FDS的五老大中心主题(Material(材质)、Light(光照)、Depth(深度)、Motion(动态)和
Scale(伸缩性))相关职能及采取标准。

好像没有来看专门供于规划人员的FDS指南?

2. Fall Creators Update中的Fluent Design System

正文主要介绍微软在Fall Creators Update中主打的各种FDS特效、控件。

2.1 Material

料是FDS最有趣的主题,以往主推的Metro强调去材质化,现在以再取把材料捡回去。不过当下FDS中材料的用场景有明确规定,并无是和原先材质化泛滥时同样并具有按钮都材质化。从材料的回归好观看UWP的承前启后主体都起屏幕延伸到MR。

Acrylic大凡目前FDS主打的材料。在Fall
Creators
Update之前计算器等几只使用已用上了这个特效,效果看起还不易。Acrylic除了担当展现材质化的意义,还担负营造出深的UI。简单的话Acrylic只是一个Brush,UWP提供了扳平组Acrylic
Brush给开发者使用,通过ThemeResource找到资源名字被蕴含“Acrylic”的Brush即可轻松在动用中使Acrylic,代码如下:

<Grid Background="{ThemeResource SystemControlAcrylicElementBrush}">

Acrylic包含两种植。

  • Background acrylic
    透视整个应用UI,可以视采用窗体后底其余应用或桌面(在ThemeResource中称包含
    -AcrylicWindow-)。
    2018正版葡京赌侠诗 2

  • In-app acrylic 只透视套用了acrylic
    brush的要素(在ThemeResource中称包含 -AcrylicElement-)。
    2018正版葡京赌侠诗 3

2.2 Light

UWP使用CompositionLight得制作多大有意思之日照效果,FDS主打的光照特效是Reveal,在FCU中大部Items
Control(ListView、GridView等)都默认启用了Reveal特效,一些Button控件也得经套用Style启用这个特效。

<Button Content="Button Content" Style="{StaticResource ButtonRevealStyle}"/>

2018正版葡京赌侠诗 4

Reveal最充分之特点是鼠标靠近时控件的边框会被照亮,这对无边框按钮或ListViewItem可以于匪破坏其简要设计的前提下提示其可操作区域。(或许在MR中Reveal有重新多之运场景。)

2.3 Depth

纵然以强调扁平化的时期,深度仍是设计师关心的一个主题。FCU中除采用Acrylic营造出深度的UI,还新增了ParallaxView控件,可以打造简便的视差滚动效应。

<ParallaxView x:Name="parallaxView"
              Source="{Binding ElementName=listView}"
              VerticalAlignment="Top"
              HorizontalAlignment="Left"
              VerticalShift="50">
    <Image Source="ms-appx:///Assets/cliff.jpg" />
</ParallaxView>
<ListView x:Name="listView"
          HorizontalAlignment="Stretch"
          VerticalAlignment="Top"
          Background="#80000000">
    <x:String>Item 1</x:String>
    <x:String>Item 2</x:String>
    <x:String>Item 3</x:String>
    ...
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}"
                       Foreground="White" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

2018正版葡京赌侠诗 5

2.4 Motion

UWP控件自带的卡通都重重,Connected
animations尽管还进一步。Connected
animations通常用于在导航中引导视觉,定位操作对象。

2018正版葡京赌侠诗 6

于由默认的写法,我再也喜欢UWP Community Toolkit封装好的 Connected
Animations
附加属性。只需要以源页面和目标页面的操作对象下相同的Connected.Key即可轻松实现Connected
animations。

MotionPage.xaml

<Border Height="100"
        Width="100"
        Background="{ThemeResource SystemControlForegroundAccentBrush}"
        VerticalAlignment="Center"
        HorizontalAlignment="Center"
        animations:Connected.Key="item"
        Tapped="Border_Tapped" />

MotionPage.xaml.cs

navigationService.NavigateToPage<ConnectedAnimations2ndPage>();

ConnectedAnimations2ndPage.xaml

<Border x:Name="HeroElement"
        Height="300" 
        Width="300"
        Background="{ThemeResource SystemControlForegroundAccentBrush}"
        animations:Connected.Key="item"/>

2018正版葡京赌侠诗 7

2.5 Scale

当FDS中,伸缩性这个主题比较特别。它并未主打的控件或API,简单地知道成适应各种屏幕尺寸的响应式设计啊足以,但本身再次愿将它们的主旨理解成设计得在0D到3D之款式中拉开,即好适应从语言及鼠标、键盘、触摸、MR等各种款式之输入和输出。

2018正版葡京赌侠诗 8

对设计师以及开发人员来说是主题可能未太好玩儿,毕竟她看起只是累赘,一点都不豪华。但我当重申这主题非常根本,UWP诞生的目的就是是为制作能以各种装备及运行的通用应用,伸缩性对UWP至关重要。即使就对桌面设备,能生各种输入方式对可用性都发坏可怜增长。可惜随着近年来移动系统的流行,设计师越来越习惯设计单独针对触摸的UI,连带影响及桌面应用,快捷键越来越少,有些设计师甚至拒绝提供按钮的PointerOver效果。希望随着设计规范及控件的面面俱到这题材能够有所改善吧。

3. 在Fall Creators Update中提升使用

于Fall Creators Update中单单待改导航与标题栏,应用的UI即可有大幅提升。

2018正版葡京赌侠诗 9

3.1 使用NavigationView更新导航菜单

先前很多课都专门教了怎么打汉堡包菜单,现在UWP终于提供了默认方案。NavigationView凡是Fall
Creators
Update提供的初导航菜单,它利用了FDS最常用之片个特效:Acrylic和Reveal,可以折叠及最小化,使用简单:

<NavigationView IsSettingsVisible="True"
                x:Name="NavigationView"
                AlwaysShowHeader="False"
                ItemInvoked="NavigationView_ItemInvoked"
                x:FieldModifier="Public">
    <NavigationView.MenuItems>
        <NavigationViewItem Content="Material"
                            IsSelected="True">
            <NavigationViewItem.Icon>
                <FontIcon FontFamily="Segoe MDL2 Assets"
                          Glyph="&#xF126;" />
            </NavigationViewItem.Icon>
        </NavigationViewItem>
        <NavigationViewItem Content="Light">
            <NavigationViewItem.Icon>
                <FontIcon FontFamily="Segoe MDL2 Assets"
                          Glyph="&#xF126;" />
            </NavigationViewItem.Icon>
        </NavigationViewItem>
        <NavigationViewItem Content="Motion">
            <NavigationViewItem.Icon>
                <FontIcon FontFamily="Segoe MDL2 Assets"
                          Glyph="&#xF126;" />
            </NavigationViewItem.Icon>
        </NavigationViewItem>
        <NavigationViewItem Content="Depth">
            <NavigationViewItem.Icon>
                <FontIcon FontFamily="Segoe MDL2 Assets"
                          Glyph="&#xF126;" />
            </NavigationViewItem.Icon>
        </NavigationViewItem>
        <NavigationViewItem Content="Scale">
            <NavigationViewItem.Icon>
                <FontIcon FontFamily="Segoe MDL2 Assets"
                          Glyph="&#xF126;" />
            </NavigationViewItem.Icon>
        </NavigationViewItem>
    </NavigationView.MenuItems>
    <Frame x:Name="RootFrame"
           Navigated="RootFrame_Navigated">
    </Frame>
</NavigationView>

3.2 将内容扩展至标题栏

于先后启动或每次变更主题颜色时调用SetupTitlebar()本条函数,注意要因目前主题颜色改变TitleBar上按钮的颜色(因为官方文档上并未,所以广大总人口2018正版葡京赌侠诗会见忘记了拍卖按钮的颜料):

private static void SetupTitlebar()
{
    if (ApiInformation.IsTypePresent("Windows.UI.ViewManagement.ApplicationView"))
    {
        var titleBar = ApplicationView.GetForCurrentView().TitleBar;
        if (titleBar != null)
        {
            titleBar.ButtonBackgroundColor = Colors.Transparent;
            if (TrueTheme() == ElementTheme.Dark)
            {
                titleBar.ButtonForegroundColor = Colors.White;
                titleBar.ForegroundColor = Colors.White;
            }
            else
            {
                titleBar.ButtonForegroundColor = Colors.Black;
                titleBar.ForegroundColor = Colors.Black;
            }

            titleBar.BackgroundColor = Colors.Black;

            titleBar.ButtonInactiveBackgroundColor = Colors.Transparent;
            titleBar.ButtonInactiveForegroundColor = Colors.LightGray;

            CoreApplicationViewTitleBar coreTitleBar = TitleBarHelper.Instance.TitleBar;

            coreTitleBar.ExtendViewIntoTitleBar = true;
        }
    }
}

public static ElementTheme TrueTheme()
{
    var frameworkElement = Window.Current.Content as FrameworkElement;
    return frameworkElement.ActualTheme;
}

主页中采取TextBlock代替应用标题:

<TextBlock x:Name="WindowTitle"
           Style="{ThemeResource CaptionTextBlockStyle}"
           Visibility="{x:Bind TitleHelper.TitleVisibility, Mode=OneWay}"
           Margin="{x:Bind TitleHelper.TitlePosition, Mode=OneWay}"
           VerticalAlignment="Top"
           Text="{x:Bind appmodel:Package.Current.DisplayName}" />

自己自己之ColorfulBox运用在运上述方案升级后外观有矣广大更上一层楼(请忽略标题没有垂直居中这个有点左):

2018正版葡京赌侠诗 10

(待续…)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图