歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Windows Phone 8 適應多屏分辨率

Windows Phone 8 適應多屏分辨率

日期:2017/3/1 9:53:46   编辑:Linux編程

Windows Phone 8 比較 windows phone 7 來說有很多功能及性能上的提升例如支持多核 CUP、支持SD卡、多種分辨率、 顯然WP7 WVGA - 480x800 的已經不能完全滿足所用戶的需求,很多用戶喜歡大屏幕高分辨的手機,隨著大屏手機的逐漸推出 WP8 也是支持大分辨率的屏幕【WXGA - 768x1280 和 720P - 720x1280】

之前跟大家提起過關於應用設配WP8多種分辨率的事情,但是可能還是有些同學不是很明白如何判斷當前手機的分辨率以及如何讓應用自適應當前的手機分辨率 今天我給大家詳細的介紹一下。

升級到WP8必需知道的13個特性 系列文章目錄地址:http://www.linuxidc.com/Linux/2013-08/89003.htm

Windows phone 8 支持的屏幕分辨率有三種如下:

其中我們可以清楚的看到 WVGA 和 WXGA的屏幕橫寬比例都是 15:9 的,只有在720P 的情況下是 16:9 的這點要提醒大家有些應用或許就要對720P的情況進行特殊處理下 例如一些圖片或者視頻類的應用。

另外相信很多同學想實現全屏或者更改系統時間電量圖標顏色 請使用 SystemTray 進行設置:

void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            ProgressIndicator progress = new ProgressIndicator

            {
                IsVisible = true,
                IsIndeterminate = true,
                Text = "Downloading details..."
            };
            SystemTray.SetProgressIndicator(this, progress);
            SystemTray.BackgroundColor = System.Windows.Media.Colors.Red;
            SystemTray.ForegroundColor = System.Windows.Media.Colors.Blue;
            //SystemTray.IsVisible = false;
        }

通過上面的方法就可以隱藏狀態條 或 根據應用的樣式來調整 Tray的樣式,個人感覺比較實用在這裡給大家介紹一下。

當然今天的重點還是多分辨率的支持 以下是實現一個 ResolutionHeper class 判斷當前屏幕分辨率的方法:

public enum Resolutions { WVGA, WXGA, HD720p };

public static class ResolutionHelper
{
   private static bool IsWvga
   {
      get
      {
         return App.Current.Host.Content.ScaleFactor == 100;
      }
   }

   private static bool IsWxga
   {
      get 
      { 
         return App.Current.Host.Content.ScaleFactor == 160; 
      }
   }
     
   private static bool Is720p
   {
      get 
      { 
         return App.Current.Host.Content.ScaleFactor == 150; 
      }
   }

   public static Resolutions CurrentResolution
   {
      get
      {
         if (IsWvga) return Resolutions.WVGA;
         else if (IsWxga) return Resolutions.WXGA;
         else if (Is720p) return Resolutions.HD720p;
         else throw new InvalidOperationException("Unknown resolution");
      }
   }
}

上面這段代碼是使用 System.Windows.Interop 中的

public int ScaleFactor { get; }

The scale factor for the current application content area.

通過屏幕比例來判斷屏幕分辨率。

另外在不同分辨率的手機上需要使用相應的SplashScreenImage.jpg文件來完美適應屏幕的大小,否則系統將會自動縮放。

請參考MSDN:http://msdn.microsoft.com/en-us/library/windows/apps/ff769511(v=vs.105).aspx

另外XAML控件 需要自適應不同分辨率的手機 在設置控件的寬高時不使用絕對高度和寬度 使用自動“*”和“Auto” 以及 “80*” 這樣的比例值來進行設置。

MSDN有一個DEMO CODE做的比較清楚感興趣的同學可以拷貝下來自己試試很有意思:http://msdn.microsoft.com/en-us/library/windows/apps/jj206974(v=vs.105).aspx

Copyright © Linux教程網 All Rights Reserved