Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Surface Dial with Surface Studio and Pen (dostępne do zakupu w Sklepie Microsoft).
Przegląd
Urządzenia kołowe Windows, takie jak Surface Dial, to nowa kategoria urządzeń wejściowych, które oferują wiele atrakcyjnych i unikatowych doświadczeń interakcji użytkownika dla systemu Windows i aplikacji Windows.
Ważne
W tym temacie odwołujemy się specjalnie do interakcji z urządzeniami Surface Dial, ale informacje dotyczą wszystkich urządzeń z systemem Windows Wheel.
Dzięki faktorowi formy opartemu na akcji obracania (lub gestu), Surface Dial jest przeznaczony jako pomocnicze urządzenie wejściowe o wielu trybach, które uzupełnia dane wejściowe z urządzenia podstawowego. W większości przypadków urządzenie jest manipulowane przez niedominującą rękę użytkownika podczas wykonywania zadania dominującą ręką (na przykład rysowanie za pomocą rysika). Nie jest przeznaczony do precyzyjnego wprowadzania wskaźników (takich jak dotyk, pióro lub mysz).
Funkcja Surface Dial obsługuje również akcję naciśnięcia i przytrzymania oraz akcję kliknięcia. Naciśnij i przytrzymaj ma jedną funkcję: wyświetlanie menu poleceń. Jeśli menu jest aktywne, obracanie i klikanie danych wejściowych jest przetwarzane przez menu. W przeciwnym razie dane wejściowe są przekazywane do aplikacji do przetwarzania.
Podobnie jak w przypadku wszystkich urządzeń wejściowych z systemem Windows, możesz spersonalizować interakcję z urządzeniem Surface Dial, aby pasowała do funkcji w aplikacjach.
Wskazówka
Używane razem, Surface Dial i nowe Surface Studio mogą zapewnić jeszcze bardziej charakterystyczne doświadczenie użytkownika.
Oprócz opisanego domyślnego menu naciśnięcia i przytrzymania, Surface Dial można również umieścić bezpośrednio na ekranie urządzenia Surface Studio. Umożliwia to specjalne menu "na ekranie".
Wykrywając zarówno lokalizację kontaktu, jak i granice tarczy Surface Dial, system używa tych informacji do obsługi okluzji urządzenia i wyświetlania większej wersji menu, która owija się poza tarczą. Te same informacje mogą być również używane przez aplikację w celu dostosowania interfejsu użytkownika zarówno do obecności urządzenia, jak i oczekiwanego użycia, na przykład umieszczenia ręki i ramienia użytkownika.
Menu poza ekranem Surface Dial
Menu ekranowe Surface Dial
Integracja systemu
Surface Dial jest ściśle zintegrowany z systemem Windows i obsługuje zestaw wbudowanych narzędzi w menu: głośność systemowa, przewijanie, powiększanie/pomniejszanie i cofanie/ponowne wykonywanie.
Ta kolekcja wbudowanych narzędzi dostosowuje się do bieżącego kontekstu systemu w celu uwzględnienia następujących elementów:
- Narzędzie do jasności systemu, gdy użytkownik jest na pulpicie systemu Windows
- Poprzednie/następne narzędzie do śledzenia podczas odtwarzania multimediów
Oprócz tej ogólnej obsługi platformy funkcja Surface Dial jest również ściśle zintegrowana z kontrolkami platformy Windows Ink (InkCanvas i InkToolbar).
Surface Dial z piórem Surface
W przypadku użycia z urządzeniem Surface Dial te kontrole umożliwiają dodatkowe funkcje modyfikowania atrybutów tuszu i kontrolowania wzornika linijki paska narzędzi do pisma.
Po otwarciu menu Surface Dial w aplikacji do rysowania korzystającej z paska narzędzi pisma odręcznego, menu zawiera teraz narzędzia do kontrolowania typu pióra i grubości pędzla. Po włączeniu linijki do menu zostanie dodane odpowiednie narzędzie, które umożliwia urządzeniu sterowanie położeniem i kątem linijki.
Menu Surface Dial z narzędziem wyboru pióra dla paska narzędzi Windows Ink
Menu Surface Dial z narzędziem do zmiany grubości pociągnięcia dla Windows Ink Toolbar
Menu Surface Dial z narzędziem linijki na pasku narzędzi Windows Ink
Dostosowywanie użytkownika
Użytkownicy mogą dostosować niektóre aspekty swojego środowiska Dial za pomocą strony Ustawienia systemu Windows — Urządzenia —>> Koło, w tym domyślne narzędzia, wibracje (lub informacja zwrotna haptyczna) oraz rękę pisania (lub dominującą rękę).
Podczas dostosowywania środowiska użytkownika urządzenia Surface Dial należy zawsze upewnić się, że dana funkcja lub zachowanie jest dostępna i włączona przez użytkownika.
Narzędzia niestandardowe
W tym miejscu omówimy zarówno środowisko użytkownika, jak i wskazówki dla deweloperów dotyczące dostosowywania narzędzi uwidocznionych w menu Surface Dial.
Wskazówki dotyczące środowiska użytkownika dla narzędzi niestandardowych
Upewnij się, że narzędzia odpowiadają bieżącemu kontekstowi Gdy wyjaśnisz i intuicyjnie, co robi narzędzie i jak działa interakcja z funkcją Surface Dial, pomagasz użytkownikom szybko uczyć się i skupiać się na ich zadaniu.
Zminimalizuj maksymalną liczbę narzędzi aplikacji
Menu Surface Dial ma miejsce na siedem elementów. Jeśli istnieje osiem lub więcej elementów, użytkownik musi obrócić pokrętło, aby zobaczyć, które narzędzia są dostępne w przepełnionym menu rozwijanym, co utrudnia nawigację i sprawia, że narzędzia są trudne do odnalezienia i wybrania.
Zalecamy udostępnienie jednego niestandardowego narzędzia dla aplikacji lub jej kontekstu. Dzięki temu można ustawić to narzędzie na podstawie tego, co robi użytkownik, bez konieczności aktywowania menu Surface Dial i wybierania narzędzia.
Dynamiczne aktualizowanie kolekcji narzędzi
Ponieważ elementy menu Surface Dial nie obsługują stanu wyłączonego, należy dynamicznie dodawać i usuwać narzędzia (w tym wbudowane, domyślne narzędzia) na podstawie kontekstu użytkownika (bieżącego widoku lub okna ukierunkowanego). Jeśli narzędzie nie jest istotne dla bieżącego działania lub jest ono nadmiarowe, usuń je.
Ważne
Po dodaniu elementu do menu upewnij się, że element jeszcze nie istnieje.
Nie usuwaj wbudowanego narzędzia do ustawiania woluminów systemowych
Sterowanie głośnością jest zwykle zawsze wymagane przez użytkownika. Mogą słuchać muzyki podczas korzystania z Twojej aplikacji, więc regulacja głośności i opcja następnego utworu powinny być zawsze dostępne w menu Surface Dial. (Następne narzędzie śledzenia jest automatycznie dodawane do menu podczas odtwarzania multimediów).
Zachowaj spójność z organizacją menu
Pomaga to użytkownikom odkrywać i uczyć się, jakie narzędzia są dostępne podczas korzystania z aplikacji, i pomagają zwiększyć wydajność podczas przełączania narzędzi.
Udostępnianie ikon wysokiej jakości spójnych z wbudowanymi ikonami
Ikony mogą przekazywać profesjonalizm i doskonałość oraz inspirować zaufanie do użytkowników.
- Zapewnij obraz PNG o wysokiej jakości w rozdzielczości 64 x 64 pikseli (44 x 44 to najmniejszy obsługiwany rozmiar)
- Upewnij się, że tło jest przezroczyste
- Ikona powinna wypełnić większość obrazu
- Biała ikona powinna mieć czarny kontur, aby była widoczna w trybie dużego kontrastu
Ikona z tłem alfa
Ikona wyświetlana w menu kołowym z motywem domyślnym
Ikona wyświetlana w menu kołowym z motywem Wysoki kontrast - biały
Używanie zwięzłych i opisowych nazw
Nazwa narzędzia jest wyświetlana w menu narzędzi wraz z ikoną narzędzia i jest również używana przez czytniki zawartości ekranu.
- Nazwy powinny być krótkie, aby zmieścić się wewnątrz centralnego okręgu menu koła
- Nazwy powinny wyraźnie identyfikować podstawowe działanie (działanie uzupełniające może być domyślne):
- Przewijanie wskazuje efekt obu kierunków obrotu
- Cofnij określa akcję podstawową, ale Przywróć (działanie uzupełniające) można wywnioskować i jest łatwo dostępna dla użytkownika.
Wskazówki dla deweloperów
Możesz dostosować doświadczenie Surface Dial, aby w pełni wykorzystać funkcjonalności w aplikacjach za pomocą kompleksowego zestawu interfejsów API środowiska uruchomieniowego systemu Windows.
Jak wspomniano wcześniej, domyślne menu Surface Dial jest wstępnie wypełnione zestawem wbudowanych narzędzi obejmujących szeroką gamę podstawowych funkcji systemowych (głośność systemowa, jasność systemu, przewijanie, powiększanie, cofanie i sterowanie multimediami, gdy system wykrywa trwające odtwarzanie audio lub wideo). Jednak te narzędzia domyślne mogą nie udostępniać funkcji wymaganych przez aplikację.
W poniższych sekcjach opisano sposób dodawania niestandardowego narzędzia do menu Surface Dial i określania, które wbudowane narzędzia są uwidocznione.
Pobierz bardziej niezawodną wersję tego przykładu z dostosowywania Programu RadialController.
Dodawanie niestandardowego narzędzia
W tym przykładzie dodamy podstawowe narzędzie niestandardowe, które przekazuje dane wejściowe zarówno z zdarzeń rotacji, jak i kliknięciach do niektórych kontrolek interfejsu użytkownika XAML.
Najpierw deklarujemy nasz interfejs użytkownika (tylko suwak i przycisk przełączania) w języku XAML.
Przykładowy interfejs użytkownika aplikacji<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <StackPanel x:Name="HeaderPanel" Orientation="Horizontal" Grid.Row="0"> <TextBlock x:Name="Header" Text="RadialController customization sample" VerticalAlignment="Center" Style="{ThemeResource HeaderTextBlockStyle}" Margin="10,0,0,0" /> </StackPanel> <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Row="1"> <!-- Slider for rotation input --> <Slider x:Name="RotationSlider" Width="300" HorizontalAlignment="Left"/> <!-- Switch for click input --> <ToggleSwitch x:Name="ButtonToggle" HorizontalAlignment="Left"/> </StackPanel> </Grid>Następnie w kodzie dodamy niestandardowe narzędzie do menu Surface Dial i deklarujemy programy obsługi danych wejściowych Programu RadialController .
Uzyskujemy odwołanie do obiektu RadialController dla kontrolki Surface Dial (myController), wywołując polecenie CreateForCurrentView.
Następnie utworzymy wystąpienie RadialControllerMenuItem (myItem), wywołując RadialControllerMenuItem.CreateFromIcon.
Następnie dołączymy ten element do kolekcji elementów menu.
Deklarujemy programy obsługi zdarzeń wejściowych (ButtonClicked i RotationChanged) dla obiektu RadialController .
Na koniec definiujemy programy obsługi zdarzeń.
public sealed partial class MainPage : Page { RadialController myController; public MainPage() { this.InitializeComponent(); // Create a reference to the RadialController. myController = RadialController.CreateForCurrentView(); // Create an icon for the custom tool. RandomAccessStreamReference icon = RandomAccessStreamReference.CreateFromUri( new Uri("ms-appx:///Assets/StoreLogo.png")); // Create a menu item for the custom tool. RadialControllerMenuItem myItem = RadialControllerMenuItem.CreateFromIcon("Sample", icon); // Add the custom tool to the RadialController menu. myController.Menu.Items.Add(myItem); // Declare input handlers for the RadialController. myController.ButtonClicked += MyController_ButtonClicked; myController.RotationChanged += MyController_RotationChanged; } // Handler for rotation input from the RadialController. private void MyController_RotationChanged(RadialController sender, RadialControllerRotationChangedEventArgs args) { if (RotationSlider.Value + args.RotationDeltaInDegrees > 100) { RotationSlider.Value = 100; return; } else if (RotationSlider.Value + args.RotationDeltaInDegrees < 0) { RotationSlider.Value = 0; return; } RotationSlider.Value += args.RotationDeltaInDegrees; } // Handler for click input from the RadialController. private void MyController_ButtonClicked(RadialController sender, RadialControllerButtonClickedEventArgs args) { ButtonToggle.IsOn = !ButtonToggle.IsOn; } }
Po uruchomieniu aplikacji użyjemy funkcji Surface Dial, aby wchodzić z nią w interakcje. Najpierw naciskamy i przytrzymajmy, aby otworzyć menu i wybrać nasze narzędzie niestandardowe. Po aktywowaniu niestandardowego narzędzia można dostosować kontrolkę suwaka, obracając pokrętło, a przełącznik można przełączać, klikając pokrętło.
Przykładowy interfejs użytkownika aplikacji aktywowany przy użyciu niestandardowego narzędzia Surface Dial
Określanie wbudowanych narzędzi
Możesz użyć klasy RadialControllerConfiguration , aby dostosować kolekcję wbudowanych elementów menu dla aplikacji.
Jeśli na przykład aplikacja nie ma żadnych regionów przewijania ani powiększania i nie wymaga funkcji cofania/ponowienia, te narzędzia można usunąć z menu. Spowoduje to otwarcie miejsca w menu w celu dodania niestandardowych narzędzi dla aplikacji.
Ważne
Menu Surface Dial musi zawierać co najmniej jeden element menu. Jeśli wszystkie narzędzia domyślne zostaną usunięte przed dodaniem jednego z narzędzi niestandardowych, zostaną przywrócone domyślne narzędzia, a narzędzie zostanie dołączone do kolekcji domyślnej.
Zgodnie z wytycznymi projektowymi nie zalecamy usuwania narzędzi kontroli multimediów (głośności i poprzedniego/następnego utworu), ponieważ użytkownicy często mają odtwarzanie muzyki w tle podczas wykonywania innych zadań.
W tym miejscu pokazano, jak skonfigurować menu Surface Dial tak, aby uwzględniało tylko kontrolki multimediów dla głośności i następnego/poprzedniego utworu.
public MainPage()
{
...
//Remove a subset of the default system tools
RadialControllerConfiguration myConfiguration =
RadialControllerConfiguration.GetForCurrentView();
myConfiguration.SetDefaultMenuItems(new[]
{
RadialControllerSystemMenuItemKind.Volume,
RadialControllerSystemMenuItemKind.NextPreviousTrack
});
}
Interakcje niestandardowe
Jak wspomniano, funkcja Surface Dial obsługuje trzy gesty (naciśnij i przytrzymaj, obróć, kliknij) z odpowiednimi interakcjami domyślnymi.
Upewnij się, że wszystkie niestandardowe interakcje na podstawie tych gestów mają sens dla wybranej akcji lub narzędzia.
Uwaga / Notatka
Środowisko interakcji zależy od stanu menu Surface Dial. Jeśli menu jest aktywne, przetwarza dane wejściowe; w przeciwnym razie przetwarza je aplikacja.
Naciśnij i przytrzymaj
Ten gest aktywuje się i pokazuje menu Surface Dial. Nie ma żadnych funkcji aplikacji skojarzonych z tym gestem.
Domyślnie menu jest wyświetlane w środku ekranu użytkownika. Jednak użytkownik może go chwycić i przenieść tam, gdzie wybierze.
Uwaga / Notatka
Gdy Surface Dial jest umieszczany na ekranie urządzenia Surface Studio, menu jest wyśrodkowane w miejscu na ekranie, gdzie znajduje się Surface Dial.
Obracać
Tarcza Surface Dial jest przede wszystkim zaprojektowana do obsługi rotacji w interakcjach, które obejmują płynne, przyrostowe regulacje wartości analogowych lub elementów sterujących.
Urządzenie można obracać zarówno zgodnie z ruchem wskazówek zegara, jak i przeciwnie do ruchu wskazówek zegara, a także zapewnia haptyczne informacje zwrotne, aby wskazać dyskretne odległości.
Uwaga / Notatka
Sprzężenie zwrotne haptyczne może być wyłączone przez użytkownika na stronie Ustawienia systemu Windows —> Urządzenia —> Koło .
Wskazówki dotyczące doświadczenia użytkownika dla interakcji niestandardowych
Narzędzia z ciągłą lub wysoką czułością obrotową powinny wyłączać informacje zwrotne haptyczne
Sprzężenie zwrotne haptyczne odpowiada czułości obrotowej aktywnego narzędzia. Zalecamy wyłączenie haptycznego sprzężenia zwrotnego dla narzędzi z ciągłą lub wysoką czułością rotacji, ponieważ doświadczenie użytkownika może stać się niewygodne.
Dominująca ręka nie powinna mieć wpływu na interakcje oparte na rotacji
Urządzenie Surface Dial nie może wykryć, która ręka jest używana, ale użytkownik może ustawić rękę do pisania (lub dominującą rękę) w ustawieniach systemu Windows —Urządzenia—>> Pióro i Windows Ink.
Należy wziąć pod uwagę ustawienia regionalne we wszystkich interakcjach związanych z rotacją
Maksymalizuj zadowolenie klientów, uwzględniając i dostosowując swoje interakcje do ustawień regionalnych i układów od prawej do lewej.
Wbudowane narzędzia i polecenia w menu Wybierania numerów są zgodne z następującymi wytycznymi dotyczącymi interakcji opartych na rotacji:
Lewo
Up
Out
Prawo
W dół
In
| Kierunek koncepcyjny | Mapowanie na Surface Dial | Obrót zgodnie z ruchem wskazówek zegara | Obrót w kierunku odwrotnym do ruchu wskazówek zegara |
|---|---|---|---|
| Poziomy | Mapowanie w lewo i w prawo na podstawie górnej części tarczy Surface Dial | Prawo | Lewo |
| Pionowy | Mapowanie góra-dół w oparciu o lewą stronę urządzenia Surface Dial | W dół | Up |
| Oś Z | W (lub bliżej) zamapowany na górę/w prawo Wyjście (lub dalsze) zamapowane w dół/w lewo |
In | Out |
Wskazówki dla deweloperów
Gdy użytkownik obraca urządzenie, zdarzenia RadialController.RotationChanged są wyzwalane na podstawie różnicy (RadialControllerRotationChangedEventArgs.RotationDeltaInDegrees) względem kierunku obrotu. Czułość (lub rozdzielczość) danych można ustawić za pomocą właściwości RadialController.RotationResolutionInDegrees .
Uwaga / Notatka
Domyślnie zdarzenie wprowadzania rotacji jest dostarczane do obiektu RadialController tylko wtedy, gdy urządzenie jest obracane co najmniej 10 stopni. Każde zdarzenie wejściowe powoduje, że urządzenie wibruje.
Ogólnie, zalecamy wyłączenie haptycznego sprzężenia zwrotnego, gdy rozdzielczość obrotu jest ustawiona na mniej niż 5 stopni. Zapewnia to bezproblemowe środowisko dla ciągłych interakcji.
Możesz włączyć i wyłączyć haptyczne opinie dla narzędzi niestandardowych, ustawiając właściwość RadialController.UseAutomaticHapticFeedback .
Uwaga / Notatka
Nie można zastąpić zachowania haptycznego dla narzędzi systemowych, takich jak sterowanie głośnością. W przypadku tych narzędzi opinie haptyczne mogą być wyłączone tylko przez użytkownika ze strony ustawień koła.
Oto przykład dostosowywania rozdzielczości danych rotacji i włączania lub wyłączania sprzężenia zwrotnego haptycznego.
private void MyController_ButtonClicked(RadialController sender,
RadialControllerButtonClickedEventArgs args)
{
ButtonToggle.IsOn = !ButtonToggle.IsOn;
if(ButtonToggle.IsOn)
{
//high resolution mode
RotationSlider.LargeChange = 1;
myController.UseAutomaticHapticFeedback = false;
myController.RotationResolutionInDegrees = 1;
}
else
{
//low resolution mode
RotationSlider.LargeChange = 10;
myController.UseAutomaticHapticFeedback = true;
myController.RotationResolutionInDegrees = 10;
}
}
Kliknij
Kliknięcie przycisku Surface Dial jest podobne do kliknięcia lewego przycisku myszy (stan obrotu urządzenia nie ma wpływu na tę akcję).
Wskazówki dotyczące środowiska użytkownika
Nie mapuj akcji ani polecenia na ten gest, jeśli użytkownik nie może łatwo odzyskać wyniku
Każde działanie podjęte przez aplikację w wyniku kliknięcia urządzenia Surface Dial musi być odwracalne. Zawsze włącz użytkownikowi łatwe przechodzenie przez stos zaplecza aplikacji i przywracanie poprzedniego stanu aplikacji.
Operacje binarne, takie jak wyciszenie/włączenie dźwięku lub pokaż/ukryj, zapewniają dobre doświadczenia użytkownika za pomocą gestu kliknięcia.
Narzędzia modalne nie powinny być włączone lub wyłączone, klikając pozycję Surface Dial
Niektóre tryby aplikacji/narzędzi mogą powodować konflikt lub wyłączać interakcje zależne od rotacji. Narzędzia, takie jak linijka na pasku narzędzi Windows Ink, powinny być włączane lub wyłączane za pośrednictwem innych elementów interfejsu użytkownika (pasek narzędzi Windows Ink udostępnia wbudowaną kontrolkę ToggleButton).
W przypadku narzędzi modalnych, przypisz aktywny element menu Surface Dial do narzędzia docelowego lub do wcześniej wybranego elementu menu.
Wskazówki dla deweloperów
Po naciśnięciu Surface Dial zostanie wyzwolone zdarzenie RadialController.ButtonClicked. Zdarzenia RadialControllerButtonClickedEventArgs zawierają właściwość Contact określającą lokalizację i obszar ograniczający kontaktu Surface Dial na ekranie Surface Studio. Jeśli karta Surface Dial nie ma kontaktu z ekranem, ta właściwość ma wartość null.
Na ekranie
Jak opisano wcześniej, tarcza Surface Dial może być używana w połączeniu z programem Surface Studio do wyświetlania menu Surface Dial w trybie specjalnym na ekranie.
W tym trybie możesz jeszcze bardziej zintegrować i dostosować swoje interakcje z Dial w aplikacjach. Przykłady unikalnych doświadczeń możliwych tylko z urządzeniami Surface Dial i Surface Studio to:
- Wyświetlanie narzędzi kontekstowych (takich jak paleta kolorów) na podstawie położenia urządzenia Surface Dial, co ułatwia znajdowanie i używanie
- Ustawienie aktywnego narzędzia w zależności od interfejsu użytkownika, na którym jest umieszczony Surface Dial.
- Powiększanie obszaru ekranu na podstawie lokalizacji kontrolera Surface Dial
- Unikatowe interakcje z grami na podstawie lokalizacji ekranu
Wskazówki dotyczące interakcji użytkownika na ekranie
Aplikacje powinny odpowiadać po wykryciu na ekranie funkcji Surface Dial
Informacje zwrotne wizualne informują użytkowników, że aplikacja wykryła urządzenie na ekranie Surface Studio.
Dostosowywanie interfejsu użytkownika urządzenia Surface Dial na podstawie lokalizacji urządzenia
Urządzenie (i ciało użytkownika) może zasłaniać krytyczny interfejs użytkownika w zależności od tego, gdzie użytkownik go umieszcza.
Dostosowywanie interfejsu użytkownika dotyczącego wybierania numerów na urządzeniu Surface na podstawie interakcji użytkownika
Oprócz okluzji sprzętowej, ręka i ramię użytkownika mogą zasłaniać część ekranu podczas korzystania z urządzenia.
Zasłonięty obszar zależy od tego, którą ręką użytkownik posługuje się urządzeniem. Ponieważ urządzenie jest zaprojektowane do używania głównie z niedominującą ręką, interfejs użytkownika urządzenia Surface Dial powinien dostosować się do odwrotnej ręki wybranej przez użytkownika (Ustawienia systemu Windows > Urządzenia > Pióro i Windows Ink > Wybierz rękę, którą piszesz).
Interakcje powinny reagować na pozycję Surface Dial, a nie ruch
Stopa urządzenia jest zaprojektowana tak, aby przylegała do ekranu, a nie ślizgała się, ponieważ nie jest to precyzyjne urządzenie wskazujące. W związku z tym spodziewamy się, że użytkownicy będą częściej podnosić i umieszczać urządzenie Surface Dial, a nie przeciągać go po ekranie.
Określanie intencji użytkownika przy użyciu pozycji ekranu
Ustawienie aktywnego narzędzia na podstawie kontekstu interfejsu użytkownika, takiego jak bliskość kontrolki, kanwy lub okna, może poprawić środowisko użytkownika, zmniejszając kroki wymagane do wykonania zadania.
Wskazówki dla deweloperów
Po umieszczeniu Surface Dial na powierzchni cyfrowej urządzenia Surface Studio, zostanie uruchomione zdarzenie RadialController.ScreenContactStarted, a informacje kontaktowe (RadialControllerScreenContactStartedEventArgs.Contact) zostaną przekazane do aplikacji.
Podobnie, jeśli w kontakcie z powierzchnią urządzenia Surface Studio zostanie kliknięto pozycję Surface Dial, zostanie wyzwolone zdarzenie RadialController.ButtonClicked , a informacje kontaktowe (RadialControllerButtonClickedEventArgs.Contact) są przekazywane do aplikacji.
Informacje kontaktowe (RadialControllerScreenContact) obejmują współrzędne X/Y środka pokrętła Surface Dial w przestrzeni współrzędnych aplikacji (RadialControllerScreenContact.Position), a także prostokąt ograniczający (RadialControllerScreenContact.Bounds) w pikselach niezależnych od urządzenia (DIPs). Te informacje są bardzo przydatne do udostępniania kontekstu aktywnemu narzędziu i przekazywania użytkownikowi opinii wizualnej związanej z urządzeniem.
W poniższym przykładzie utworzyliśmy podstawową aplikację z czterema różnymi sekcjami, z których każda zawiera jeden suwak i jeden przełącznik. Następnie użyjemy położenia ekranu tarczy Surface, aby określić, który zestaw suwaków i przełączników jest kontrolowany przez tarczę Surface Dial.
Najpierw deklarujemy nasz interfejs użytkownika (cztery sekcje, z których każdy ma suwak i przycisk przełącznika) w języku XAML.
Przykładowy interfejs użytkownika aplikacji<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <StackPanel x:Name="HeaderPanel" Orientation="Horizontal" Grid.Row="0"> <TextBlock x:Name="Header" Text="RadialController customization sample" VerticalAlignment="Center" Style="{ThemeResource HeaderTextBlockStyle}" Margin="10,0,0,0" /> </StackPanel> <Grid Grid.Row="1" x:Name="RootGrid"> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid x:Name="Grid0" Grid.Row="0" Grid.Column="0"> <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center"> <!-- Slider for rotational input --> <Slider x:Name="RotationSlider0" Width="300" HorizontalAlignment="Left"/> <!-- Switch for button input --> <ToggleSwitch x:Name="ButtonToggle0" HorizontalAlignment="Left"/> </StackPanel> </Grid> <Grid x:Name="Grid1" Grid.Row="0" Grid.Column="1"> <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center"> <!-- Slider for rotational input --> <Slider x:Name="RotationSlider1" Width="300" HorizontalAlignment="Left"/> <!-- Switch for button input --> <ToggleSwitch x:Name="ButtonToggle1" HorizontalAlignment="Left"/> </StackPanel> </Grid> <Grid x:Name="Grid2" Grid.Row="1" Grid.Column="0"> <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center"> <!-- Slider for rotational input --> <Slider x:Name="RotationSlider2" Width="300" HorizontalAlignment="Left"/> <!-- Switch for button input --> <ToggleSwitch x:Name="ButtonToggle2" HorizontalAlignment="Left"/> </StackPanel> </Grid> <Grid x:Name="Grid3" Grid.Row="1" Grid.Column="1"> <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center"> <!-- Slider for rotational input --> <Slider x:Name="RotationSlider3" Width="300" HorizontalAlignment="Left"/> <!-- Switch for button input --> <ToggleSwitch x:Name="ButtonToggle3" HorizontalAlignment="Left"/> </StackPanel> </Grid> </Grid> </Grid>Poniżej przedstawiono kod z procedurami obsługi zdefiniowanymi dla pozycji ekranu Surface Dial.
Slider ActiveSlider; ToggleSwitch ActiveSwitch; Grid ActiveGrid; public MainPage() { ... myController.ScreenContactStarted += MyController_ScreenContactStarted; myController.ScreenContactContinued += MyController_ScreenContactContinued; myController.ScreenContactEnded += MyController_ScreenContactEnded; myController.ControlLost += MyController_ControlLost; //Set initial grid for Surface Dial input. ActiveGrid = Grid0; ActiveSlider = RotationSlider0; ActiveSwitch = ButtonToggle0; } private void MyController_ScreenContactStarted(RadialController sender, RadialControllerScreenContactStartedEventArgs args) { //find grid at contact location, update visuals, selection ActivateGridAtLocation(args.Contact.Position); } private void MyController_ScreenContactContinued(RadialController sender, RadialControllerScreenContactContinuedEventArgs args) { //if a new grid is under contact location, update visuals, selection if (!VisualTreeHelper.FindElementsInHostCoordinates( args.Contact.Position, RootGrid).Contains(ActiveGrid)) { ActiveGrid.Background = new SolidColorBrush(Windows.UI.Colors.White); ActivateGridAtLocation(args.Contact.Position); } } private void MyController_ScreenContactEnded(RadialController sender, object args) { //return grid color to normal when contact leaves screen ActiveGrid.Background = new SolidColorBrush(Windows.UI.Colors.White); } private void MyController_ControlLost(RadialController sender, object args) { //return grid color to normal when focus lost ActiveGrid.Background = new SolidColorBrush(Windows.UI.Colors.White); } private void ActivateGridAtLocation(Point Location) { var elementsAtContactLocation = VisualTreeHelper.FindElementsInHostCoordinates(Location, RootGrid); foreach (UIElement element in elementsAtContactLocation) { if (element as Grid == Grid0) { ActiveSlider = RotationSlider0; ActiveSwitch = ButtonToggle0; ActiveGrid = Grid0; ActiveGrid.Background = new SolidColorBrush( Windows.UI.Colors.LightGoldenrodYellow); return; } else if (element as Grid == Grid1) { ActiveSlider = RotationSlider1; ActiveSwitch = ButtonToggle1; ActiveGrid = Grid1; ActiveGrid.Background = new SolidColorBrush( Windows.UI.Colors.LightGoldenrodYellow); return; } else if (element as Grid == Grid2) { ActiveSlider = RotationSlider2; ActiveSwitch = ButtonToggle2; ActiveGrid = Grid2; ActiveGrid.Background = new SolidColorBrush( Windows.UI.Colors.LightGoldenrodYellow); return; } else if (element as Grid == Grid3) { ActiveSlider = RotationSlider3; ActiveSwitch = ButtonToggle3; ActiveGrid = Grid3; ActiveGrid.Background = new SolidColorBrush( Windows.UI.Colors.LightGoldenrodYellow); return; } } }
Po uruchomieniu aplikacji użyjemy funkcji Surface Dial, aby wchodzić z nią w interakcje. Najpierw umieszczamy urządzenie na ekranie Surface Studio, który aplikacja wykrywa i kojarzy z prawą dolną sekcją (zobacz obraz). Następnie naciskamy i przytrzymujemy nasz Surface Dial, aby otworzyć menu i wybrać nasze narzędzie niestandardowe. Po aktywowaniu niestandardowego narzędzia można dostosować kontrolkę suwaka, obracając Surface Dial, a przełącznik można przełączać, klikając Surface Dial.
Przykładowy interfejs użytkownika aplikacji aktywowany przy użyciu niestandardowego narzędzia Surface Dial
Podsumowanie
Ten temat zawiera omówienie urządzenia wejściowego Surface Dial wraz ze wskazówkami dla deweloperów i środowiska użytkownika dotyczącymi dostosowywania środowiska użytkownika w scenariuszach poza ekranem, a także scenariuszy wyświetlanych na ekranie w przypadku korzystania z urządzenia Surface Studio.
Wyślij pytania, sugestie i opinie na radialcontroller@microsoft.comadres .
Powiązane artykuły
Samouczek: obsługa funkcji Surface Dial (i innych urządzeń kołowych) w aplikacji systemu Windows
Odniesienie do API
- RadialController klasa
- RadialControllerButtonClickedEventArgs - klasa
- klasa RadialControllerConfiguration
- klasa RadialControllerControlAcquiredEventArgs
- klasa RadialControllerMenu
- RadialControllerMenuItem, klasa
- klasa RadialControllerRotationChangedEventArgs
- klasa RadialControllerScreenContact
- RadialControllerScreenContactContinuedEventArgs , klasa
- RadialControllerScreenContactStartedEventArgs , klasa
- RadialControllerMenuKnownIcon enum
- Wyliczenie RadialControllerSystemMenuItemKind
Samples
Przykłady tematów
Dostosowywanie RadialController
Inne przykłady
Samouczek Pierwsze Kroki: Obsługa Surface Dial (i innych urządzeń kołowych) w aplikacjach Windows
Windows developer