Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Surface Dial s Surface Studiem a perem (k dispozici k nákupu v Microsoft Store).
Přehled
Zařízení s kolečkem Windows, jako je Surface Dial, jsou novou kategorií vstupních zařízení, která umožňují řadu poutavých a jedinečných prostředí interakce uživatelů pro aplikace pro Windows a Windows.
Důležité
V tomto tématu se konkrétně odkazujeme na interakce zařízení Surface Dial, ale informace platí pro všechna zařízení s otočným ovládacím prvkem Windows.
Zařízení Surface Dial, které je založeno na akci otáčení (nebo gestu), je určeno jako sekundární multimodální vstupní zařízení, které doplňuje vstup z primárního zařízení. Ve většině případů je zařízení ovládáno nedominantní rukou uživatele, zatímco dominantní rukou provádí úkol (například psaní perem). Není určen pro přesný vstup ukazatele (například dotykové ovládání, pero nebo myš).
Zařízení Surface Dial podporuje také akci stisknutí a podržení i akci kliknutí . Stisknutí a podržení má jednu funkci: zobrazí nabídku příkazů. Pokud je nabídka aktivní, otáčení a kliknutí vstupu jsou zpracovávány nabídkou. V opačném případě se vstup předá vaší aplikaci ke zpracování.
Stejně jako u všech vstupních zařízení s Windows můžete přizpůsobit a přizpůsobit prostředí interakce zařízení Surface Dial tak, aby vyhovovalo funkcím vašich aplikací.
Návod
Zařízení Surface Dial a nový Surface Studio se používají společně a nabízí ještě charakteristické uživatelské prostředí.
Kromě výchozího prostředí pro stisknutí a podržení v nabídce lze Surface Dial umístit také přímo na obrazovce zařízení Surface Studio. Tím se povolí speciální nabídka na obrazovce.
Když systém zjistí umístění kontaktu i hranice zařízení Surface Dial, použije tyto informace ke zpracování vizuálního zakrytí zařízením a zobrazení větší verze nabídky, která obklopuje vnější část otočného zařízení Dial. Vaše aplikace může stejnou informaci také použít k přizpůsobení uživatelského rozhraní pro přítomnost zařízení a jeho předpokládané využití, jako je umístění ruky a paže uživatele.
Nabídka zařízení Surface Dial mimo obrazovku
Nabídka na obrazovce pro Surface Dial
Systémová integrace
Zařízení Surface Dial je úzce integrované se systémem Windows a podporuje sadu integrovaných nástrojů v rámci nabídky: systémová hlasitost, posouvání, přiblížení/oddálení a vrácení zpět/znovu.
Tato kolekce integrovaných nástrojů se přizpůsobí aktuálnímu kontextu systému, aby zahrnovala:
- Nástroj pro jas systému, když je uživatel na ploše Windows
- Nástroj pro předchozí/další stopu během přehrávání médií
Kromě podpory této obecné platformy je surface Dial také úzce integrovaný s ovládacími prvky platformy Windows Ink (InkCanvas a InkToolbar).
Surface Dial se Surface Pen
Při použití se zařízením Surface Dial tyto ovládací prvky umožňují další funkce pro úpravy atributů rukopisu a ovládání vzorníku pravítka na panelu nástrojů rukopisu.
Když otevřete nabídku Surface Dial v aplikaci rukopisu, která používá panel nástrojů rukopisu, nabídka teď obsahuje nástroje pro ovládání typu pera a tloušťky štětce. Když je pravítko povoleno, přidá se do nabídky odpovídající nástroj, který umožňuje zařízení řídit polohu a úhel pravítka.
Nabídka Surface Dial s nástrojem pro výběr pera pro panel nástrojů Windows Ink
Nabídka Surface Dial s nástrojem pro nastavení velikosti tahu v panelu nástrojů Windows Ink
Nabídka Surface Dial s nástrojem pravítka pro panel nástrojů Windows Ink
Přizpůsobení uživatele
Uživatelé si můžou přizpůsobit některé aspekty svého zážitku při používání Dial prostřednictvím Nastavení Windows – Zařízení – Kolečko, včetně výchozích nástrojů, kmitání (nebo haptické zpětné vazby) a ruky psaní (či dominantní).
Při přizpůsobení uživatelského prostředí zařízení Surface Dial byste měli vždy zajistit, aby byla určitá funkce nebo chování dostupné a povolené uživatelem.
Vlastní nástroje
Zde probereme pokyny pro uživatelské prostředí i vývojáře pro přizpůsobení nástrojů vystavených v nabídce Surface Dial.
Pokyny pro uživatelské rozhraní pro vlastní nástroje
Ujistěte se, že vaše nástroje odpovídají aktuálnímu kontextu . Když dáte jasně a intuitivně přehled o tom, co nástroj dělá a jak funguje interakce zařízení Surface Dial, pomůžete uživatelům rychle se učit a soustředit se na svůj úkol.
Co nejvíce minimalizovat počet nástrojů aplikací
Nabídka Surface Dial má místo pro sedm položek. Pokud je osm nebo více položek, musí uživatel otočit kolečkem, aby zjistil, které nástroje jsou k dispozici v nabídce přetečení, což ztěžuje navigaci a ztěžuje nalezení a výběr nástrojů.
Doporučujeme pro vaši aplikaci nebo kontext aplikace poskytnout jeden vlastní nástroj. Díky tomu můžete tento nástroj nastavit na základě toho, co uživatel dělá, aniž by musel aktivovat nabídku Surface Dial a vybrat nástroj.
Dynamická aktualizace kolekce nástrojů
Vzhledem k tomu, že položky nabídky Surface Dial nepodporují zakázaný stav, měli byste dynamicky přidávat a odebírat nástroje (včetně integrovaných, výchozích nástrojů) na základě kontextu uživatele (aktuálního zobrazení nebo prioritního okna). Pokud nástroj není relevantní pro aktuální aktivitu nebo je redundantní, odeberte ho.
Důležité
Když do nabídky přidáte položku, ujistěte se, že položka ještě neexistuje.
Neodstraňujte integrovaný nástroj pro nastavení systémové hlasitosti
Řízení hlasitosti obvykle vyžaduje uživatel. Při používání aplikace můžou naslouchat hudbě, takže hlasitost a další nástroje pro sledování by měly být vždy přístupné z nabídky Surface Dial. (Při přehrávání médií se do nabídky automaticky přidá další nástroj pro sledování.)
Buďte konzistentní v organizaci nabídek
To pomáhá uživatelům zjišťovat a učit se, jaké nástroje jsou při používání aplikace k dispozici, a pomáhá zlepšit jejich efektivitu při přepínání nástrojů.
Zajištění vysoce kvalitních ikon konzistentních s integrovanými ikonami
Ikony mohou vyjádřit profesionalitu a dokonalost a inspirovat důvěru u uživatelů.
- Poskytnutí vysoce kvalitního obrázku PNG 64 x 64 pixelů (44 x 44 je nejmenší podporovaná verze)
- Ujistěte se, že pozadí je průhledné.
- Ikona by měla vyplnit většinu obrázku.
- Bílá ikona by měla mít černou obrys, aby byla viditelná v režimu vysokého kontrastu.
Ikona s alfa pozadím
Ikona zobrazená v kolečkové nabídce s výchozím motivem
Ikona zobrazená v kolečkové nabídce s motivem High Contrast White
Použití výstižných a popisných názvů
Název nástroje se zobrazí v nabídce nástrojů spolu s ikonou nástroje a používá se také čtečkami obrazovky.
- Názvy by měly být dostatečně krátké, aby se vešly do centrálního kruhu kolečka nabídky.
- Názvy by měly jasně identifikovat primární akci (lze předpokládat doplňkovou akci):
- Posuvník označuje efekt obou směrů otáčení.
- Vrácení zpět určuje primární akci, ale opakování (doplňkovou akci) si uživatel může snadno odvodit a objevit.
Pokyny pro vývojáře
Prostředí Surface Dial můžete přizpůsobit tak, aby doplňovaly funkce v aplikacích prostřednictvím komplexní sady rozhraní API prostředí Windows Runtime.
Jak jsme už zmínili, výchozí nabídka Surface Dial je předem naplněná sadou integrovaných nástrojů, které pokrývají širokou škálu základních systémových funkcí (hlasitost systému, jas systému, posun, přiblížení, zpět a ovládání médií, když systém detekuje probíhající přehrávání zvuku nebo videa). Tyto výchozí nástroje ale nemusí poskytovat funkce vyžadované vaší aplikací.
V následujících částech popisujeme, jak do nabídky Surface Dial přidat vlastní nástroj a určit, které předdefinované nástroje jsou vystavené.
Stáhněte si robustnější verzi této ukázky z přizpůsobení RadialController.
Přidání vlastního nástroje
V tomto příkladu přidáme základní vlastní nástroj, který předává vstupní data z událostí rotace i kliknutí na některé ovládací prvky uživatelského rozhraní XAML.
Nejprve deklarujeme uživatelské rozhraní (jenom posuvník a přepínací tlačítko) v XAML.
Uživatelské rozhraní ukázkové aplikace<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>Potom v kódu přidáme vlastní nástroj do nabídky Surface Dial a deklarujeme vstupní obslužné rutiny RadialController.
Získáme odkaz na objekt RadialController pro Surface Dial (myController) voláním CreateForCurrentView.
Potom vytvoříme instanci RadialControllerMenuItem (myItem) voláním RadialControllerMenuItem.CreateFromIcon.
Dále tuto položku připojíme k kolekci položek nabídky.
Deklarujeme vstupní obslužné rutiny událostí (ButtonClicked a RotationChanged) pro objekt RadialController .
Nakonec definujeme obslužné rutiny událostí.
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; } }
Když aplikaci spustíme, použijeme k interakci zařízení Surface Dial. Nejprve stiskneme a podržíme, abychom otevřeli nabídku, a vybereme náš vlastní nástroj. Po aktivaci vlastního nástroje lze ovládací prvek posuvníku upravit otočením Dial a přepínač lze přepnout kliknutím na Dial.
Uživatelské rozhraní ukázkové aplikace aktivované pomocí vlastního nástroje Surface Dial
Specifikujte vestavěné nástroje
Pomocí třídy RadialControllerConfiguration můžete přizpůsobit kolekci předdefinovaných položek nabídky pro vaši aplikaci.
Pokud například vaše aplikace nemá žádné oblasti posouvání nebo přiblížení a nevyžaduje funkci zpět nebo znovu, můžete tyto nástroje z nabídky odebrat. Otevře se místo v nabídce pro přidání vlastních nástrojů pro vaši aplikaci.
Důležité
Nabídka Surface Dial musí obsahovat alespoň jednu položku. Pokud se před přidáním některého z vlastních nástrojů odeberou všechny výchozí nástroje, obnoví se výchozí nástroje a nástroj se připojí k výchozí kolekci.
Podle pokynů k návrhu nedoporučujeme odebírat nástroje pro ovládání médií (hlasitost a předchozí/další skladba), protože uživatelé často přehrávají hudbu na pozadí, zatímco provádějí jiné úlohy.
Tady si ukážeme, jak nakonfigurovat nabídku Surface Dial tak, aby obsahovala jenom ovládací prvky médií pro hlasitost a další/předchozí skladbu.
public MainPage()
{
...
//Remove a subset of the default system tools
RadialControllerConfiguration myConfiguration =
RadialControllerConfiguration.GetForCurrentView();
myConfiguration.SetDefaultMenuItems(new[]
{
RadialControllerSystemMenuItemKind.Volume,
RadialControllerSystemMenuItemKind.NextPreviousTrack
});
}
Vlastní interakce
Jak už bylo zmíněno, Surface Dial podporuje tři gesta (stisknutí a podržení, otočení, kliknutí) s odpovídajícími výchozími interakcemi.
Zajistěte, aby všechny vlastní interakce na základě těchto gest dávaly smysl pro vybranou akci nebo nástroj.
Poznámka:
Zkušenost s interakcí závisí na stavu menu Surface Dial. Pokud je nabídka aktivní, zpracuje vstup; jinak vaše aplikace funguje.
Stiskněte a podržte
Toto gesto se aktivuje a zobrazí nabídku Surface Dial. K tomuto gestu není přidružená žádná funkce aplikace.
Ve výchozím nastavení se nabídka zobrazí uprostřed obrazovky uživatele. Uživatel si ho ale může vzít a přesunout kamkoli si ho zvolí.
Poznámka:
Po umístění zařízení Surface Dial na obrazovku zařízení Surface Studio se nabídka zacentruje na místo na obrazovce zařízení Surface Studio.
Otáčet
Surface Dial je primárně navržený tak, aby podporoval otáčení pro interakce, které zahrnují hladké a přírůstkové úpravy analogových hodnot nebo ovládacích prvků.
Zařízení je možné otočit jak po směru hodinových ručiček, tak i proti směru hodinových ručiček a také poskytnout haptickou zpětnou vazbu, která označuje diskrétní vzdálenosti.
Poznámka:
Haptická zpětná vazba může být zakázána uživatelem na stránce Nastavení Windows -> Zařízení -> Kolo .
Pokyny pro uživatelské rozhraní pro vlastní interakce
Nástroje s nepřetržitou nebo vysokou rotační citlivostí by měly zakázat hmatovou zpětnou vazbu.
Haptická zpětná vazba odpovídá rotační citlivosti aktivního nástroje. Doporučujeme zakázat haptickou zpětnou vazbu pro nástroje s nepřetržitou nebo vysokou rotační citlivostí, protože uživatelské prostředí může být nepříjemné.
Dominantní ruka by neměla mít vliv na interakce založené na otáčení
Zařízení Surface Dial nedokáže zjistit, kterou ruku používáte, ale uživatel může nastavit psaní (nebo dominantní ruku) v nastavení Windows –> Zařízení –> Pero a Windows Ink.
Jazyk a regionální nastavení by se měly zvážit pro všechny interakce s rotací.
Maximalizujte spokojenost zákazníků přizpůsobením interakcí lokálním nastavením a rozložení zprava doleva.
Integrované nástroje a příkazy v nabídce Kružnici se řídí těmito pokyny pro interakce založené na otáčení:
Vlevo
Up
Out
Správně
Dolů
In
| Koncepční směr | Mapování na Surface Dial | Otočení po směru hodinových ručiček | Otočení proti směru hodinových ručiček |
|---|---|---|---|
| Horizontální | Mapování vlevo a vpravo na základě vrchní strany zařízení Surface Dial | Správně | Vlevo |
| Vertikální | Mapování nahoru a dolů na základě levé strany zařízení Surface Dial | Dolů | Up |
| Z-osa | V (nebo v blízkosti) namapované nahoru nebo doprava Namapováno (nebo dále) na dolů/levý směr |
In | Out |
Pokyny pro vývojáře
Když uživatel otočí zařízením, události RadialController.RotationChanged se aktivují na základě změny (RadialControllerRotationChangedEventArgs.RotationDeltaInDegrees) vzhledem ke směru otáčení. Citlivost (nebo rozlišení) dat lze nastavit pomocí RadialController.RotationResolutionInDegrees vlastnost.
Poznámka:
Ve výchozím nastavení se událost rotačního vstupu doručí do objektu RadialController pouze v případě, že se zařízení otočí minimálně o 10 stupňů. Každá vstupní událost způsobí, že zařízení vibruje.
Obecně doporučujeme zakázat haptickou zpětnou vazbu, když je rozlišení otočení nastaveno na méně než 5 stupňů. To poskytuje plynulejší prostředí pro nepřetržité interakce.
Pro vlastní nástroje můžete povolit a zakázat haptickou zpětnou vazbu nastavením vlastnosti RadialController.UseAutomaticHapticFeedback .
Poznámka:
Nelze přepsat haptické chování systémových nástrojů, jako je řízení hlasitosti. U těchto nástrojů může hmatová zpětná vazba zakázat jenom uživatel na stránce nastavení kola.
Tady je příklad přizpůsobení rozlišení dat rotace a povolení nebo zakázání haptické zpětné vazby.
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;
}
}
Klikněte
Kliknutí na zařízení Surface Dial se podobá kliknutí na levé tlačítko myši (stav otáčení zařízení nemá na tuto akci žádný vliv).
Doprovodné materiály k uživatelskému prostředí
Nenamapujte akci nebo příkaz na toto gesto, pokud uživatel nemůže snadno provést obnovení z výsledku.
Všechny akce provedené vaší aplikací na základě uživatele, který kliká na Surface Dial, musí být vratné. Vždy umožněte uživateli snadno procházet předchozí stavy aplikace a obnovit jejich stav.
Binární operace, jako je ztlumení/zrušení ztlumení nebo zobrazení/skrytí, poskytují dobré uživatelské prostředí kliknutím.
Modální nástroje by neměly být povoleny nebo zakázány kliknutím na zařízení Surface Dial.
Některé režimy aplikací nebo nástrojů mohou kolidovat s, nebo zakázat, interakce, které závisí na rotaci. Nástroje, jako například pravítko na panelu nástrojů Windows Ink, by se měly zapínat nebo vypínat pomocí jiných přístupů v uživatelském rozhraní (panel nástrojů Rukopis poskytuje integrovaný ovládací prvek ToggleButton).
U modálních nástrojů namapujte aktivní položku nabídky Surface Dial na cílový nástroj nebo na dříve vybranou položku nabídky.
Pokyny pro vývojáře
Po kliknutí na Surface Dial se aktivuje událost RadialController.ButtonClicked. RadialControllerButtonClickedEventArgs obsahují vlastnost Contact, která obsahuje umístění a ohraničující oblast kontaktu Surface Dial na obrazovce Surface Studio. Pokud zařízení Surface Dial není v kontaktu s obrazovkou, má tato vlastnost hodnotu null.
Na obrazovce
Jak je popsáno výše, zařízení Surface Dial lze použít ve spojení se zařízením Surface Studio k zobrazení nabídky Surface Dial ve speciálním režimu na obrazovce.
V tomto režimu můžete ještě více integrovat a přizpůsobit zážitky z interakce s otočným ovladačem ve vašich aplikacích. Mezi příklady jedinečných prostředí, která je možné použít jenom u zařízení Surface Dial a Surface Studio, patří:
- Zobrazení kontextových nástrojů (například palety barev) na základě pozice zařízení Surface Dial, což usnadňuje jejich vyhledání a použití.
- Nastavení aktivního nástroje na základě uživatelského rozhraní, na které je zařízení Surface Dial umístěné
- Zvětšení oblasti obrazovky na základě umístění zařízení Surface Dial
- Jedinečné interakce her na základě polohy na obrazovce
Pokyny pro uživatelské rozhraní pro interakce na obrazovce
Aplikace by měly reagovat při zjištění zařízení Surface Dial na obrazovce
Vizuální zpětná vazba pomáhá uživatelům indikovat, že vaše aplikace zjistila zařízení na obrazovce zařízení Surface Studio.
Úprava uživatelského rozhraní souvisejícího se zařízením Surface Dial na základě umístění zařízení
Zařízení (a tělo uživatele) může zakrývat kritické prvky uživatelského rozhraní podle toho, kam ho uživatel umístí.
Úprava uživatelského rozhraní souvisejícího se zařízením Surface Dial na základě interakce uživatele
Kromě hardwarového překrytí může uživatel při používání zařízení zakrýt část obrazovky rukou a paží.
Zakrývaná oblast závisí na tom, kterou rukou se zařízení používá. Vzhledem k tomu, že je zařízení navrženo pro používání zejména s nedominantní rukou, by se uživatelské rozhraní spojené se Surface Dial mělo upravit pro opačnou ruku, kterou určí uživatel (nastavení Windows nastavení > Zařízení > Pero a Windows Ink > Volba, kterou rukou píšete).
Interakce by měly místo pohybu reagovat na pozici zařízení Surface Dial.
Noha zařízení je navržená tak, aby se místo klouzání přichytává na obrazovku, protože se nejedná o přesné polohovací zařízení. Proto očekáváme, že pro uživatele bude běžnější Surface Dial zvednout a umístit, než ho táhnout po obrazovce.
Určení záměru uživatele pomocí pozice obrazovky
Nastavení aktivního nástroje na základě kontextu uživatelského rozhraní, jako je například blízkost ovládacího prvku, plátna nebo okna, může zlepšit uživatelské prostředí snížením kroků potřebných k provedení úkolu.
Pokyny pro vývojáře
Když se zařízení Surface Dial umístí na plochu digitizátoru zařízení Surface Studio, aktivuje se událost RadialController.ScreenContactStarted a kontaktní informace (RadialControllerScreenContactStartedEventArgs.Contact) se vaší aplikaci poskytne.
Podobně platí, že pokud kliknete na Surface Dial při kontaktu s povrchem digitizátoru zařízení Surface Studio, aktivuje se událost RadialController.ButtonClicked a vaší aplikaci se poskytnou kontaktní informace (RadialControllerButtonClickedEventArgs.Contact).
Kontaktní informace (RadialControllerScreenContact) zahrnují souřadnici X/Y středu zařízení Surface Dial v souřadnicovém prostoru aplikace (RadialControllerScreenContact.Position) a také ohraničující obdélník (RadialControllerScreenContact.Bounds) v pixelech nezávislých na zařízení (DIPs). Tyto informace jsou velmi užitečné pro poskytnutí kontextu aktivního nástroje a poskytnutí vizuální zpětné vazby související se zařízením uživateli.
V následujícím příkladu jsme vytvořili základní aplikaci se čtyřmi různými oddíly, z nichž každá obsahuje jeden posuvník a jeden přepínač. Pak pomocí pozice na obrazovce zařízení Surface Dial určíme, která sada posuvníků a přepínačů se řídí zařízením Surface Dial.
Nejprve deklarujeme uživatelské rozhraní (čtyři oddíly, každý s posuvníkem a přepínacím tlačítkem) v XAML.
Uživatelské rozhraní ukázkové aplikace<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>Tady je kód s obslužnými rutinami definovanými pro pozici obrazovky 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; } } }
Když aplikaci spustíme, použijeme k interakci zařízení Surface Dial. Nejprve umístíme zařízení na obrazovku Surface Studio, kterou aplikace rozpozná a přidruží k pravé dolní části (viz obrázek). Stisknutím a podržením zařízení Surface Dial otevřete nabídku a vyberte náš vlastní nástroj. Po aktivaci vlastního nástroje lze ovládací prvek posuvníku upravit otočením zařízení Surface Dial a přepínač lze aktivovat kliknutím na zařízení Surface Dial.
Uživatelské rozhraní ukázkové aplikace aktivované pomocí vlastního nástroje Surface Dial
Shrnutí
Toto téma obsahuje přehled vstupního zařízení Surface Dial s uživatelským rozhraním a pokyny pro vývojáře, jak přizpůsobit uživatelské prostředí pro scénáře mimo obrazovku a scénáře na obrazovce při použití se zařízením Surface Studio.
Posílejte prosím své dotazy, návrhy a názory na radialcontroller@microsoft.comadresu .
Související články
Kurz: Podpora zařízení Surface Dial (a dalších zařízení kol) v aplikaci pro Windows
Referenční informace k rozhraní API
- RadialController třída
- RadialControllerButtonClickedEventArgs – třída
- RadialControllerConfiguration – třída
- Třída RadialControllerControlAcquiredEventArgs
- RadialControllerMenu: třída
- RadialControllerMenuItem – třída
- třída RadialControllerRotationChangedEventArgs
- RadialControllerScreenContact – třída
- RadialControllerScreenContactContinuedEventArgs – třída
- RadialControllerScreenContactStartedEventArgs – třída
- RadialControllerMenuKnownIcon – výčet
- RadialControllerSystemMenuItemKind enum
Samples
Ukázky témat
Přizpůsobení radialControlleru
Další ukázky
Úvodní návod: Podpora zařízení Surface Dial (a dalších kolečkových zařízení) v aplikaci pro Windows
Windows developer