2015-09-20 107 views
2

我正在嘗試在我的UWP應用程序上爲其創建一個需要SplashScreen圖像座標的擴展SplashScreen。我使用下面的代碼在App.xaml.cs:飛濺屏幕直角座標返回在Win 10 Mobile上的屏幕尺寸

protected override void OnLaunched(LaunchActivatedEventArgs e) 
     { 
      if (e.SplashScreen != null) 
       var SplashLocation = e.SplashScreen.ImageLocation; 
      //Rest of initialization... 
     } 

不過,如果我檢查SplashLocation這是一個RectSplashLocation.HeightSplashLocation.Width收益1280和768這是我的手機屏幕的尺寸。所有其他屬性爲0.

這是Win 10 Mobile [build 10536]中的一個已知錯誤嗎?它工作正常,在桌面Windows 10

+0

閃屏是否覆蓋整個手機屏幕? – LegionMammal978

+0

不,我只是使用不同於設定背景顏色的顏色來檢查該splascreen。飛濺屏幕顯示爲中心圖像。 – Saurabh3321

+0

你有沒有找到任何解決方案,我有同樣的問題。 – KMan

回答

0

作爲一種解決方法,這裏就是我所做的:

Grid創建XAML的Image(不是內Canvas通過MSDN文檔的建議)

<Image Name="ExtSplash" 
      Stretch="Uniform" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" 
      Source="Assets/Splash/SplashScreen.png"/> 
現在

,關鍵是要使其在兩個移動工作(不提供正確Rect座標和桌面(如預期該工作)

所以,在Loaded事件在後面的代碼,我用這個代碼:

if (splash.Top < splash.Left) 
     ExtSplash.Margin = new Thickness(splash.Top); 
    else 
     ExtSplash.Margin = new Thickness(splash.Left); 

其中Splash = e.SplashScreen.ImageLocation從App.xaml.cs.的OnLaunched事件

這是有效的,因爲Splash.TopSplash.Left都返回0的情況下移動。所以應用程序只顯示完全擴展到寬度的splashscreen。在桌面的情況下,圖像可能會有一些左或頂座標,因爲它在桌面上正確報告,我將它們設置爲Margin,以獲得居中對齊的均勻拉伸圖像。

注1:可能會出現閃屏和ExtendedSplash圖像之間可能會出現細微變化的情況。但在我的測試中,它工作正常。即使在稍後的內部版本MS中修復此問題,它也會繼續工作,因此您可以花時間實施標準方法。注意2:如果提供了scale-400 splashscreen圖像,我在邏輯上遇到了一些問題。出於某種原因,WM10可以提供最高分辨率。所以我只提供了100,125,150和200比例圖像(跳過400)

1

其實問題是MSDN文檔上給出的代碼是錯誤的。相反,看看他們在Github上的樣本。你可以在這裏找到它: Splash Screen Sample

注意MSDN文檔和樣品之間的差異:

  1. ExtendedSplash不會擴展頁
  2. 他們使用比例因子電話
  3. 的根元素XAML是Grid而不是頁面。

我跟着他們的樣本(經過數小時的疑惑),它都運行良好。我希望他們更新他們的文檔以反映正確的事情。

+0

很好找。 您是否嘗試過最新移動版本上的MSDN版本?由於我的解決方法仍然有效,因此我沒有嘗試過最近的構建。 如果它仍然不起作用,那麼'ScaleFactor'必須是原因。我不明白'不從頁面擴展'應該如何改變。 – Saurabh3321

+0

我沒有嘗試過最新版本,它仍然無法正常工作。不是從Page擴展工作將ExtendedSpash作爲內容添加到RootFrame,從而允許您控制statusBar的顏色 – Saurabh

+0

您可以分享您的代碼嗎? –

0

我最終放棄了SplashScreen.ImageLocation的方法。在編寫本文時,Microsoft tutorial在手機上不起作用,而the sample是黑客。相反,我用了一個簡單的佈局喜歡本作的擴展啓動畫面:

<Grid> 
    <Image x:Name="splashScreenImage" Source="Assets/SplashScreen.png" MaxWidth="620" MaxHeight="300"/> 
    <!-- plus some other control --> 
</Grid> 

神奇的是使用MaxWidth/MaxHeight

在移動設備上,由於狀態欄和導航欄的原因,圖像的垂直位置會略有不同(但我認爲這是因爲狀態欄和導航欄),但在其他情況下,包括尺寸在內是正確的。在桌面上,圖像看起來像初始飛濺一樣精確定位和大小。

+0

你可以發佈你的'PositionImage()'嗎? –

+0

@ravikumar我再也不用這個項目了,對不起。 – holmis83