MainPage.xaml
Windows Store 2017
<Page
x:Class="Theory2.ExtendedSplash"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Theory2"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="#464646">
<Canvas>
<Image x:Name="extendedSplashImage" Source="Assets/SplashScreen.png"/>
<ProgressRing Name="splashProgressRing" IsActive="True" Width="40" Height="40"
HorizontalAlignment="Center"/>
</Canvas>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Bottom">
<Button x:Name="DismissSplash" Content="Dismiss extended splash screen" HorizontalAlignment="Center" Click="DismissSplash_Click" />
</StackPanel>
</Grid>
</Page>
MainPage.xaml.cs
Windows Store 2017
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; using Windows.Foundation; using Windows.Foundation.Collections; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; using Windows.ApplicationModel.Activation; using Windows.UI.Core; using Theory2.Common; namespace Theory2 { public sealed partial class ExtendedSplash : Page { internal Rect splashImageRect; // Rect to store splash screen image coordinates. private SplashScreen splash; // Variable to hold the splash screen object. internal bool dismissed = false; // Variable to track splash screen dismissal status. internal Frame rootFrame; public ExtendedSplash(SplashScreen splashscreen, bool loadState) { this.InitializeComponent(); Window.Current.SizeChanged += new WindowSizeChangedEventHandler(Current_SizeChanged); this.splash = splashscreen; if (splash != null) { splash.Dismissed += Splash_Dismissed; splashImageRect = splash.ImageLocation; PositionImage(); PositionRing(); } rootFrame = new Frame(); RestoreStateAsync(loadState); } private async void RestoreStateAsync(bool loadState) { if (loadState) { await SuspensionManager.RestoreAsync(); } } private void PositionRing() { splashProgressRing.SetValue(Canvas.LeftProperty, splashImageRect.X + (splashImageRect.Width * 0.5) - (splashProgressRing.Width * 0.5)); splashProgressRing.SetValue(Canvas.TopProperty, (splashImageRect.Y + splashImageRect.Height + splashImageRect.Height * 0.1)); } private void PositionImage() { extendedSplashImage.SetValue(Canvas.LeftProperty, splashImageRect.X); extendedSplashImage.SetValue(Canvas.TopProperty, splashImageRect.Y); extendedSplashImage.Height = splashImageRect.Height; extendedSplashImage.Width = splashImageRect.Width; } private void Splash_Dismissed(SplashScreen sender, object args) { dismissed = true; } private void Current_SizeChanged(object sender, WindowSizeChangedEventArgs e) { if (splash != null) { // Update the coordinates of the splash screen image. splashImageRect = splash.ImageLocation; PositionImage(); // If applicable, include a method for positioning a progress control. PositionRing(); } } private void DismissSplash_Click(object sender, RoutedEventArgs e) { DismissExtendedSplash(); } private void DismissExtendedSplash() { //Chuyển đến màn hình khác rootFrame.Navigate(typeof(MainPage)); Window.Current.Content = rootFrame; } } }
0 nhận xét:
Post a Comment